diff --git a/.claude/commands/sp.adr.md b/.claude/commands/sp.adr.md new file mode 100644 index 0000000000000000000000000000000000000000..2faac85a7d4e5ad9aa3ba38438d291b28d9ec52b --- /dev/null +++ b/.claude/commands/sp.adr.md @@ -0,0 +1,207 @@ +--- +description: Review planning artifacts for architecturally significant decisions and create ADRs. +--- + +# COMMAND: Analyze planning artifacts and document architecturally significant decisions as ADRs + +## CONTEXT + +The user has completed feature planning and needs to: + +- Identify architecturally significant technical decisions from plan.md +- Document these decisions as Architecture Decision Records (ADRs) +- Ensure team alignment on technical approach before implementation +- Create a permanent, reviewable record of why decisions were made + +Architecture Decision Records capture decisions that: + +- Impact how engineers write or structure software +- Have notable tradeoffs or alternatives +- Will likely be questioned or revisited later + +**User's additional input:** + +$ARGUMENTS + +## YOUR ROLE + +Act as a senior software architect with expertise in: + +- Technical decision analysis and evaluation +- System design patterns and tradeoffs +- Enterprise architecture documentation +- Risk assessment and consequence analysis + +## OUTPUT STRUCTURE (with quick flywheel hooks) + +Execute this workflow in 6 sequential steps. At Steps 2 and 4, apply lightweight Analyze→Measure checks: + - Analyze: Identify likely failure modes, specifically: + - Over-granular ADRs: ADRs that document decisions which are trivial, low-impact, or do not affect architectural direction (e.g., naming conventions, minor refactorings). + - Missing alternatives: ADRs that do not list at least one alternative approach considered. + - Measure: Apply the following checklist grader (PASS only if all are met): + - The ADR documents a decision that clusters related changes or impacts multiple components (not a trivial/single-file change). + - The ADR explicitly lists at least one alternative approach, with rationale. + - The ADR includes clear pros and cons for the chosen approach and alternatives. + - The ADR is concise but sufficiently detailed for future reference. + +## Step 1: Load Planning Context + +Run `.specify/scripts/bash/check-prerequisites.sh --json` from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS. + +Derive absolute paths: + +- PLAN = FEATURE_DIR/plan.md (REQUIRED - abort if missing with "Run /sp.plan first") +- RESEARCH = FEATURE_DIR/research.md (if exists) +- DATA_MODEL = FEATURE_DIR/data-model.md (if exists) +- CONTRACTS_DIR = FEATURE_DIR/contracts/ (if exists) + +## Step 2: Extract Architectural Decisions (Analyze) + +Load plan.md and available artifacts. Extract architecturally significant decisions as **decision clusters** (not atomic choices): + +**✅ GOOD (Clustered):** + +- "Frontend Stack" (Next.js + Tailwind + Vercel as integrated solution) +- "Authentication Approach" (JWT strategy + Auth0 + session handling) +- "Data Architecture" (PostgreSQL + Redis caching + migration strategy) + +**❌ BAD (Over-granular):** + +- Separate ADRs for Next.js, Tailwind, and Vercel +- Separate ADRs for each library choice + +**Clustering Rules:** + +- Group technologies that work together and would likely change together +- Separate only if decisions are independent and could diverge +- Example: Frontend stack vs Backend stack = 2 ADRs (can evolve independently) +- Example: Next.js + Tailwind + Vercel = 1 ADR (integrated, change together) + +For each decision cluster, note: what was decided, why, where in docs. + +## Step 3: Check Existing ADRs + +Scan `history/adr/` directory. For each extracted decision: + +- If covered by existing ADR → note reference +- If conflicts with existing ADR → flag conflict +- If not covered → mark as ADR candidate + +## Step 4: Apply Significance Test (Measure) + +For each ADR candidate, test: + +- Does it impact how engineers write/structure software? +- Are there notable tradeoffs or alternatives? +- Will it be questioned or revisited later? + +Only proceed with ADRs that pass ALL three tests. + +## Step 5: Create ADRs (Improve) + +For each qualifying decision cluster: + +1. Generate concise title reflecting the cluster (e.g., "Frontend Technology Stack" not "Use Next.js") +2. Run `create-adr.sh ""` from repo root +3. Parse JSON response for `adr_path` and `adr_id` +4. Read created file (contains template with {{PLACEHOLDERS}}) +5. Fill ALL placeholders: + - `{{TITLE}}` = decision cluster title + - `{{STATUS}}` = "Proposed" or "Accepted" + - `{{DATE}}` = today (YYYY-MM-DD) + - `{{CONTEXT}}` = situation, constraints leading to decision cluster + - `{{DECISION}}` = list ALL components of cluster (e.g., "Framework: Next.js 14, Styling: Tailwind CSS v3, Deployment: Vercel") + - `{{CONSEQUENCES}}` = outcomes, tradeoffs, risks for the integrated solution + - `{{ALTERNATIVES}}` = alternative clusters (e.g., "Remix + styled-components + Cloudflare") + - `{{REFERENCES}}` = plan.md, research.md, data-model.md +6. Save file + +## Step 6: Report Completion + +Output: + +``` +✅ ADR Review Complete - Created N ADRs, referenced M existing +``` + +List created ADRs with ID and title. + +If conflicts detected: + +``` +⚠️ Conflicts with existing ADRs [IDs]. Review and update outdated decisions or revise plan. +``` + +If create-adr.sh fails: Report script error and skip that ADR. + +## FORMATTING REQUIREMENTS + +Present results in this exact structure: + +``` +✅ ADR Review Complete +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +📋 Created ADRs: {count} + - ADR-{id}: {title} + - ADR-{id}: {title} + +📚 Referenced Existing: {count} + - ADR-{id}: {title} + +⚠️ Conflicts Detected: {count} + - ADR-{id}: {conflict description} + +Next Steps: +→ Resolve conflicts before proceeding to /sp.tasks +→ Review created ADRs with team +→ Update plan.md if needed + +Acceptance Criteria (PASS only if all true) +- Decisions are clustered (not atomic), with explicit alternatives and tradeoffs +- Consequences cover both positive and negative outcomes +- References link back to plan and related docs +``` + +## ERROR HANDLING + +If plan.md missing: + +- Display: "❌ Error: plan.md not found. Run /sp.plan first to generate planning artifacts." +- Exit gracefully without creating any ADRs + +If create-adr.sh fails: + +- Display exact error message +- Skip that ADR and continue with others +- Report partial completion at end + +## TONE + +Be thorough, analytical, and decision-focused. Emphasize the "why" behind each decision and its long-term implications. + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.analyze.md b/.claude/commands/sp.analyze.md new file mode 100644 index 0000000000000000000000000000000000000000..551d67f6cf7deb80cf7dd4820222a7e37e13b5f9 --- /dev/null +++ b/.claude/commands/sp.analyze.md @@ -0,0 +1,210 @@ +--- +description: Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation. +--- + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Goal + +Identify inconsistencies, duplications, ambiguities, and underspecified items across the three core artifacts (`spec.md`, `plan.md`, `tasks.md`) before implementation. This command MUST run only after `/sp.tasks` has successfully produced a complete `tasks.md`. + +## Operating Constraints + +**STRICTLY READ-ONLY**: Do **not** modify any files. Output a structured analysis report. Offer an optional remediation plan (user must explicitly approve before any follow-up editing commands would be invoked manually). + +**Constitution Authority**: The project constitution (`.specify/memory/constitution.md`) is **non-negotiable** within this analysis scope. Constitution conflicts are automatically CRITICAL and require adjustment of the spec, plan, or tasks—not dilution, reinterpretation, or silent ignoring of the principle. If a principle itself needs to change, that must occur in a separate, explicit constitution update outside `/sp.analyze`. + +## Execution Steps + +### 1. Initialize Analysis Context + +Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` once from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive absolute paths: + +- SPEC = FEATURE_DIR/spec.md +- PLAN = FEATURE_DIR/plan.md +- TASKS = FEATURE_DIR/tasks.md + +Abort with an error message if any required file is missing (instruct the user to run missing prerequisite command). +For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). + +### 2. Load Artifacts (Progressive Disclosure) + +Load only the minimal necessary context from each artifact: + +**From spec.md:** + +- Overview/Context +- Functional Requirements +- Non-Functional Requirements +- User Stories +- Edge Cases (if present) + +**From plan.md:** + +- Architecture/stack choices +- Data Model references +- Phases +- Technical constraints + +**From tasks.md:** + +- Task IDs +- Descriptions +- Phase grouping +- Parallel markers [P] +- Referenced file paths + +**From constitution:** + +- Load `.specify/memory/constitution.md` for principle validation + +### 3. Build Semantic Models + +Create internal representations (do not include raw artifacts in output): + +- **Requirements inventory**: Each functional + non-functional requirement with a stable key (derive slug based on imperative phrase; e.g., "User can upload file" → `user-can-upload-file`) +- **User story/action inventory**: Discrete user actions with acceptance criteria +- **Task coverage mapping**: Map each task to one or more requirements or stories (inference by keyword / explicit reference patterns like IDs or key phrases) +- **Constitution rule set**: Extract principle names and MUST/SHOULD normative statements + +### 4. Detection Passes (Token-Efficient Analysis) + +Focus on high-signal findings. Limit to 50 findings total; aggregate remainder in overflow summary. + +#### A. Duplication Detection + +- Identify near-duplicate requirements +- Mark lower-quality phrasing for consolidation + +#### B. Ambiguity Detection + +- Flag vague adjectives (fast, scalable, secure, intuitive, robust) lacking measurable criteria +- Flag unresolved placeholders (TODO, TKTK, ???, `<placeholder>`, etc.) + +#### C. Underspecification + +- Requirements with verbs but missing object or measurable outcome +- User stories missing acceptance criteria alignment +- Tasks referencing files or components not defined in spec/plan + +#### D. Constitution Alignment + +- Any requirement or plan element conflicting with a MUST principle +- Missing mandated sections or quality gates from constitution + +#### E. Coverage Gaps + +- Requirements with zero associated tasks +- Tasks with no mapped requirement/story +- Non-functional requirements not reflected in tasks (e.g., performance, security) + +#### F. Inconsistency + +- Terminology drift (same concept named differently across files) +- Data entities referenced in plan but absent in spec (or vice versa) +- Task ordering contradictions (e.g., integration tasks before foundational setup tasks without dependency note) +- Conflicting requirements (e.g., one requires Next.js while other specifies Vue) + +### 5. Severity Assignment + +Use this heuristic to prioritize findings: + +- **CRITICAL**: Violates constitution MUST, missing core spec artifact, or requirement with zero coverage that blocks baseline functionality +- **HIGH**: Duplicate or conflicting requirement, ambiguous security/performance attribute, untestable acceptance criterion +- **MEDIUM**: Terminology drift, missing non-functional task coverage, underspecified edge case +- **LOW**: Style/wording improvements, minor redundancy not affecting execution order + +### 6. Produce Compact Analysis Report + +Output a Markdown report (no file writes) with the following structure: + +## Specification Analysis Report + +| ID | Category | Severity | Location(s) | Summary | Recommendation | +|----|----------|----------|-------------|---------|----------------| +| A1 | Duplication | HIGH | spec.md:L120-134 | Two similar requirements ... | Merge phrasing; keep clearer version | + +(Add one row per finding; generate stable IDs prefixed by category initial.) + +**Coverage Summary Table:** + +| Requirement Key | Has Task? | Task IDs | Notes | +|-----------------|-----------|----------|-------| + +**Constitution Alignment Issues:** (if any) + +**Unmapped Tasks:** (if any) + +**Metrics:** + +- Total Requirements +- Total Tasks +- Coverage % (requirements with >=1 task) +- Ambiguity Count +- Duplication Count +- Critical Issues Count + +### 7. Provide Next Actions + +At end of report, output a concise Next Actions block: + +- If CRITICAL issues exist: Recommend resolving before `/sp.implement` +- If only LOW/MEDIUM: User may proceed, but provide improvement suggestions +- Provide explicit command suggestions: e.g., "Run /sp.specify with refinement", "Run /sp.plan to adjust architecture", "Manually edit tasks.md to add coverage for 'performance-metrics'" + +### 8. Offer Remediation + +Ask the user: "Would you like me to suggest concrete remediation edits for the top N issues?" (Do NOT apply them automatically.) + +## Operating Principles + +### Context Efficiency + +- **Minimal high-signal tokens**: Focus on actionable findings, not exhaustive documentation +- **Progressive disclosure**: Load artifacts incrementally; don't dump all content into analysis +- **Token-efficient output**: Limit findings table to 50 rows; summarize overflow +- **Deterministic results**: Rerunning without changes should produce consistent IDs and counts + +### Analysis Guidelines + +- **NEVER modify files** (this is read-only analysis) +- **NEVER hallucinate missing sections** (if absent, report them accurately) +- **Prioritize constitution violations** (these are always CRITICAL) +- **Use examples over exhaustive rules** (cite specific instances, not generic patterns) +- **Report zero issues gracefully** (emit success report with coverage statistics) + +## Context + +$ARGUMENTS + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.checklist.md b/.claude/commands/sp.checklist.md new file mode 100644 index 0000000000000000000000000000000000000000..7949ab1ff6749b2946d5d082b95ab395163f727a --- /dev/null +++ b/.claude/commands/sp.checklist.md @@ -0,0 +1,320 @@ +--- +description: Generate a custom checklist for the current feature based on user requirements. +--- + +## Checklist Purpose: "Unit Tests for English" + +**CRITICAL CONCEPT**: Checklists are **UNIT TESTS FOR REQUIREMENTS WRITING** - they validate the quality, clarity, and completeness of requirements in a given domain. + +**NOT for verification/testing**: + +- ❌ NOT "Verify the button clicks correctly" +- ❌ NOT "Test error handling works" +- ❌ NOT "Confirm the API returns 200" +- ❌ NOT checking if code/implementation matches the spec + +**FOR requirements quality validation**: + +- ✅ "Are visual hierarchy requirements defined for all card types?" (completeness) +- ✅ "Is 'prominent display' quantified with specific sizing/positioning?" (clarity) +- ✅ "Are hover state requirements consistent across all interactive elements?" (consistency) +- ✅ "Are accessibility requirements defined for keyboard navigation?" (coverage) +- ✅ "Does the spec define what happens when logo image fails to load?" (edge cases) + +**Metaphor**: If your spec is code written in English, the checklist is its unit test suite. You're testing whether the requirements are well-written, complete, unambiguous, and ready for implementation - NOT whether the implementation works. + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Execution Steps + +1. **Setup**: Run `.specify/scripts/bash/check-prerequisites.sh --json` from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS list. + - All file paths must be absolute. + - For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). + +2. **Clarify intent (dynamic)**: Derive up to THREE initial contextual clarifying questions (no pre-baked catalog). They MUST: + - Be generated from the user's phrasing + extracted signals from spec/plan/tasks + - Only ask about information that materially changes checklist content + - Be skipped individually if already unambiguous in `$ARGUMENTS` + - Prefer precision over breadth + + Generation algorithm: + 1. Extract signals: feature domain keywords (e.g., auth, latency, UX, API), risk indicators ("critical", "must", "compliance"), stakeholder hints ("QA", "review", "security team"), and explicit deliverables ("a11y", "rollback", "contracts"). + 2. Cluster signals into candidate focus areas (max 4) ranked by relevance. + 3. Identify probable audience & timing (author, reviewer, QA, release) if not explicit. + 4. Detect missing dimensions: scope breadth, depth/rigor, risk emphasis, exclusion boundaries, measurable acceptance criteria. + 5. Formulate questions chosen from these archetypes: + - Scope refinement (e.g., "Should this include integration touchpoints with X and Y or stay limited to local module correctness?") + - Risk prioritization (e.g., "Which of these potential risk areas should receive mandatory gating checks?") + - Depth calibration (e.g., "Is this a lightweight pre-commit sanity list or a formal release gate?") + - Audience framing (e.g., "Will this be used by the author only or peers during PR review?") + - Boundary exclusion (e.g., "Should we explicitly exclude performance tuning items this round?") + - Scenario class gap (e.g., "No recovery flows detected—are rollback / partial failure paths in scope?") + + Question formatting rules: + - If presenting options, generate a compact table with columns: Option | Candidate | Why It Matters + - Limit to A–E options maximum; omit table if a free-form answer is clearer + - Never ask the user to restate what they already said + - Avoid speculative categories (no hallucination). If uncertain, ask explicitly: "Confirm whether X belongs in scope." + + Defaults when interaction impossible: + - Depth: Standard + - Audience: Reviewer (PR) if code-related; Author otherwise + - Focus: Top 2 relevance clusters + + Output the questions (label Q1/Q2/Q3). After answers: if ≥2 scenario classes (Alternate / Exception / Recovery / Non-Functional domain) remain unclear, you MAY ask up to TWO more targeted follow‑ups (Q4/Q5) with a one-line justification each (e.g., "Unresolved recovery path risk"). Do not exceed five total questions. Skip escalation if user explicitly declines more. + +3. **Understand user request**: Combine `$ARGUMENTS` + clarifying answers: + - Derive checklist theme (e.g., security, review, deploy, ux) + - Consolidate explicit must-have items mentioned by user + - Map focus selections to category scaffolding + - Infer any missing context from spec/plan/tasks (do NOT hallucinate) + +4. **Load feature context**: Read from FEATURE_DIR: + - spec.md: Feature requirements and scope + - plan.md (if exists): Technical details, dependencies + - tasks.md (if exists): Implementation tasks + + **Context Loading Strategy**: + - Load only necessary portions relevant to active focus areas (avoid full-file dumping) + - Prefer summarizing long sections into concise scenario/requirement bullets + - Use progressive disclosure: add follow-on retrieval only if gaps detected + - If source docs are large, generate interim summary items instead of embedding raw text + +5. **Generate checklist** - Create "Unit Tests for Requirements": + - Create `FEATURE_DIR/checklists/` directory if it doesn't exist + - Generate unique checklist filename: + - Use short, descriptive name based on domain (e.g., `ux.md`, `api.md`, `security.md`) + - Format: `[domain].md` + - If file exists, append to existing file + - Number items sequentially starting from CHK001 + - Each `/sp.checklist` run creates a NEW file (never overwrites existing checklists) + + **CORE PRINCIPLE - Test the Requirements, Not the Implementation**: + Every checklist item MUST evaluate the REQUIREMENTS THEMSELVES for: + - **Completeness**: Are all necessary requirements present? + - **Clarity**: Are requirements unambiguous and specific? + - **Consistency**: Do requirements align with each other? + - **Measurability**: Can requirements be objectively verified? + - **Coverage**: Are all scenarios/edge cases addressed? + + **Category Structure** - Group items by requirement quality dimensions: + - **Requirement Completeness** (Are all necessary requirements documented?) + - **Requirement Clarity** (Are requirements specific and unambiguous?) + - **Requirement Consistency** (Do requirements align without conflicts?) + - **Acceptance Criteria Quality** (Are success criteria measurable?) + - **Scenario Coverage** (Are all flows/cases addressed?) + - **Edge Case Coverage** (Are boundary conditions defined?) + - **Non-Functional Requirements** (Performance, Security, Accessibility, etc. - are they specified?) + - **Dependencies & Assumptions** (Are they documented and validated?) + - **Ambiguities & Conflicts** (What needs clarification?) + + **HOW TO WRITE CHECKLIST ITEMS - "Unit Tests for English"**: + + ❌ **WRONG** (Testing implementation): + - "Verify landing page displays 3 episode cards" + - "Test hover states work on desktop" + - "Confirm logo click navigates home" + + ✅ **CORRECT** (Testing requirements quality): + - "Are the exact number and layout of featured episodes specified?" [Completeness] + - "Is 'prominent display' quantified with specific sizing/positioning?" [Clarity] + - "Are hover state requirements consistent across all interactive elements?" [Consistency] + - "Are keyboard navigation requirements defined for all interactive UI?" [Coverage] + - "Is the fallback behavior specified when logo image fails to load?" [Edge Cases] + - "Are loading states defined for asynchronous episode data?" [Completeness] + - "Does the spec define visual hierarchy for competing UI elements?" [Clarity] + + **ITEM STRUCTURE**: + Each item should follow this pattern: + - Question format asking about requirement quality + - Focus on what's WRITTEN (or not written) in the spec/plan + - Include quality dimension in brackets [Completeness/Clarity/Consistency/etc.] + - Reference spec section `[Spec §X.Y]` when checking existing requirements + - Use `[Gap]` marker when checking for missing requirements + + **EXAMPLES BY QUALITY DIMENSION**: + + Completeness: + - "Are error handling requirements defined for all API failure modes? [Gap]" + - "Are accessibility requirements specified for all interactive elements? [Completeness]" + - "Are mobile breakpoint requirements defined for responsive layouts? [Gap]" + + Clarity: + - "Is 'fast loading' quantified with specific timing thresholds? [Clarity, Spec §NFR-2]" + - "Are 'related episodes' selection criteria explicitly defined? [Clarity, Spec §FR-5]" + - "Is 'prominent' defined with measurable visual properties? [Ambiguity, Spec §FR-4]" + + Consistency: + - "Do navigation requirements align across all pages? [Consistency, Spec §FR-10]" + - "Are card component requirements consistent between landing and detail pages? [Consistency]" + + Coverage: + - "Are requirements defined for zero-state scenarios (no episodes)? [Coverage, Edge Case]" + - "Are concurrent user interaction scenarios addressed? [Coverage, Gap]" + - "Are requirements specified for partial data loading failures? [Coverage, Exception Flow]" + + Measurability: + - "Are visual hierarchy requirements measurable/testable? [Acceptance Criteria, Spec §FR-1]" + - "Can 'balanced visual weight' be objectively verified? [Measurability, Spec §FR-2]" + + **Scenario Classification & Coverage** (Requirements Quality Focus): + - Check if requirements exist for: Primary, Alternate, Exception/Error, Recovery, Non-Functional scenarios + - For each scenario class, ask: "Are [scenario type] requirements complete, clear, and consistent?" + - If scenario class missing: "Are [scenario type] requirements intentionally excluded or missing? [Gap]" + - Include resilience/rollback when state mutation occurs: "Are rollback requirements defined for migration failures? [Gap]" + + **Traceability Requirements**: + - MINIMUM: ≥80% of items MUST include at least one traceability reference + - Each item should reference: spec section `[Spec §X.Y]`, or use markers: `[Gap]`, `[Ambiguity]`, `[Conflict]`, `[Assumption]` + - If no ID system exists: "Is a requirement & acceptance criteria ID scheme established? [Traceability]" + + **Surface & Resolve Issues** (Requirements Quality Problems): + Ask questions about the requirements themselves: + - Ambiguities: "Is the term 'fast' quantified with specific metrics? [Ambiguity, Spec §NFR-1]" + - Conflicts: "Do navigation requirements conflict between §FR-10 and §FR-10a? [Conflict]" + - Assumptions: "Is the assumption of 'always available podcast API' validated? [Assumption]" + - Dependencies: "Are external podcast API requirements documented? [Dependency, Gap]" + - Missing definitions: "Is 'visual hierarchy' defined with measurable criteria? [Gap]" + + **Content Consolidation**: + - Soft cap: If raw candidate items > 40, prioritize by risk/impact + - Merge near-duplicates checking the same requirement aspect + - If >5 low-impact edge cases, create one item: "Are edge cases X, Y, Z addressed in requirements? [Coverage]" + + **🚫 ABSOLUTELY PROHIBITED** - These make it an implementation test, not a requirements test: + - ❌ Any item starting with "Verify", "Test", "Confirm", "Check" + implementation behavior + - ❌ References to code execution, user actions, system behavior + - ❌ "Displays correctly", "works properly", "functions as expected" + - ❌ "Click", "navigate", "render", "load", "execute" + - ❌ Test cases, test plans, QA procedures + - ❌ Implementation details (frameworks, APIs, algorithms) + + **✅ REQUIRED PATTERNS** - These test requirements quality: + - ✅ "Are [requirement type] defined/specified/documented for [scenario]?" + - ✅ "Is [vague term] quantified/clarified with specific criteria?" + - ✅ "Are requirements consistent between [section A] and [section B]?" + - ✅ "Can [requirement] be objectively measured/verified?" + - ✅ "Are [edge cases/scenarios] addressed in requirements?" + - ✅ "Does the spec define [missing aspect]?" + +6. **Structure Reference**: Generate the checklist following the canonical template in `.specify/templates/checklist-template.md` for title, meta section, category headings, and ID formatting. If template is unavailable, use: H1 title, purpose/created meta lines, `##` category sections containing `- [ ] CHK### <requirement item>` lines with globally incrementing IDs starting at CHK001. + +7. **Report**: Output full path to created checklist, item count, and remind user that each run creates a new file. Summarize: + - Focus areas selected + - Depth level + - Actor/timing + - Any explicit user-specified must-have items incorporated + +**Important**: Each `/sp.checklist` command invocation creates a checklist file using short, descriptive names unless file already exists. This allows: + +- Multiple checklists of different types (e.g., `ux.md`, `test.md`, `security.md`) +- Simple, memorable filenames that indicate checklist purpose +- Easy identification and navigation in the `checklists/` folder + +To avoid clutter, use descriptive types and clean up obsolete checklists when done. + +## Example Checklist Types & Sample Items + +**UX Requirements Quality:** `ux.md` + +Sample items (testing the requirements, NOT the implementation): + +- "Are visual hierarchy requirements defined with measurable criteria? [Clarity, Spec §FR-1]" +- "Is the number and positioning of UI elements explicitly specified? [Completeness, Spec §FR-1]" +- "Are interaction state requirements (hover, focus, active) consistently defined? [Consistency]" +- "Are accessibility requirements specified for all interactive elements? [Coverage, Gap]" +- "Is fallback behavior defined when images fail to load? [Edge Case, Gap]" +- "Can 'prominent display' be objectively measured? [Measurability, Spec §FR-4]" + +**API Requirements Quality:** `api.md` + +Sample items: + +- "Are error response formats specified for all failure scenarios? [Completeness]" +- "Are rate limiting requirements quantified with specific thresholds? [Clarity]" +- "Are authentication requirements consistent across all endpoints? [Consistency]" +- "Are retry/timeout requirements defined for external dependencies? [Coverage, Gap]" +- "Is versioning strategy documented in requirements? [Gap]" + +**Performance Requirements Quality:** `performance.md` + +Sample items: + +- "Are performance requirements quantified with specific metrics? [Clarity]" +- "Are performance targets defined for all critical user journeys? [Coverage]" +- "Are performance requirements under different load conditions specified? [Completeness]" +- "Can performance requirements be objectively measured? [Measurability]" +- "Are degradation requirements defined for high-load scenarios? [Edge Case, Gap]" + +**Security Requirements Quality:** `security.md` + +Sample items: + +- "Are authentication requirements specified for all protected resources? [Coverage]" +- "Are data protection requirements defined for sensitive information? [Completeness]" +- "Is the threat model documented and requirements aligned to it? [Traceability]" +- "Are security requirements consistent with compliance obligations? [Consistency]" +- "Are security failure/breach response requirements defined? [Gap, Exception Flow]" + +## Anti-Examples: What NOT To Do + +**❌ WRONG - These test implementation, not requirements:** + +```markdown +- [ ] CHK001 - Verify landing page displays 3 episode cards [Spec §FR-001] +- [ ] CHK002 - Test hover states work correctly on desktop [Spec §FR-003] +- [ ] CHK003 - Confirm logo click navigates to home page [Spec §FR-010] +- [ ] CHK004 - Check that related episodes section shows 3-5 items [Spec §FR-005] +``` + +**✅ CORRECT - These test requirements quality:** + +```markdown +- [ ] CHK001 - Are the number and layout of featured episodes explicitly specified? [Completeness, Spec §FR-001] +- [ ] CHK002 - Are hover state requirements consistently defined for all interactive elements? [Consistency, Spec §FR-003] +- [ ] CHK003 - Are navigation requirements clear for all clickable brand elements? [Clarity, Spec §FR-010] +- [ ] CHK004 - Is the selection criteria for related episodes documented? [Gap, Spec §FR-005] +- [ ] CHK005 - Are loading state requirements defined for asynchronous episode data? [Gap] +- [ ] CHK006 - Can "visual hierarchy" requirements be objectively measured? [Measurability, Spec §FR-001] +``` + +**Key Differences:** + +- Wrong: Tests if the system works correctly +- Correct: Tests if the requirements are written correctly +- Wrong: Verification of behavior +- Correct: Validation of requirement quality +- Wrong: "Does it do X?" +- Correct: "Is X clearly specified?" + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.clarify.md b/.claude/commands/sp.clarify.md new file mode 100644 index 0000000000000000000000000000000000000000..1cc35c90ebc5db77df0376cb6dd5d054d013fb21 --- /dev/null +++ b/.claude/commands/sp.clarify.md @@ -0,0 +1,207 @@ +--- +description: Identify underspecified areas in the current feature spec by asking up to 5 highly targeted clarification questions and encoding answers back into the spec. +handoffs: + - label: Build Technical Plan + agent: sp.plan + prompt: Create a plan for the spec. I am building with... +--- + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Outline + +Goal: Detect and reduce ambiguity or missing decision points in the active feature specification and record the clarifications directly in the spec file. + +Note: This clarification workflow is expected to run (and be completed) BEFORE invoking `/sp.plan`. If the user explicitly states they are skipping clarification (e.g., exploratory spike), you may proceed, but must warn that downstream rework risk increases. + +Execution steps: + +1. Run `.specify/scripts/bash/check-prerequisites.sh --json --paths-only` from repo root **once** (combined `--json --paths-only` mode / `-Json -PathsOnly`). Parse minimal JSON payload fields: + - `FEATURE_DIR` + - `FEATURE_SPEC` + - (Optionally capture `IMPL_PLAN`, `TASKS` for future chained flows.) + - If JSON parsing fails, abort and instruct user to re-run `/sp.specify` or verify feature branch environment. + - For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). + +2. Load the current spec file. Perform a structured ambiguity & coverage scan using this taxonomy. For each category, mark status: Clear / Partial / Missing. Produce an internal coverage map used for prioritization (do not output raw map unless no questions will be asked). + + Functional Scope & Behavior: + - Core user goals & success criteria + - Explicit out-of-scope declarations + - User roles / personas differentiation + + Domain & Data Model: + - Entities, attributes, relationships + - Identity & uniqueness rules + - Lifecycle/state transitions + - Data volume / scale assumptions + + Interaction & UX Flow: + - Critical user journeys / sequences + - Error/empty/loading states + - Accessibility or localization notes + + Non-Functional Quality Attributes: + - Performance (latency, throughput targets) + - Scalability (horizontal/vertical, limits) + - Reliability & availability (uptime, recovery expectations) + - Observability (logging, metrics, tracing signals) + - Security & privacy (authN/Z, data protection, threat assumptions) + - Compliance / regulatory constraints (if any) + + Integration & External Dependencies: + - External services/APIs and failure modes + - Data import/export formats + - Protocol/versioning assumptions + + Edge Cases & Failure Handling: + - Negative scenarios + - Rate limiting / throttling + - Conflict resolution (e.g., concurrent edits) + + Constraints & Tradeoffs: + - Technical constraints (language, storage, hosting) + - Explicit tradeoffs or rejected alternatives + + Terminology & Consistency: + - Canonical glossary terms + - Avoided synonyms / deprecated terms + + Completion Signals: + - Acceptance criteria testability + - Measurable Definition of Done style indicators + + Misc / Placeholders: + - TODO markers / unresolved decisions + - Ambiguous adjectives ("robust", "intuitive") lacking quantification + + For each category with Partial or Missing status, add a candidate question opportunity unless: + - Clarification would not materially change implementation or validation strategy + - Information is better deferred to planning phase (note internally) + +3. Generate (internally) a prioritized queue of candidate clarification questions (maximum 5). Do NOT output them all at once. Apply these constraints: + - Maximum of 10 total questions across the whole session. + - Each question must be answerable with EITHER: + - A short multiple‑choice selection (2–5 distinct, mutually exclusive options), OR + - A one-word / short‑phrase answer (explicitly constrain: "Answer in <=5 words"). + - Only include questions whose answers materially impact architecture, data modeling, task decomposition, test design, UX behavior, operational readiness, or compliance validation. + - Ensure category coverage balance: attempt to cover the highest impact unresolved categories first; avoid asking two low-impact questions when a single high-impact area (e.g., security posture) is unresolved. + - Exclude questions already answered, trivial stylistic preferences, or plan-level execution details (unless blocking correctness). + - Favor clarifications that reduce downstream rework risk or prevent misaligned acceptance tests. + - If more than 5 categories remain unresolved, select the top 5 by (Impact * Uncertainty) heuristic. + +4. Sequential questioning loop (interactive): + - Present EXACTLY ONE question at a time. + - For multiple‑choice questions: + - **Analyze all options** and determine the **most suitable option** based on: + - Best practices for the project type + - Common patterns in similar implementations + - Risk reduction (security, performance, maintainability) + - Alignment with any explicit project goals or constraints visible in the spec + - Present your **recommended option prominently** at the top with clear reasoning (1-2 sentences explaining why this is the best choice). + - Format as: `**Recommended:** Option [X] - <reasoning>` + - Then render all options as a Markdown table: + + | Option | Description | + |--------|-------------| + | A | <Option A description> | + | B | <Option B description> | + | C | <Option C description> (add D/E as needed up to 5) | + | Short | Provide a different short answer (<=5 words) (Include only if free-form alternative is appropriate) | + + - After the table, add: `You can reply with the option letter (e.g., "A"), accept the recommendation by saying "yes" or "recommended", or provide your own short answer.` + - For short‑answer style (no meaningful discrete options): + - Provide your **suggested answer** based on best practices and context. + - Format as: `**Suggested:** <your proposed answer> - <brief reasoning>` + - Then output: `Format: Short answer (<=5 words). You can accept the suggestion by saying "yes" or "suggested", or provide your own answer.` + - After the user answers: + - If the user replies with "yes", "recommended", or "suggested", use your previously stated recommendation/suggestion as the answer. + - Otherwise, validate the answer maps to one option or fits the <=5 word constraint. + - If ambiguous, ask for a quick disambiguation (count still belongs to same question; do not advance). + - Once satisfactory, record it in working memory (do not yet write to disk) and move to the next queued question. + - Stop asking further questions when: + - All critical ambiguities resolved early (remaining queued items become unnecessary), OR + - User signals completion ("done", "good", "no more"), OR + - You reach 5 asked questions. + - Never reveal future queued questions in advance. + - If no valid questions exist at start, immediately report no critical ambiguities. + +5. Integration after EACH accepted answer (incremental update approach): + - Maintain in-memory representation of the spec (loaded once at start) plus the raw file contents. + - For the first integrated answer in this session: + - Ensure a `## Clarifications` section exists (create it just after the highest-level contextual/overview section per the spec template if missing). + - Under it, create (if not present) a `### Session YYYY-MM-DD` subheading for today. + - Append a bullet line immediately after acceptance: `- Q: <question> → A: <final answer>`. + - Then immediately apply the clarification to the most appropriate section(s): + - Functional ambiguity → Update or add a bullet in Functional Requirements. + - User interaction / actor distinction → Update User Stories or Actors subsection (if present) with clarified role, constraint, or scenario. + - Data shape / entities → Update Data Model (add fields, types, relationships) preserving ordering; note added constraints succinctly. + - Non-functional constraint → Add/modify measurable criteria in Non-Functional / Quality Attributes section (convert vague adjective to metric or explicit target). + - Edge case / negative flow → Add a new bullet under Edge Cases / Error Handling (or create such subsection if template provides placeholder for it). + - Terminology conflict → Normalize term across spec; retain original only if necessary by adding `(formerly referred to as "X")` once. + - If the clarification invalidates an earlier ambiguous statement, replace that statement instead of duplicating; leave no obsolete contradictory text. + - Save the spec file AFTER each integration to minimize risk of context loss (atomic overwrite). + - Preserve formatting: do not reorder unrelated sections; keep heading hierarchy intact. + - Keep each inserted clarification minimal and testable (avoid narrative drift). + +6. Validation (performed after EACH write plus final pass): + - Clarifications session contains exactly one bullet per accepted answer (no duplicates). + - Total asked (accepted) questions ≤ 5. + - Updated sections contain no lingering vague placeholders the new answer was meant to resolve. + - No contradictory earlier statement remains (scan for now-invalid alternative choices removed). + - Markdown structure valid; only allowed new headings: `## Clarifications`, `### Session YYYY-MM-DD`. + - Terminology consistency: same canonical term used across all updated sections. + +7. Write the updated spec back to `FEATURE_SPEC`. + +8. Report completion (after questioning loop ends or early termination): + - Number of questions asked & answered. + - Path to updated spec. + - Sections touched (list names). + - Coverage summary table listing each taxonomy category with Status: Resolved (was Partial/Missing and addressed), Deferred (exceeds question quota or better suited for planning), Clear (already sufficient), Outstanding (still Partial/Missing but low impact). + - If any Outstanding or Deferred remain, recommend whether to proceed to `/sp.plan` or run `/sp.clarify` again later post-plan. + - Suggested next command. + +Behavior rules: + +- If no meaningful ambiguities found (or all potential questions would be low-impact), respond: "No critical ambiguities detected worth formal clarification." and suggest proceeding. +- If spec file missing, instruct user to run `/sp.specify` first (do not create a new spec here). +- Never exceed 5 total asked questions (clarification retries for a single question do not count as new questions). +- Avoid speculative tech stack questions unless the absence blocks functional clarity. +- Respect user early termination signals ("stop", "done", "proceed"). +- If no questions asked due to full coverage, output a compact coverage summary (all categories Clear) then suggest advancing. +- If quota reached with unresolved high-impact categories remaining, explicitly flag them under Deferred with rationale. + +Context for prioritization: $ARGUMENTS + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.constitution.md b/.claude/commands/sp.constitution.md new file mode 100644 index 0000000000000000000000000000000000000000..5c85d9ef4d7cb7b09339fbafc1ed7298306a9aa1 --- /dev/null +++ b/.claude/commands/sp.constitution.md @@ -0,0 +1,108 @@ +--- +description: Create or update the project constitution from interactive or provided principle inputs, ensuring all dependent templates stay in sync. +handoffs: + - label: Build Specification + agent: sp.specify + prompt: Implement the feature specification based on the updated constitution. I want to build... +--- + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Outline + +You are updating the project constitution at `.specify/memory/constitution.md`. This file is a TEMPLATE containing placeholder tokens in square brackets (e.g. `[PROJECT_NAME]`, `[PRINCIPLE_1_NAME]`). Your job is to (a) collect/derive concrete values, (b) fill the template precisely, and (c) propagate any amendments across dependent artifacts. + +Follow this execution flow: + +1. Load the existing constitution template at `.specify/memory/constitution.md`. + - Identify every placeholder token of the form `[ALL_CAPS_IDENTIFIER]`. + **IMPORTANT**: The user might require less or more principles than the ones used in the template. If a number is specified, respect that - follow the general template. You will update the doc accordingly. + +2. Collect/derive values for placeholders: + - If user input (conversation) supplies a value, use it. + - Otherwise infer from existing repo context (README, docs, prior constitution versions if embedded). + - For governance dates: `RATIFICATION_DATE` is the original adoption date (if unknown ask or mark TODO), `LAST_AMENDED_DATE` is today if changes are made, otherwise keep previous. + - `CONSTITUTION_VERSION` must increment according to semantic versioning rules: + - MAJOR: Backward incompatible governance/principle removals or redefinitions. + - MINOR: New principle/section added or materially expanded guidance. + - PATCH: Clarifications, wording, typo fixes, non-semantic refinements. + - If version bump type ambiguous, propose reasoning before finalizing. + +3. Draft the updated constitution content: + - Replace every placeholder with concrete text (no bracketed tokens left except intentionally retained template slots that the project has chosen not to define yet—explicitly justify any left). + - Preserve heading hierarchy and comments can be removed once replaced unless they still add clarifying guidance. + - Ensure each Principle section: succinct name line, paragraph (or bullet list) capturing non‑negotiable rules, explicit rationale if not obvious. + - Ensure Governance section lists amendment procedure, versioning policy, and compliance review expectations. + +4. Consistency propagation checklist (convert prior checklist into active validations): + - Read `.specify/templates/plan-template.md` and ensure any "Constitution Check" or rules align with updated principles. + - Read `.specify/templates/spec-template.md` for scope/requirements alignment—update if constitution adds/removes mandatory sections or constraints. + - Read `.specify/templates/tasks-template.md` and ensure task categorization reflects new or removed principle-driven task types (e.g., observability, versioning, testing discipline). + - Read each command file in `.specify/templates/commands/*.md` (including this one) to verify no outdated references (agent-specific names like CLAUDE only) remain when generic guidance is required. + - Read any runtime guidance docs (e.g., `README.md`, `docs/quickstart.md`, or agent-specific guidance files if present). Update references to principles changed. + +5. Produce a Sync Impact Report (prepend as an HTML comment at top of the constitution file after update): + - Version change: old → new + - List of modified principles (old title → new title if renamed) + - Added sections + - Removed sections + - Templates requiring updates (✅ updated / ⚠ pending) with file paths + - Follow-up TODOs if any placeholders intentionally deferred. + +6. Validation before final output: + - No remaining unexplained bracket tokens. + - Version line matches report. + - Dates ISO format YYYY-MM-DD. + - Principles are declarative, testable, and free of vague language ("should" → replace with MUST/SHOULD rationale where appropriate). + +7. Write the completed constitution back to `.specify/memory/constitution.md` (overwrite). + +8. Output a final summary to the user with: + - New version and bump rationale. + - Any files flagged for manual follow-up. + - Suggested commit message (e.g., `docs: amend constitution to vX.Y.Z (principle additions + governance update)`). + +Formatting & Style Requirements: + +- Use Markdown headings exactly as in the template (do not demote/promote levels). +- Wrap long rationale lines to keep readability (<100 chars ideally) but do not hard enforce with awkward breaks. +- Keep a single blank line between sections. +- Avoid trailing whitespace. + +If the user supplies partial updates (e.g., only one principle revision), still perform validation and version decision steps. + +If critical info missing (e.g., ratification date truly unknown), insert `TODO(<FIELD_NAME>): explanation` and include in the Sync Impact Report under deferred items. + +Do not create a new template; always operate on the existing `.specify/memory/constitution.md` file. + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.git.commit_pr.md b/.claude/commands/sp.git.commit_pr.md new file mode 100644 index 0000000000000000000000000000000000000000..be37a7257bc9d23279baa9894738f7a5475245b0 --- /dev/null +++ b/.claude/commands/sp.git.commit_pr.md @@ -0,0 +1,328 @@ +--- +description: An autonomous Git agent that intelligently executes git workflows. Your task is to intelligently executes git workflows to commit the work and create PR. +--- + +Your task is to intelligently executes git workflows to commit the work and create PR following your Principles + +# Agentic Git Workflow Agent + +## Core Principle + +You are an autonomous Git agent. Your job is to **fulfill the user's intent efficiently**. You have agency to: +- Analyze the current state independently +- Make intelligent decisions about the best workflow +- Execute steps without asking permission for each one +- Invoke the human validator only when the decision requires their judgment + +The human is not a step-orchestrator. The human is an **intent-provider** and **decision validator**. + +## Your Agency + +You can autonomously: +✅ Analyze repository state +✅ Determine optimal branch strategy +✅ Generate meaningful commit messages based on code changes +✅ Create branches, commits, and push to remote +✅ Create PRs with intelligent titles and descriptions +✅ Detect and handle common errors + +You CANNOT autonomously: +❌ Run long-running processes (servers, watchers, etc.) +❌ Execute code that blocks indefinitely +❌ Make changes outside the repo (create files elsewhere, etc.) +❌ Execute destructive commands without explicit approval + +You invoke the human when: +🔴 The intent is ambiguous +🔴 Multiple equally-valid strategies exist and you need to know their preference +🔴 You detect something risky or unexpected +🔴 The outcome differs significantly from what was requested +🔴 Any non-Git command would run indefinitely or block execution + +## Phase 1: Context Gathering (Autonomous) + +Start by understanding the complete situation: + +```bash +git --version # Verify Git exists +git rev-parse --is-inside-work-tree # Verify we're in a repo +git status --porcelain # See what changed +git diff --stat # Quantify changes +git log --oneline -5 # Recent history context +git rev-parse --abbrev-ref HEAD # Current branch +git remote -v # Remote configuration +``` + +**CRITICAL:** Only run Git commands. Do not: +- Run `python main.py`, `npm start`, `make`, or other build/start scripts +- Execute anything that might be long-running or blocking +- Run tests, servers, or development tools + +If Git is not available or this isn't a repo, **invoke human validator** with the problem. + +## Phase 2: Analyze & Decide (Autonomous) + +Based on the gathered context, **you decide** the optimal approach: + +### Decision Tree: + +**Are there uncommitted changes?** +- Yes → Continue to strategy decision +- No → Invoke human: "No changes detected. What would you like to commit?" + +**What's the nature of changes?** (Analyze via `git diff`) +- New feature files → Feature branch strategy +- Tests only → Test/fix branch strategy +- Documentation → Docs branch strategy +- Mixed/refactor → Analysis-dependent + +**What branch are we on?** +- `main` or `master` or protected branch → Must create feature branch +- Feature branch with tracking → Commit and optionally create/update PR +- Detached HEAD or unusual state → Invoke human + +**What strategy is optimal?** + +1. **If feature branch doesn't exist yet:** + - Create feature branch from current base + - Commit changes + - Push with upstream tracking + - Create PR to main/dev/appropriate base + +2. **If feature branch exists with upstream:** + - Commit to current branch + - Push updates + - Check if PR exists; create if not + +3. **If on protected branch with changes:** + - Create feature branch from current state + - Move changes to new branch + - Commit and push + - Create PR + +**Make this decision autonomously.** You don't need permission to decide—only when the choice itself is uncertain. + +## Phase 3: Generate Intelligent Content (Autonomous) + +### Branch Name +Analyze the changes to create a meaningful branch name: +```bash +git diff --name-only +``` + +Look at: +- Files changed (domain extraction) +- Commit intent (if user provided one) +- Repository conventions (existing branch names via `git branch -r`) + +Generate a name that's: +- Descriptive (2-4 words) +- Follows existing conventions +- Reflects the actual change + +Examples: +- `add-auth-validation` (from "Add login validation" + auth-related files) +- `fix-query-timeout` (from files in db/queries/) +- `docs-update-readme` (from README.md changes) + +### Commit Message +Analyze the code diff and generate a conventional commit: + +``` +<type>(<scope>): <subject> + +<body explaining why, not what> +``` + +- **type**: feat, fix, chore, refactor, docs, test (determined from change analysis) +- **scope**: Primary area affected +- **subject**: Imperative, what this commit does +- **body**: Why this change was needed + +**Do not ask the user for a commit message.** Extract intent from: +- Their stated purpose (if provided) +- The code changes themselves +- File modifications + +### PR Title & Description +Create automatically: +- **Title**: Based on commit message or user intent +- **Description**: + - What changed + - Why it matters + - Files affected + - Related issues (if detectable) + +## Phase 4: Execute (Autonomous) + +Execute the workflow you decided: + +```bash +git add . +git checkout -b # or git switch if branch exists +git commit -m "" +git push -u origin +gh pr create --title "" --body "" +``` + +Handle common errors autonomously: +- `git push` fails (auth/permission) → Report clearly, suggest manual push +- `gh` not available → Provide manual PR URL: `https://github.com/<owner>/<repo>/compare/<branch>` +- Merge conflicts → Stop and invoke human + +## Phase 5: Validate & Report (Conditional) + +**After execution, evaluate the outcome:** + +Compare your executed workflow against the user's original intent. + +**If outcome matches intent:** ✅ Report success +``` +✅ Workflow executed successfully: + • Branch: feature/add-auth-validation + • Commit: "feat(auth): add login validation" + • PR: https://github.com/... +``` + +**If outcome differs significantly:** 🔴 Invoke human validator +``` +⚠️ Outcome differs from intent: + • Your intent: "Update documentation" + • Actual changes: 15 files modified, 3 new features detected + +Does this reflect what you wanted? If not, what should I have done? +``` + +**If something was unexpected:** 🔴 Invoke human validator +``` +⚠️ Unexpected state detected: + • On protected branch 'main' + • User provided intent but no files changed + • Branch already has open PR + +What should I do? +``` + +## When to Invoke Human Validator + +Use the `invoke_human` tool when: + +### 1. Ambiguous Intent +**User said:** "Do the thing" +**You need:** Clarification on what "the thing" is + +### 2. Risk Detected +**Scenario:** Changes affect core system, or branch already exists with different content +**Action:** Ask for confirmation: "I detected this might break X. Continue? [Y/n]" + +### 3. Multiple Valid Strategies +**Scenario:** Could create new branch OR commit to existing, both valid +**Action:** Present the decision: "I can do [A] or [B]. Which do you prefer?" + +### 4. Outcome Validation +**Scenario:** Workflow executed but results differ from intent +**Action:** Ask: "Does this match what you wanted?" + +### 5. Environment Issues +**Scenario:** Git/GitHub not configured, credentials missing, unexpected state +**Action:** Explain the blocker and ask for guidance + +## Format for Human Invocation + +When you need to invoke the human validator, format clearly: + +``` +🔴 DECISION NEEDED + +Situation: <What you're trying to do> +Problem/Options: <Why you need human input> + +Option A: <First approach> +Option B: <Second approach> + +What would you prefer? [A/B/other] +``` + +Or for validation: + +``` +✅ OUTCOME VALIDATION + +I executed: <What I did> +Result: <What happened> + +Does this match your intent? [Y/n] +If not, what should I have done? +``` + +## What You Decide Autonomously + +✅ Branch strategy +✅ Branch naming +✅ Commit message generation +✅ PR creation +✅ Workflow execution (Git only) +✅ Error recovery (when possible) +✅ Reading files to analyze changes + +## What You NEVER Do Autonomously + +❌ Run servers, watchers, or development tools +❌ Execute build steps unless explicitly asked +❌ Run tests or other processes +❌ Execute anything that blocks or runs indefinitely +❌ Run commands outside of Git operations + +## What Requires Human Input + +🔴 Clarifying ambiguous intent +🔴 Choosing between equally valid strategies +🔴 Confirming risky actions +🔴 Validating outcomes don't match intent +🔴 Resolving blockers + +## Example Execution + +**User Intent:** "I added email validation to the auth system" + +**You (autonomous):** +1. Gather context → See auth files + validation logic changes +2. Decide → Create feature branch, conventional commit, PR to main +3. Generate → Branch: `add-email-validation`, Commit: "feat(auth): add email validation" +4. Execute → All steps without asking +5. Report → Show what was done + PR link +6. Validate → Check if outcome matches intent + +**If something was off:** +- You executed correctly but sense it wasn't what they meant → Invoke validator +- They later say "Actually I meant..." → Update accordingly + +## Philosophy + +You are not a tool waiting for instructions. You are an agent fulfilling intent. The human provides direction; you provide execution. Invoke them only when you genuinely need their judgment, not for step-by-step choreography. + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.implement.md b/.claude/commands/sp.implement.md new file mode 100644 index 0000000000000000000000000000000000000000..34042a591c04ff70e0897d686feb60c58b5c04bf --- /dev/null +++ b/.claude/commands/sp.implement.md @@ -0,0 +1,161 @@ +--- +description: Execute the implementation plan by processing and executing all tasks defined in tasks.md +--- + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Outline + +1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). + +2. **Check checklists status** (if FEATURE_DIR/checklists/ exists): + - Scan all checklist files in the checklists/ directory + - For each checklist, count: + - Total items: All lines matching `- [ ]` or `- [X]` or `- [x]` + - Completed items: Lines matching `- [X]` or `- [x]` + - Incomplete items: Lines matching `- [ ]` + - Create a status table: + + ```text + | Checklist | Total | Completed | Incomplete | Status | + |-----------|-------|-----------|------------|--------| + | ux.md | 12 | 12 | 0 | ✓ PASS | + | test.md | 8 | 5 | 3 | ✗ FAIL | + | security.md | 6 | 6 | 0 | ✓ PASS | + ``` + + - Calculate overall status: + - **PASS**: All checklists have 0 incomplete items + - **FAIL**: One or more checklists have incomplete items + + - **If any checklist is incomplete**: + - Display the table with incomplete item counts + - **STOP** and ask: "Some checklists are incomplete. Do you want to proceed with implementation anyway? (yes/no)" + - Wait for user response before continuing + - If user says "no" or "wait" or "stop", halt execution + - If user says "yes" or "proceed" or "continue", proceed to step 3 + + - **If all checklists are complete**: + - Display the table showing all checklists passed + - Automatically proceed to step 3 + +3. Load and analyze the implementation context: + - **REQUIRED**: Read tasks.md for the complete task list and execution plan + - **REQUIRED**: Read plan.md for tech stack, architecture, and file structure + - **IF EXISTS**: Read data-model.md for entities and relationships + - **IF EXISTS**: Read contracts/ for API specifications and test requirements + - **IF EXISTS**: Read research.md for technical decisions and constraints + - **IF EXISTS**: Read quickstart.md for integration scenarios + +4. **Project Setup Verification**: + - **REQUIRED**: Create/verify ignore files based on actual project setup: + + **Detection & Creation Logic**: + - Check if the following command succeeds to determine if the repository is a git repo (create/verify .gitignore if so): + + ```sh + git rev-parse --git-dir 2>/dev/null + ``` + + - Check if Dockerfile* exists or Docker in plan.md → create/verify .dockerignore + - Check if .eslintrc* exists → create/verify .eslintignore + - Check if eslint.config.* exists → ensure the config's `ignores` entries cover required patterns + - Check if .prettierrc* exists → create/verify .prettierignore + - Check if .npmrc or package.json exists → create/verify .npmignore (if publishing) + - Check if terraform files (*.tf) exist → create/verify .terraformignore + - Check if .helmignore needed (helm charts present) → create/verify .helmignore + + **If ignore file already exists**: Verify it contains essential patterns, append missing critical patterns only + **If ignore file missing**: Create with full pattern set for detected technology + + **Common Patterns by Technology** (from plan.md tech stack): + - **Node.js/JavaScript/TypeScript**: `node_modules/`, `dist/`, `build/`, `*.log`, `.env*` + - **Python**: `__pycache__/`, `*.pyc`, `.venv/`, `venv/`, `dist/`, `*.egg-info/` + - **Java**: `target/`, `*.class`, `*.jar`, `.gradle/`, `build/` + - **C#/.NET**: `bin/`, `obj/`, `*.user`, `*.suo`, `packages/` + - **Go**: `*.exe`, `*.test`, `vendor/`, `*.out` + - **Ruby**: `.bundle/`, `log/`, `tmp/`, `*.gem`, `vendor/bundle/` + - **PHP**: `vendor/`, `*.log`, `*.cache`, `*.env` + - **Rust**: `target/`, `debug/`, `release/`, `*.rs.bk`, `*.rlib`, `*.prof*`, `.idea/`, `*.log`, `.env*` + - **Kotlin**: `build/`, `out/`, `.gradle/`, `.idea/`, `*.class`, `*.jar`, `*.iml`, `*.log`, `.env*` + - **C++**: `build/`, `bin/`, `obj/`, `out/`, `*.o`, `*.so`, `*.a`, `*.exe`, `*.dll`, `.idea/`, `*.log`, `.env*` + - **C**: `build/`, `bin/`, `obj/`, `out/`, `*.o`, `*.a`, `*.so`, `*.exe`, `Makefile`, `config.log`, `.idea/`, `*.log`, `.env*` + - **Swift**: `.build/`, `DerivedData/`, `*.swiftpm/`, `Packages/` + - **R**: `.Rproj.user/`, `.Rhistory`, `.RData`, `.Ruserdata`, `*.Rproj`, `packrat/`, `renv/` + - **Universal**: `.DS_Store`, `Thumbs.db`, `*.tmp`, `*.swp`, `.vscode/`, `.idea/` + + **Tool-Specific Patterns**: + - **Docker**: `node_modules/`, `.git/`, `Dockerfile*`, `.dockerignore`, `*.log*`, `.env*`, `coverage/` + - **ESLint**: `node_modules/`, `dist/`, `build/`, `coverage/`, `*.min.js` + - **Prettier**: `node_modules/`, `dist/`, `build/`, `coverage/`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml` + - **Terraform**: `.terraform/`, `*.tfstate*`, `*.tfvars`, `.terraform.lock.hcl` + - **Kubernetes/k8s**: `*.secret.yaml`, `secrets/`, `.kube/`, `kubeconfig*`, `*.key`, `*.crt` + +5. Parse tasks.md structure and extract: + - **Task phases**: Setup, Tests, Core, Integration, Polish + - **Task dependencies**: Sequential vs parallel execution rules + - **Task details**: ID, description, file paths, parallel markers [P] + - **Execution flow**: Order and dependency requirements + +6. Execute implementation following the task plan: + - **Phase-by-phase execution**: Complete each phase before moving to the next + - **Respect dependencies**: Run sequential tasks in order, parallel tasks [P] can run together + - **Follow TDD approach**: Execute test tasks before their corresponding implementation tasks + - **File-based coordination**: Tasks affecting the same files must run sequentially + - **Validation checkpoints**: Verify each phase completion before proceeding + +7. Implementation execution rules: + - **Setup first**: Initialize project structure, dependencies, configuration + - **Tests before code**: If you need to write tests for contracts, entities, and integration scenarios + - **Core development**: Implement models, services, CLI commands, endpoints + - **Integration work**: Database connections, middleware, logging, external services + - **Polish and validation**: Unit tests, performance optimization, documentation + +8. Progress tracking and error handling: + - Report progress after each completed task + - Halt execution if any non-parallel task fails + - For parallel tasks [P], continue with successful tasks, report failed ones + - Provide clear error messages with context for debugging + - Suggest next steps if implementation cannot proceed + - **IMPORTANT** For completed tasks, make sure to mark the task off as [X] in the tasks file. + +9. Completion validation: + - Verify all required tasks are completed + - Check that implemented features match the original specification + - Validate that tests pass and coverage meets requirements + - Confirm the implementation follows the technical plan + - Report final status with summary of completed work + +Note: This command assumes a complete task breakdown exists in tasks.md. If tasks are incomplete or missing, suggest running `/sp.tasks` first to regenerate the task list. + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.phr.md b/.claude/commands/sp.phr.md new file mode 100644 index 0000000000000000000000000000000000000000..5c29eac04275c2f546bfbf495b75657047288574 --- /dev/null +++ b/.claude/commands/sp.phr.md @@ -0,0 +1,195 @@ +--- +description: Record an AI exchange as a Prompt History Record (PHR) for learning and traceability. +--- + +# COMMAND: Record this AI exchange as a structured PHR artifact + +## CONTEXT + +The user has just completed work (or is requesting work) and needs to capture this exchange as a Prompt History Record (PHR) for: + +- Learning and pattern recognition (spaced repetition) +- Team knowledge sharing and traceability +- Compliance and audit requirements +- Building a searchable corpus of effective prompts + +**User's input to record:** + +$ARGUMENTS + +**CRITICAL**: The complete text above is the PROMPT to preserve verbatim. Do NOT truncate to first line only. + +## YOUR ROLE + +Act as a meticulous documentation specialist with expertise in: + +- Knowledge management and organizational learning +- Software development lifecycle documentation +- Metadata extraction and classification +- Creating structured, searchable technical records + +## QUICK OVERVIEW (strict) + +After completing ANY work, automatically create a PHR: + +1. **Detect work type**: constitution|spec|plan|tasks|implementation|debugging|refactoring|discussion|general +2. **Generate title**: 3-7 word descriptive title summarizing the work +3. **Capture context**: COMPLETE conversation (never truncate to summaries) +4. **Route correctly**: + - Pre-feature work → `history/prompts/` + - Feature-specific work → `specs/<feature>/prompts/` +5. **Confirm**: Show "📝 PHR-NNNN recorded" + +## OUTPUT STRUCTURE (with quick flywheel hooks) + +Execute this workflow in 5 sequential steps, reporting progress after each: + +## Step 1: Execute User's Request (if not already done) + +If the user provided a task/question in $ARGUMENTS: + +- Complete the requested work first +- Provide full response to user +- Then proceed to Step 2 to record the exchange + +If you already completed work and user just wants to record it: + +- Skip to Step 2 + +## Step 2: Determine Stage and Routing + +Select ONE stage that best describes the work: + +**Constitution** (→ `history/prompts/constitution/`): +- `constitution` - Defining quality standards, project principles + +**Feature-specific** (→ `history/prompts/<feature-name>/` - requires feature context): +- `spec` - Creating feature specifications +- `plan` - Architecture design and technical approach +- `tasks` - Implementation breakdown with test cases +- `red` - Debugging, fixing errors, test failures +- `green` - Implementation, new features, passing tests +- `refactor` - Code cleanup, optimization +- `explainer` - Code explanations, documentation +- `misc` - Other feature-specific work + +**General/Catch-all** (→ `history/prompts/general/`): +- `general` - General work not tied to a specific feature + +## Step 3: Create PHR File + +Generate a concise title (3-7 words) summarizing what was accomplished. + +Call the PHR creation script with title and stage: + +```bash +.specify/scripts/bash/create-phr.sh \ + --title "<your-generated-title>" \ + --stage <selected-stage> \ + [--feature <feature-slug>] \ + --json +``` + +Parse the JSON output to get: `id`, `path`, `context`, `stage`, `feature` + +**Routing is determined automatically:** +- `constitution` → `history/prompts/constitution/` +- Feature stages → `history/prompts/<feature-name>/` +- `general` → `history/prompts/general/` + +## Step 4: Fill ALL Template Placeholders (Analyze→Measure) + +Read the file at `path` from JSON output. Replace ALL {{PLACEHOLDERS}}: + +**YAML Frontmatter:** + +- `{{ID}}` → ID from JSON output +- `{{TITLE}}` → Your generated title +- `{{STAGE}}` → Selected stage +- `{{DATE_ISO}}` → Today (YYYY-MM-DD format) +- `{{SURFACE}}` → "agent" +- `{{MODEL}}` → Your model name or "unspecified" +- `{{FEATURE}}` → Feature from JSON or "none" +- `{{BRANCH}}` → Current branch name +- `{{USER}}` → Git user name or "unknown" +- `{{COMMAND}}` → "/sp.phr" or the command that triggered this +- `{{LABELS}}` → Extract key topics as ["topic1", "topic2", ...] +- `{{LINKS_SPEC}}`, `{{LINKS_TICKET}}`, `{{LINKS_ADR}}`, `{{LINKS_PR}}` → Relevant links or "null" +- `{{FILES_YAML}}` → List files modified/created, one per line with " - " prefix, or " - none" +- `{{TESTS_YAML}}` → List tests run/created, one per line with " - " prefix, or " - none" + +**Content Sections:** + +- `{{PROMPT_TEXT}}` → **THE COMPLETE $ARGUMENTS TEXT VERBATIM** (do NOT truncate to first line!) +- `{{RESPONSE_TEXT}}` → Brief summary of your response (1-3 sentences) +- `{{OUTCOME_IMPACT}}` → What was accomplished +- `{{TESTS_SUMMARY}}` → Tests run or "none" +- `{{FILES_SUMMARY}}` → Files modified or "none" +- `{{NEXT_PROMPTS}}` → Suggested next steps or "none" +- `{{REFLECTION_NOTE}}` → One key insight + +Add short evaluation notes: +- **Failure modes observed:** Specify any issues encountered, such as ambiguous instructions, incomplete metadata, misrouted commands, or unexpected script errors. Example: "Prompt did not capture full user input; metadata field 'LABELS' was left blank." +- **Next experiment to improve prompt quality:** Suggest a concrete action to address the failure mode. Example: "Rephrase prompt to clarify required metadata fields," or "Test with a multi-line user input to ensure full capture." + +**CRITICAL**: `{{PROMPT_TEXT}}` MUST be the FULL multiline user input from $ARGUMENTS above, not just the title or first line. + +## Step 5: Report Completion + +## FORMATTING REQUIREMENTS + +Present results in this exact structure: + +``` +✅ Exchange recorded as PHR-{id} in {context} context +📁 {relative-path-from-repo-root} + +Stage: {stage} +Feature: {feature or "none"} +Files modified: {count} +Tests involved: {count} + +Acceptance Criteria (PASS only if all true) +- Full prompt preserved verbatim (no truncation) +- Stage and routing determined correctly +- Metadata fields populated; missing values noted explicitly +``` + +## ERROR HANDLING + +If create-phr.sh fails: + +1. Display the exact error message from script +2. Explain what went wrong in plain language +3. Provide specific corrective action with commands +4. Do NOT fail silently or hide errors + +## TONE + +Be professional, concise, and action-oriented. Focus on what was accomplished and what's next. + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.plan.md b/.claude/commands/sp.plan.md new file mode 100644 index 0000000000000000000000000000000000000000..a8c233bba5213d2d3bece9aa027efbb05225baef --- /dev/null +++ b/.claude/commands/sp.plan.md @@ -0,0 +1,115 @@ +--- +description: Execute the implementation planning workflow using the plan template to generate design artifacts. +handoffs: + - label: Create Tasks + agent: sp.tasks + prompt: Break the plan into tasks + send: true + - label: Create Checklist + agent: sp.checklist + prompt: Create a checklist for the following domain... +--- + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Outline + +1. **Setup**: Run `.specify/scripts/bash/setup-plan.sh --json` from repo root and parse JSON for FEATURE_SPEC, IMPL_PLAN, SPECS_DIR, BRANCH. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). + +2. **Load context**: Read FEATURE_SPEC and `.specify/memory/constitution.md`. Load IMPL_PLAN template (already copied). + +3. **Execute plan workflow**: Follow the structure in IMPL_PLAN template to: + - Fill Technical Context (mark unknowns as "NEEDS CLARIFICATION") + - Fill Constitution Check section from constitution + - Evaluate gates (ERROR if violations unjustified) + - Phase 0: Generate research.md (resolve all NEEDS CLARIFICATION) + - Phase 1: Generate data-model.md, contracts/, quickstart.md + - Phase 1: Update agent context by running the agent script + - Re-evaluate Constitution Check post-design + +4. **Stop and report**: Command ends after Phase 2 planning. Report branch, IMPL_PLAN path, and generated artifacts. + +## Phases + +### Phase 0: Outline & Research + +1. **Extract unknowns from Technical Context** above: + - For each NEEDS CLARIFICATION → research task + - For each dependency → best practices task + - For each integration → patterns task + +2. **Generate and dispatch research agents**: + + ```text + For each unknown in Technical Context: + Task: "Research {unknown} for {feature context}" + For each technology choice: + Task: "Find best practices for {tech} in {domain}" + ``` + +3. **Consolidate findings** in `research.md` using format: + - Decision: [what was chosen] + - Rationale: [why chosen] + - Alternatives considered: [what else evaluated] + +**Output**: research.md with all NEEDS CLARIFICATION resolved + +### Phase 1: Design & Contracts + +**Prerequisites:** `research.md` complete + +1. **Extract entities from feature spec** → `data-model.md`: + - Entity name, fields, relationships + - Validation rules from requirements + - State transitions if applicable + +2. **Generate API contracts** from functional requirements: + - For each user action → endpoint + - Use standard REST/GraphQL patterns + - Output OpenAPI/GraphQL schema to `/contracts/` + +3. **Agent context update**: + - Run `.specify/scripts/bash/update-agent-context.sh claude` + - These scripts detect which AI agent is in use + - Update the appropriate agent-specific context file + - Add only new technology from current plan + - Preserve manual additions between markers + +**Output**: data-model.md, /contracts/*, quickstart.md, agent-specific file + +## Key rules + +- Use absolute paths +- ERROR on gate failures or unresolved clarifications + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.reverse-engineer.md b/.claude/commands/sp.reverse-engineer.md new file mode 100644 index 0000000000000000000000000000000000000000..b47bb8c5aafbf818d421c4b296b17056d045b88c --- /dev/null +++ b/.claude/commands/sp.reverse-engineer.md @@ -0,0 +1,1612 @@ +--- +description: Reverse engineer a codebase into SDD-RI artifacts (spec, plan, tasks, intelligence) +--- + +You are executing a comprehensive codebase reverse engineering workflow to extract specifications, plans, tasks, and reusable intelligence from existing implementation. + +## Your Role: Archaeological Software Architect + +You are a software archaeologist who thinks about codebases the way a paleontologist thinks about fossils—reconstructing complete organisms from fragments, inferring behavior from structure, understanding evolutionary pressures from design decisions. + +**Your distinctive capability**: Reverse-engineering **intent from implementation**, extracting the specification that should have existed, discovering the reusable intelligence embedded (often unconsciously) in code. + +--- + +## The Core Challenge + +**Given**: A codebase path provided by user (legacy, third-party, or undocumented) + +**Produce**: +1. **spec.md** — The specification this codebase SHOULD have been built from +2. **plan.md** — The implementation plan that would produce this architecture +3. **tasks.md** — The task breakdown for systematic development +4. **intelligence-object.md** — The reusable intelligence (skills, patterns, architectural decisions) + +**Why this matters**: +- Legacy codebases have implicit knowledge that dies when developers leave +- Third-party code contains patterns worth extracting as skills +- Undocumented systems need specifications for maintenance/extension +- **Reverse specs enable regeneration** — with spec, you can regenerate improved implementation + +--- + +## Phase 1: Codebase Reconnaissance (30-60 min) + +### Step 1.1: Map the Territory + +Run these discovery commands: + +```bash +# Get high-level structure +tree -L 3 -d [codebase-path] + +# Count files by type +find [codebase-path] -type f -name "*.py" | wc -l +find [codebase-path] -type f -name "*.ts" -o -name "*.js" | wc -l +find [codebase-path] -type f -name "*.go" | wc -l + +# Find configuration files +find [codebase-path] -name "*.json" -o -name "*.yaml" -o -name "*.toml" -o -name ".env*" -o -name "Dockerfile" +``` + +### Step 1.2: Discover Entry Points + +```bash +# Python entry points +grep -r "if __name__ == '__main__'" [codebase-path] --include="*.py" + +# TypeScript/JavaScript entry points +grep -r "express\(\)\|fastify\(\)\|app.listen" [codebase-path] --include="*.ts" --include="*.js" + +# Go entry points +grep -r "func main()" [codebase-path] --include="*.go" + +# Java entry points +grep -r "public static void main" [codebase-path] --include="*.java" +``` + +### Step 1.3: Analyze Dependencies + +```bash +# Python +cat [codebase-path]/requirements.txt [codebase-path]/setup.py [codebase-path]/pyproject.toml 2>/dev/null + +# Node/TypeScript +cat [codebase-path]/package.json 2>/dev/null + +# Go +cat [codebase-path]/go.mod 2>/dev/null + +# Java +cat [codebase-path]/pom.xml [codebase-path]/build.gradle 2>/dev/null +``` + +### Step 1.4: Assess Test Coverage + +```bash +# Find test files +find [codebase-path] -name "*test*" -o -name "*spec*" | head -20 + +# Identify test frameworks +grep -r "import.*pytest\|unittest\|jest\|mocha\|testing" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -10 +``` + +### Step 1.5: Read Existing Documentation + +```bash +# Find documentation files +find [codebase-path] -name "README*" -o -name "*.md" -o -name "docs" -type d + +# List markdown files +find [codebase-path] -name "*.md" | head -10 +``` + +**Read**: README.md, ARCHITECTURE.md, CONTRIBUTING.md (if they exist) + +--- + +## Phase 2: Deep Analysis (4-6 hours) + +Execute these six analysis dimensions systematically: + +### Dimension 1: Intent Archaeology (2 hours) + +**Goal**: Extract the WHAT and WHY + +#### 1.1 System Purpose Inference + +**Questions to ask yourself**: +- If this codebase disappeared, what would users lose? +- What's the "elevator pitch" for this system? +- What problem is so painful this was built to solve it? + +**Evidence to gather**: +- Read README, comments, docstrings for stated purpose +- Analyze entry points: what operations are exposed? +- Study data models: what entities are central? + +#### 1.2 Functional Requirements Extraction + +```bash +# Find API endpoints/routes +grep -r "route\|@app\|@get\|@post\|@put\|@delete\|router\." [codebase-path] --include="*.py" --include="*.ts" --include="*.js" | head -30 + +# Find public interfaces +grep -r "class.*public\|export class\|export function\|def.*public" [codebase-path] | head -30 + +# Find CLI commands +grep -r "argparse\|cobra\|click\|commander" [codebase-path] --include="*.py" --include="*.go" --include="*.js" | head -20 +``` + +**For each interface discovered**: +- What operation does it perform? +- What inputs does it require? +- What outputs does it produce? +- What side effects occur? + +#### 1.3 Non-Functional Requirements Detection + +**Performance patterns**: +```bash +grep -r "cache\|redis\|memcached\|async\|await\|pool" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | wc -l +``` + +**Security patterns**: +```bash +grep -r "auth\|jwt\|bcrypt\|encrypt\|sanitize\|validate" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | wc -l +``` + +**Reliability patterns**: +```bash +grep -r "retry\|circuit.breaker\|fallback\|timeout" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | wc -l +``` + +**Observability patterns**: +```bash +grep -r "log\|logger\|metric\|trace\|monitor" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | wc -l +``` + +#### 1.4 Constraint Discovery + +**External integrations**: +```bash +# Database connections +grep -r "postgresql\|mysql\|mongodb\|redis\|sqlite" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" + +# External APIs +grep -r "http.get\|requests.post\|fetch\|axios\|http.Client" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -20 + +# Message queues +grep -r "kafka\|rabbitmq\|sqs\|pubsub\|queue" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" +``` + +--- + +### Dimension 2: Architectural Pattern Recognition (1.5 hours) + +**Goal**: Identify the HOW — architectural decisions and design patterns + +#### 2.1 Layering Detection + +```bash +# Look for common layer names +find [codebase-path] -type d -name "*controller*" -o -name "*service*" -o -name "*repository*" -o -name "*domain*" -o -name "*handler*" -o -name "*model*" + +# Check directory structure for layers +ls -la [codebase-path]/ +``` + +**Questions to ask**: +- Is there clear separation of concerns? +- What's the dependency flow? (UI → Service → Data) +- Are layers respected or violated? + +#### 2.2 Design Pattern Identification + +```bash +# Find pattern keywords in code +grep -r "Factory\|Builder\|Singleton\|Adapter\|Strategy\|Observer\|Command\|Decorator" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -20 + +# Find interface/abstract class definitions +grep -r "interface\|abstract class\|Protocol\|ABC" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -20 +``` + +#### 2.3 Architectural Style Classification + +**Check for MVC/MVP/MVVM**: +```bash +find [codebase-path] -type d -name "*view*" -o -name "*controller*" -o -name "*model*" +``` + +**Check for Hexagonal/Clean Architecture**: +```bash +find [codebase-path] -type d -name "*domain*" -o -name "*infrastructure*" -o -name "*application*" -o -name "*adapter*" +``` + +**Check for Event-Driven**: +```bash +grep -r "event\|emit\|publish\|subscribe\|listener\|handler" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | wc -l +``` + +**Check for CQRS**: +```bash +grep -r "command\|query\|CommandHandler\|QueryHandler" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" +``` + +#### 2.4 Data Flow Tracing + +**Pick one representative operation and trace it**: +1. Find entry point (route/handler) +2. Follow to business logic (service/use-case) +3. Trace to data layer (repository/DAO) +4. Document the flow + +--- + +### Dimension 3: Code Structure Decomposition (1 hour) + +**Goal**: Break down implementation into logical task units + +#### 3.1 Module Inventory + +```bash +# List all significant modules (exclude tests) +find [codebase-path] -name "*.py" -o -name "*.ts" -o -name "*.go" | grep -v test | sort + +# Group by domain/feature +ls -d [codebase-path]/*/ | sort +``` + +#### 3.2 Responsibility Assignment + +For each major module/package: +- What's its single responsibility? +- What other modules does it depend on? +- What modules depend on it? +- Could it be extracted as standalone component? + +#### 3.3 Integration Point Mapping + +```bash +# External service calls +grep -rn "http.get\|requests.post\|fetch\|axios\|http.Client" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -20 + +# Database queries +grep -rn "SELECT\|INSERT\|UPDATE\|DELETE\|query\|execute\|find\|create\|save" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -20 + +# Queue/messaging +grep -rn "publish\|subscribe\|send_message\|consume\|produce" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" +``` + +#### 3.4 Cross-Cutting Concern Identification + +**Logging**: +```bash +grep -r "logger\|log\." [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -10 +``` + +**Error Handling**: +```bash +grep -r "try:\|catch\|except\|error\|Error" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -10 +``` + +**Configuration**: +```bash +grep -r "config\|env\|settings\|getenv" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -10 +``` + +--- + +### Dimension 4: Intelligence Extraction (1 hour) + +**Goal**: Extract reusable intelligence — patterns worth encoding as skills + +#### 4.1 Pattern Frequency Analysis + +**Questions to ask**: +- What code patterns repeat 3+ times? +- What decisions are made consistently? +- What best practices are applied systematically? + +**Look for**: +```bash +# Find repeated function/method names +grep -rh "def \|func \|function " [codebase-path] --include="*.py" --include="*.go" --include="*.ts" | sort | uniq -c | sort -rn | head -20 +``` + +#### 4.2 Implicit Expertise Detection + +**Find important comments** (reveal tacit knowledge): +```bash +# Comments with keywords indicating critical knowledge +grep -rn "IMPORTANT:\|NOTE:\|WARNING:\|SECURITY:\|TODO:\|HACK:\|FIXME:" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" | head -30 +``` + +#### 4.3 Architecture Decision Extraction + +```bash +# Look for ADR-style documents +find [codebase-path] -name "*decision*" -o -name "*ADR*" -o -name "architecture.md" + +# Look for significant comments about choices +grep -rn "chosen because\|decided to\|alternative\|tradeoff" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" --include="*.md" +``` + +#### 4.4 Skill Candidate Identification + +**Identify patterns worth encoding as Persona + Questions + Principles**: + +Common candidates: +- Error handling strategy (if consistent across modules) +- API design patterns (REST conventions, response formats) +- Data validation approach (schema validation patterns) +- Security patterns (auth middleware, input sanitization) +- Performance optimization (caching strategies, query optimization) + +**For each candidate**: +1. Extract the pattern (what's done consistently) +2. Infer the reasoning (why this approach) +3. Identify decision points (what questions guide choices) +4. Formulate as P+Q+P skill + +--- + +### Dimension 5: Gap Analysis & Technical Debt (0.5 hours) + +**Goal**: Identify what SHOULD be there but is missing + +#### 5.1 Missing Documentation + +```bash +# Check for API documentation +find [codebase-path] -name "openapi.*" -o -name "swagger.*" -o -name "api.md" + +# Check for data model docs +find [codebase-path] -name "schema.*" -o -name "models.md" -o -name "ERD.*" +``` + +#### 5.2 Testing Gaps + +```bash +# Calculate test file ratio +total_files=$(find [codebase-path] -name "*.py" -o -name "*.ts" -o -name "*.go" | wc -l) +test_files=$(find [codebase-path] -name "*test*" -o -name "*spec*" | wc -l) +echo "Test coverage: $test_files / $total_files files" +``` + +**If coverage tools available**: +```bash +# Python +cd [codebase-path] && pytest --cov=. --cov-report=term 2>/dev/null + +# TypeScript/JavaScript +cd [codebase-path] && npm test -- --coverage 2>/dev/null + +# Go +cd [codebase-path] && go test -cover ./... 2>/dev/null +``` + +#### 5.3 Security Audit + +**Potential security issues**: +```bash +# Code injection risks +grep -rn "eval\|exec\|system\|shell" [codebase-path] --include="*.py" --include="*.js" + +# Hardcoded secrets +grep -rn "password.*=.*\"\|api_key.*=.*\"\|secret.*=.*\"" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" + +# SQL injection risks +grep -rn "execute.*%\|query.*format\|SELECT.*+" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" +``` + +#### 5.4 Observability Gaps + +**Check for**: +- Structured logging (JSON format) +- Metrics collection (Prometheus, StatsD) +- Distributed tracing (OpenTelemetry, Jaeger) +- Health check endpoints + +```bash +# Structured logging +grep -r "json\|structured" [codebase-path] --include="*log*" + +# Metrics +grep -r "prometheus\|statsd\|metric" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" + +# Tracing +grep -r "trace\|span\|opentelemetry" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" + +# Health checks +grep -rn "/health\|/ready\|/alive" [codebase-path] --include="*.py" --include="*.ts" --include="*.go" +``` + +--- + +### Dimension 6: Regeneration Blueprint (30 min) + +**Goal**: Ensure specs can regenerate this system (or improved version) + +#### 6.1 Specification Completeness Check + +**Ask yourself**: +- Can another developer read my spec and build equivalent system? +- Are all architectural decisions documented with rationale? +- Are success criteria measurable and testable? + +#### 6.2 Reusability Assessment + +**Identify**: +- What components are reusable as-is? +- What patterns should become skills? +- What should be generalized vs kept specific? + +#### 6.3 Improvement Opportunities + +**If rebuilding from scratch, what would you change?**: +- Technical debt to avoid replicating +- Modern alternatives to outdated dependencies +- Missing features to add +- Architecture improvements (event sourcing, CQRS, etc.) + +--- + +## Phase 3: Synthesis & Documentation (2-3 hours) + +### Output 1: spec.md + +Create comprehensive specification with these sections: + +```markdown +# [System Name] Specification + +**Version**: 1.0 (Reverse Engineered) +**Date**: [Date] +**Source**: [Codebase path] + +## Problem Statement + +[What problem does this solve? Inferred from code purpose] + +## System Intent + +**Target Users**: [Who uses this system?] + +**Core Value Proposition**: [Why this exists instead of alternatives?] + +**Key Capabilities**: +- [Capability 1 from functional analysis] +- [Capability 2] +- [Capability 3] + +## Functional Requirements + +### Requirement 1: [Operation Name] +- **What**: [What this operation does] +- **Why**: [Business justification - inferred] +- **Inputs**: [Required data/parameters] +- **Outputs**: [Results produced] +- **Side Effects**: [Database changes, external calls, etc.] +- **Success Criteria**: [How to verify correct behavior] + +[Repeat for all major operations discovered] + +## Non-Functional Requirements + +### Performance +[Observed patterns: caching, async, connection pooling] +**Target**: [If metrics found in code/comments] + +### Security +[Auth mechanisms, input validation, encryption observed] +**Standards**: [Compliance patterns detected] + +### Reliability +[Retry logic, circuit breakers, graceful degradation] +**SLA**: [If defined in code/comments] + +### Scalability +[Horizontal/vertical scaling patterns observed] +**Load Capacity**: [If defined] + +### Observability +[Logging, metrics, tracing implemented] +**Monitoring**: [What's monitored] + +## System Constraints + +### External Dependencies +- [Database: PostgreSQL 14+] +- [Cache: Redis 6+] +- [Message Queue: RabbitMQ] +- [External API: Stripe for payments] + +### Data Formats +- [JSON for API requests/responses] +- [Protocol Buffers for internal service communication] + +### Deployment Context +- [Docker containers on Kubernetes] +- [Environment: AWS EKS] + +### Compliance Requirements +- [GDPR: Personal data handling patterns observed] +- [PCI-DSS: Payment data security patterns] + +## Non-Goals & Out of Scope + +**Explicitly excluded** (inferred from missing implementation): +- [Feature X: No evidence in codebase] +- [Integration Y: Stub code suggests planned but not implemented] + +## Known Gaps & Technical Debt + +### Gap 1: [Issue Name] +- **Issue**: [Specific problem] +- **Evidence**: [file:line reference] +- **Impact**: [Consequences] +- **Recommendation**: [How to fix] + +[Continue for all gaps] + +## Success Criteria + +### Functional Success +- [ ] All API endpoints return correct responses for valid inputs +- [ ] All error cases handled gracefully +- [ ] All integrations with external systems work correctly + +### Non-Functional Success +- [ ] Response time < [X]ms for [operation] +- [ ] System handles [Y] concurrent users +- [ ] [Z]% test coverage achieved +- [ ] Zero critical security vulnerabilities + +## Acceptance Tests + +### Test 1: [Scenario] +**Given**: [Initial state] +**When**: [Action] +**Then**: [Expected outcome] + +[Continue for critical scenarios] +``` + +--- + +### Output 2: plan.md + +Create implementation plan: + +```markdown +# [System Name] Implementation Plan + +**Version**: 1.0 (Reverse Engineered) +**Date**: [Date] + +## Architecture Overview + +**Architectural Style**: [MVC, Hexagonal, Event-Driven, etc.] + +**Reasoning**: [Why this pattern fits the requirements - inferred from structure] + +**Diagram** (ASCII): +``` +[Visual representation of architecture] +``` + +## Layer Structure + +### Layer 1: [Presentation/API Layer] +- **Responsibility**: [Handle HTTP requests, input validation, response formatting] +- **Components**: + - [controllers/]: Request handlers + - [middleware/]: Auth, logging, error handling +- **Dependencies**: → Service Layer +- **Technology**: [Flask, Express, Gin] + +### Layer 2: [Business Logic/Service Layer] +- **Responsibility**: [Core business rules, orchestration] +- **Components**: + - [services/]: Business logic implementations + - [domain/]: Domain models +- **Dependencies**: → Data Layer, → External Services +- **Technology**: [Python classes, TypeScript services] + +### Layer 3: [Data/Persistence Layer] +- **Responsibility**: [Data access, persistence] +- **Components**: + - [repositories/]: Data access objects + - [models/]: ORM models +- **Dependencies**: → Database +- **Technology**: [SQLAlchemy, Prisma, GORM] + +## Design Patterns Applied + +### Pattern 1: [Factory Method] +- **Location**: [services/user_factory.py] +- **Purpose**: [Create different user types based on role] +- **Implementation**: [Brief code example or description] + +### Pattern 2: [Repository Pattern] +- **Location**: [repositories/] +- **Purpose**: [Abstract data access from business logic] +- **Implementation**: [Brief description] + +[Continue for all significant patterns] + +## Data Flow + +### Request Flow (Synchronous) +1. **API Layer** receives HTTP request +2. **Validation Middleware** validates input schema +3. **Auth Middleware** verifies authentication +4. **Controller** routes to appropriate service +5. **Service Layer** executes business logic +6. **Repository** persists/retrieves data +7. **Service** formats response +8. **Controller** returns HTTP response + +### Event Flow (Asynchronous) - if applicable +1. **Event Producer** emits event to queue +2. **Message Broker** routes to subscribers +3. **Event Handler** processes asynchronously +4. **Service** updates state +5. **Event** published for downstream consumers + +## Technology Stack + +### Language & Runtime +- **Primary**: [Python 3.11] +- **Rationale**: [Inferred - rapid development, rich ecosystem] + +### Web Framework +- **Choice**: [Flask 2.x] +- **Rationale**: [Lightweight, flexible, good for APIs] + +### Database +- **Choice**: [PostgreSQL 14] +- **Rationale**: [ACID compliance, JSON support, reliability] + +### Caching +- **Choice**: [Redis 6] +- **Rationale**: [Performance, pub/sub capabilities] + +### Message Queue - if applicable +- **Choice**: [RabbitMQ] +- **Rationale**: [Reliability, routing flexibility] + +### Testing +- **Choice**: [pytest, Jest] +- **Rationale**: [Rich ecosystem, good DX] + +### Deployment +- **Choice**: [Docker + Kubernetes] +- **Rationale**: [Portability, scalability, cloud-native] + +## Module Breakdown + +### Module: [authentication] +- **Purpose**: [User auth, session management] +- **Key Classes**: [AuthService, JWTHandler, UserRepository] +- **Dependencies**: [bcrypt, PyJWT, database] +- **Complexity**: Medium + +### Module: [orders] +- **Purpose**: [Order processing, inventory] +- **Key Classes**: [OrderService, OrderRepository, InventoryService] +- **Dependencies**: [payment, notification, database] +- **Complexity**: High + +[Continue for all major modules] + +## Regeneration Strategy + +### Option 1: Specification-First Rebuild +1. Start with spec.md (intent and requirements) +2. Apply extracted skills (error handling, API patterns) +3. Implement with modern best practices (fill gaps) +4. Test-driven development using acceptance criteria + +**Timeline**: [Estimate based on codebase size] + +### Option 2: Incremental Refactoring +1. **Strangler Pattern**: New implementation shadows old +2. **Feature Flags**: Gradual traffic shift +3. **Parallel Run**: Validate equivalence +4. **Cutover**: Complete migration + +**Timeline**: [Estimate based on risk tolerance] + +## Improvement Opportunities + +### Technical Improvements +- [ ] **Replace [Old Library]** with [Modern Alternative] + - **Rationale**: [Better performance, active maintenance] + - **Effort**: Medium + +- [ ] **Add [Missing Feature]** + - **Addresses Gap**: [Specific gap from analysis] + - **Effort**: High + +### Architectural Improvements +- [ ] **Introduce Event Sourcing** + - **Enables**: Audit trail, event replay, temporal queries + - **Effort**: High + +- [ ] **Implement CQRS** + - **Separates**: Read and write models for optimization + - **Effort**: Medium + +### Operational Improvements +- [ ] **CI/CD Pipeline**: Automated testing, deployment +- [ ] **Infrastructure as Code**: Terraform, Pulumi +- [ ] **Monitoring Dashboards**: Grafana, DataDog +- [ ] **GitOps Deployment**: ArgoCD, Flux +``` + +--- + +### Output 3: tasks.md + +Create actionable task breakdown: + +```markdown +# [System Name] Implementation Tasks + +**Version**: 1.0 (Reverse Engineered) +**Date**: [Date] + +## Overview + +This task breakdown represents how to rebuild this system from scratch using the specification and plan. + +**Estimated Timeline**: [X weeks based on team size] +**Team Size**: [Assumed team composition] + +--- + +## Phase 1: Core Infrastructure + +**Timeline**: Week 1 +**Dependencies**: None + +### Task 1.1: Project Setup +- [ ] Initialize repository with [language] project structure +- [ ] Configure build system: [tool] +- [ ] Setup dependency management: [requirements.txt, package.json, go.mod] +- [ ] Configure linting: [flake8, eslint, golangci-lint] +- [ ] Setup pre-commit hooks +- [ ] Create initial README + +### Task 1.2: Configuration System +- [ ] Implement environment-based configuration +- [ ] Support: Environment variables, config files, secrets management +- [ ] Validation: Config schema validation on startup +- [ ] Defaults: Sensible defaults for local development + +### Task 1.3: Logging Infrastructure +- [ ] Setup structured logging (JSON format) +- [ ] Configure log levels: DEBUG, INFO, WARN, ERROR +- [ ] Add request correlation IDs +- [ ] Integrate with [logging destination] + +--- + +## Phase 2: Data Layer + +**Timeline**: Week 2-3 +**Dependencies**: Phase 1 complete + +### Task 2.1: Database Design +- [ ] Design schema for entities: [User, Order, Product] +- [ ] Define relationships: [one-to-many, many-to-many] +- [ ] Add indexes for performance +- [ ] Document schema in [ERD tool] + +### Task 2.2: ORM Setup +- [ ] Install and configure [SQLAlchemy, Prisma, GORM] +- [ ] Create model classes for all entities +- [ ] Implement relationships +- [ ] Add validation rules + +### Task 2.3: Migration System +- [ ] Setup migration tool: [Alembic, Flyway, migrate] +- [ ] Create initial migration +- [ ] Document migration workflow +- [ ] Add migration tests + +### Task 2.4: Repository Layer +- [ ] Implement repository pattern for each entity +- [ ] CRUD operations: Create, Read, Update, Delete +- [ ] Query methods: FindByX, ListByY +- [ ] Transaction management + +--- + +## Phase 3: Business Logic Layer + +**Timeline**: Week 4-6 +**Dependencies**: Phase 2 complete + +### Task 3.1: [Feature A - e.g., User Authentication] +- [ ] **Input validation**: Username/email, password strength +- [ ] **Processing logic**: + - Hash password with bcrypt + - Generate JWT token + - Create user session +- [ ] **Error handling**: Duplicate user, invalid credentials +- [ ] **Output formatting**: User object + token + +### Task 3.2: [Feature B - e.g., Order Processing] +- [ ] **Input validation**: Order items, quantities, payment info +- [ ] **Processing logic**: + - Validate inventory availability + - Calculate totals, taxes, shipping + - Process payment via [Stripe] + - Update inventory + - Send confirmation +- [ ] **Error handling**: Insufficient inventory, payment failed +- [ ] **Output formatting**: Order confirmation + +[Continue for all major features discovered] + +--- + +## Phase 4: API/Interface Layer + +**Timeline**: Week 7-8 +**Dependencies**: Phase 3 complete + +### Task 4.1: API Contract Definition +- [ ] Design RESTful endpoints: [list all routes] +- [ ] Define request schemas (OpenAPI/JSON Schema) +- [ ] Define response schemas +- [ ] Document error responses + +### Task 4.2: Controller Implementation +- [ ] Implement route handlers +- [ ] Input validation middleware +- [ ] Auth middleware integration +- [ ] Error handling middleware + +### Task 4.3: API Documentation +- [ ] Generate OpenAPI/Swagger docs +- [ ] Add usage examples +- [ ] Document authentication flow +- [ ] Create Postman collection + +--- + +## Phase 5: Cross-Cutting Concerns + +**Timeline**: Week 9 +**Dependencies**: Phase 4 complete + +### Task 5.1: Authentication & Authorization +- [ ] Implement JWT-based auth +- [ ] Role-based access control (RBAC) +- [ ] Token refresh mechanism +- [ ] Session management + +### Task 5.2: Observability +- [ ] **Metrics**: Instrument with [Prometheus, StatsD] + - Request rate, latency, error rate + - Business metrics: Orders/min, Revenue/hour +- [ ] **Tracing**: Integrate [OpenTelemetry, Jaeger] + - Distributed tracing across services + - Performance bottleneck detection +- [ ] **Health Checks**: + - `/health` - Liveness probe + - `/ready` - Readiness probe + - `/metrics` - Prometheus endpoint + +### Task 5.3: Error Handling +- [ ] Global error handler +- [ ] Structured error responses +- [ ] Error logging with stack traces +- [ ] Error monitoring integration + +### Task 5.4: Security Hardening +- [ ] Input sanitization +- [ ] SQL injection prevention +- [ ] XSS protection +- [ ] CSRF protection +- [ ] Rate limiting +- [ ] Security headers + +--- + +## Phase 6: External Integrations + +**Timeline**: Week 10 +**Dependencies**: Phase 4 complete + +### Task 6.1: [Integration A - e.g., Payment Provider] +- [ ] API client implementation +- [ ] Retry logic with exponential backoff +- [ ] Circuit breaker pattern +- [ ] Webhook handling +- [ ] Error recovery + +### Task 6.2: [Integration B - e.g., Email Service] +- [ ] Template system +- [ ] Async sending (queue-based) +- [ ] Delivery tracking +- [ ] Bounce handling + +[Continue for all external integrations] + +--- + +## Phase 7: Testing & Quality + +**Timeline**: Week 11-12 +**Dependencies**: All phases complete + +### Task 7.1: Unit Tests +- [ ] **Coverage target**: 80%+ +- [ ] **Framework**: [pytest, Jest, testing package] +- [ ] Test all service methods +- [ ] Test all repositories +- [ ] Mock external dependencies + +### Task 7.2: Integration Tests +- [ ] API endpoint tests +- [ ] Database integration tests +- [ ] External service integration tests (with mocks) +- [ ] Test database setup/teardown + +### Task 7.3: End-to-End Tests +- [ ] Critical user journeys: + - User registration → Login → Purchase → Logout + - [Other critical flows] +- [ ] Test against staging environment +- [ ] Automated with [Selenium, Playwright, Cypress] + +### Task 7.4: Performance Testing +- [ ] Load testing: [k6, Locust, JMeter] +- [ ] Stress testing: Find breaking points +- [ ] Endurance testing: Memory leaks, connection exhaustion +- [ ] Document performance baselines + +### Task 7.5: Security Testing +- [ ] OWASP Top 10 vulnerability scan +- [ ] Dependency vulnerability scan +- [ ] Penetration testing (if budget allows) +- [ ] Security code review + +--- + +## Phase 8: Deployment & Operations + +**Timeline**: Week 13 +**Dependencies**: Phase 7 complete + +### Task 8.1: Containerization +- [ ] Write production Dockerfile +- [ ] Multi-stage build for optimization +- [ ] Non-root user for security +- [ ] Health check in container + +### Task 8.2: Kubernetes Manifests +- [ ] Deployment manifest +- [ ] Service manifest +- [ ] ConfigMap for configuration +- [ ] Secret for sensitive data +- [ ] Ingress for routing +- [ ] HorizontalPodAutoscaler + +### Task 8.3: CI/CD Pipeline +- [ ] GitHub Actions / GitLab CI / Jenkins +- [ ] Stages: Lint → Test → Build → Deploy +- [ ] Automated testing in pipeline +- [ ] Deployment to staging on merge to main +- [ ] Manual approval for production + +### Task 8.4: Monitoring & Alerting +- [ ] Setup Grafana dashboards +- [ ] Configure alerts: Error rate spikes, latency increases +- [ ] On-call rotation setup +- [ ] Runbook documentation + +### Task 8.5: Documentation +- [ ] Architecture documentation +- [ ] API documentation +- [ ] Deployment runbook +- [ ] Troubleshooting guide +- [ ] Onboarding guide for new developers + +--- + +## Phase 9: Post-Launch + +**Timeline**: Ongoing +**Dependencies**: Production deployment + +### Task 9.1: Monitoring & Incident Response +- [ ] Monitor production metrics +- [ ] Respond to alerts +- [ ] Conduct post-mortems for incidents +- [ ] Iterate on improvements + +### Task 9.2: Feature Iterations +- [ ] Prioritize feature backlog +- [ ] Implement high-priority features +- [ ] A/B testing for new features +- [ ] Gather user feedback + +### Task 9.3: Technical Debt Reduction +- [ ] Address P0 gaps: [from gap analysis] +- [ ] Address P1 gaps: [from gap analysis] +- [ ] Refactor based on learnings +- [ ] Update documentation +``` + +--- + +### Output 4: intelligence-object.md + +Create reusable intelligence extraction: + +```markdown +# [System Name] Reusable Intelligence + +**Version**: 1.0 (Extracted from Codebase) +**Date**: [Date] + +## Overview + +This document captures the reusable intelligence embedded in the codebase—patterns, decisions, and expertise worth preserving and applying to future projects. + +--- + +## Extracted Skills + +### Skill 1: [API Error Handling Strategy] + +**Persona**: You are a backend engineer designing resilient APIs that fail gracefully and provide actionable error information. + +**Questions to ask before implementing error handling**: +- What error categories exist in this system? (Client errors 4xx, server errors 5xx, network errors) +- Should errors be retryable or terminal? +- What information helps debugging without exposing security details? +- How do errors propagate through layers (API → Service → Data)? + +**Principles**: +- **Never expose internal details**: Stack traces in development only, generic messages in production +- **Consistent error schema**: All errors follow same structure `{error: {code, message, details, request_id}}` +- **Log everything, return selectively**: Full context in logs, safe subset in API response +- **Use HTTP status codes correctly**: 400 bad request, 401 unauthorized, 404 not found, 500 internal error +- **Provide request IDs**: Enable correlation between client errors and server logs + +**Implementation Pattern** (observed in codebase): +```python +# Extracted from: [file: src/api/errors.py, lines 15-45] +class APIError(Exception): + """Base exception for all API errors""" + + def __init__(self, code: str, message: str, status: int = 400, details: dict = None): + self.code = code + self.message = message + self.status = status + self.details = details or {} + + def to_response(self): + """Convert to JSON response format""" + return { + "error": { + "code": self.code, + "message": self.message, + "details": self.details, + "request_id": get_request_id(), + "timestamp": datetime.utcnow().isoformat() + } + }, self.status + +# Usage pattern: +if not user: + raise APIError( + code="USER_NOT_FOUND", + message="User with specified ID does not exist", + status=404, + details={"user_id": user_id} + ) +``` + +**When to apply**: +- All API endpoints +- Background jobs that report status +- Any system with external-facing interfaces + +**Contraindications**: +- Internal services (may prefer exceptions without HTTP semantics) +- Real-time systems (error objects may be too heavy) + +--- + +### Skill 2: [Database Connection Management] + +**Persona**: You are a backend engineer optimizing database performance through connection pooling and lifecycle management. + +**Questions to ask before implementing database access**: +- What's the connection lifecycle? (Per-request, per-application, pooled) +- How many concurrent connections does the application need? +- What happens on connection failure? (Retry, circuit breaker, fail fast) +- Should connections be long-lived or short-lived? + +**Principles**: +- **Connection pooling is mandatory**: Never create connection per request (overhead) +- **Pool size = 2 * CPU cores** (starting point, tune based on load) +- **Idle timeout prevents resource leaks**: Close unused connections after [X] minutes +- **Health checks detect stale connections**: Validate before use, not during query +- **Graceful degradation**: Circuit breaker pattern when database unavailable + +**Implementation Pattern** (observed in codebase): +```python +# Extracted from: [file: src/db/connection.py, lines 20-55] +from sqlalchemy import create_engine, pool + +# Connection pool configuration +engine = create_engine( + DATABASE_URL, + poolclass=pool.QueuePool, + pool_size=10, # Max connections in pool + max_overflow=20, # Additional connections beyond pool_size + pool_timeout=30, # Seconds to wait for connection + pool_recycle=3600, # Recycle connections after 1 hour + pool_pre_ping=True, # Test connection before using + echo=False # Don't log SQL (production) +) + +# Context manager for connection lifecycle +@contextmanager +def get_db_session(): + """Provide transactional scope around operations""" + session = Session(bind=engine) + try: + yield session + session.commit() + except Exception: + session.rollback() + raise + finally: + session.close() + +# Usage pattern: +with get_db_session() as session: + user = session.query(User).filter_by(id=user_id).first() + # Connection automatically returned to pool on context exit +``` + +**When to apply**: +- All database-backed applications +- Services with moderate-to-high traffic +- Long-running applications (not serverless functions) + +**Contraindications**: +- Serverless/FaaS (use connection per invocation) +- Very low-traffic applications (overhead not justified) + +--- + +### Skill 3: [Input Validation Strategy] + +**Persona**: You are a security-focused engineer preventing injection attacks and data corruption through systematic input validation. + +**Questions to ask before implementing validation**: +- What are valid values for each input? (type, range, format, length) +- Where does validation occur? (Client, API layer, business logic, database) +- What happens on validation failure? (400 error with details, silent rejection, sanitization) +- Are there domain-specific validation rules? (email format, credit card format, etc.) + +**Principles**: +- **Validate at boundaries**: API layer validates all external input +- **Whitelist over blacklist**: Define allowed patterns, not forbidden ones +- **Fail loudly on invalid input**: Return clear error messages (in dev/test), generic in prod +- **Type validation first**: Check types before business rules +- **Schema-based validation**: Use JSON Schema, Pydantic, Joi for declarative validation + +**Implementation Pattern** (observed in codebase): +```python +# Extracted from: [file: src/api/validators.py, lines 10-60] +from pydantic import BaseModel, EmailStr, validator + +class CreateUserRequest(BaseModel): + """Validation schema for user creation""" + email: EmailStr # Email format validation + username: str + password: str + age: int + + @validator('username') + def username_alphanumeric(cls, v): + """Username must be alphanumeric""" + if not v.isalnum(): + raise ValueError('Username must contain only letters and numbers') + if len(v) < 3 or len(v) > 20: + raise ValueError('Username must be 3-20 characters') + return v + + @validator('password') + def password_strength(cls, v): + """Password must meet strength requirements""" + if len(v) < 8: + raise ValueError('Password must be at least 8 characters') + if not any(c.isupper() for c in v): + raise ValueError('Password must contain uppercase letter') + if not any(c.isdigit() for c in v): + raise ValueError('Password must contain digit') + return v + + @validator('age') + def age_range(cls, v): + """Age must be reasonable""" + if v < 13 or v > 120: + raise ValueError('Age must be between 13 and 120') + return v + +# Usage in API endpoint: +@app.post("/users") +def create_user(request: CreateUserRequest): # Automatic validation + # If we reach here, all validation passed + user = UserService.create(request.dict()) + return user.to_dict() +``` + +**When to apply**: +- All API endpoints +- All user input (forms, file uploads, etc.) +- Configuration parsing +- External data imports + +--- + +[Continue with more skills extracted from codebase...] + +--- + +## Architecture Decision Records (Inferred) + +### ADR-001: Choice of [PostgreSQL over MongoDB] + +**Status**: Accepted (inferred from implementation) + +**Context**: +The system requires: +- ACID transactions for order processing +- Complex relational queries (joins across users, orders, products) +- Data integrity guarantees +- Mature ecosystem and tooling + +**Decision**: Use PostgreSQL as primary database + +**Rationale** (inferred from code patterns): +1. **Evidence 1**: Heavy use of foreign key constraints suggests relational integrity is critical + - Location: [src/db/models.py, lines 45-120] + - Pattern: All entities have explicit FK relationships + +2. **Evidence 2**: Transaction handling in order processing suggests ACID requirements + - Location: [src/services/order_service.py, lines 200-250] + - Pattern: Multiple updates wrapped in single transaction + +3. **Evidence 3**: Complex JOIN queries suggest relational model fits domain + - Location: [src/repositories/order_repository.py, lines 80-150] + - Pattern: Multi-table joins for order + user + product data + +**Consequences**: + +**Positive**: +- Strong data consistency guarantees +- Rich query capabilities (window functions, CTEs) +- JSON support for semi-structured data (best of both worlds) +- Excellent tool ecosystem (pgAdmin, monitoring, backups) + +**Negative**: +- Vertical scaling limits (eventual) +- Schema migrations require planning +- Not ideal for unstructured data + +**Alternatives Considered** (inferred): + +**MongoDB**: +- **Rejected because**: Need for transactions and complex joins +- **Evidence**: No document-oriented patterns in codebase + +**MySQL**: +- **Rejected because**: PostgreSQL's superior JSON and full-text search +- **Could have worked**: Similar feature set for this use case + +--- + +### ADR-002: [JWT-based Authentication over Session Cookies] + +**Status**: Accepted (inferred from implementation) + +**Context**: +The system needs: +- Stateless authentication (for horizontal scaling) +- Mobile app support (not browser-only) +- Microservices architecture (shared auth across services) + +**Decision**: Use JWT tokens for authentication + +**Rationale** (inferred from code patterns): +1. **Evidence 1**: No session storage implementation found + - Location: Absence of Redis/Memcached session store + - Pattern: No session management code + +2. **Evidence 2**: Token-based auth middleware + - Location: [src/middleware/auth.py, lines 10-50] + - Pattern: JWT decoding and validation + +3. **Evidence 3**: Token refresh endpoint + - Location: [src/api/auth.py, lines 100-130] + - Pattern: Refresh token rotation + +**Consequences**: + +**Positive**: +- Stateless (no server-side session storage) +- Scales horizontally (no session affinity) +- Works across domains (CORS-friendly) +- Mobile-app compatible + +**Negative**: +- Cannot revoke tokens before expiry (mitigated with short TTL + refresh tokens) +- Larger than session cookies (JWT payload in every request) +- Vulnerable if secret key compromised + +**Mitigation Strategies** (observed): +- Short access token TTL (15 minutes) +- Refresh token rotation +- Token blacklist for logout (stored in Redis) + +--- + +[Continue with more ADRs...] + +--- + +## Code Patterns & Conventions + +### Pattern 1: Repository Pattern for Data Access + +**Observed in**: All data layer modules + +**Structure**: +```python +class UserRepository: + """Abstract data access for User entity""" + + def find_by_id(self, user_id: int) -> Optional[User]: + """Find user by ID""" + pass + + def find_by_email(self, email: str) -> Optional[User]: + """Find user by email""" + pass + + def create(self, user_data: dict) -> User: + """Create new user""" + pass + + def update(self, user_id: int, updates: dict) -> User: + """Update existing user""" + pass + + def delete(self, user_id: int) -> bool: + """Soft-delete user""" + pass +``` + +**Benefits**: +- Decouples business logic from data access +- Testable (can mock repositories) +- Swappable implementations (SQL → NoSQL) + +**When to apply**: All entity persistence + +--- + +### Pattern 2: Service Layer for Business Logic + +**Observed in**: All business logic modules + +**Structure**: +```python +class OrderService: + """Business logic for order processing""" + + def __init__(self, order_repo, inventory_service, payment_service): + self.order_repo = order_repo + self.inventory_service = inventory_service + self.payment_service = payment_service + + def create_order(self, user_id: int, items: List[OrderItem]) -> Order: + """ + Create order with inventory validation and payment processing + + Steps: + 1. Validate inventory availability + 2. Calculate totals + 3. Process payment + 4. Create order record + 5. Update inventory + 6. Send confirmation + """ + # Orchestration logic here + pass +``` + +**Benefits**: +- Encapsulates business rules +- Coordinates multiple repositories/services +- Transactional boundary + +**When to apply**: All complex business operations + +--- + +## Lessons Learned + +### What Worked Well + +1. **Clear layer separation** + - Controllers stayed thin (routing only) + - Services contained business logic + - Repositories isolated data access + - **Benefit**: Easy to test, easy to reason about + +2. **Comprehensive input validation** + - Schema-based validation at API boundary + - Early failure with clear error messages + - **Benefit**: Prevented data corruption, improved debugging + +3. **Structured logging** + - JSON format with correlation IDs + - Consistent log levels + - **Benefit**: Effective debugging in production + +### What Could Be Improved + +1. **Missing integration tests** + - Lots of unit tests, few integration tests + - **Impact**: Bugs in component interactions not caught early + - **Recommendation**: Add integration test suite + +2. **Inconsistent error handling** + - Some modules use custom exceptions, others use generic + - **Impact**: Harder to handle errors consistently + - **Recommendation**: Standardize on error handling strategy + +3. **Undocumented API contracts** + - No OpenAPI/Swagger documentation + - **Impact**: Frontend developers had to read code + - **Recommendation**: Generate API docs from code + +### What to Avoid in Future Projects + +1. **Hardcoded configuration** + - Some settings hardcoded instead of environment variables + - **Why bad**: Requires code changes for deployment differences + - **Alternative**: 12-factor app configuration + +2. **Tight coupling to external services** + - Direct API calls without abstraction layer + - **Why bad**: Hard to swap providers, hard to test + - **Alternative**: Adapter pattern for external integrations + +3. **Missing observability** + - No metrics, basic logging only + - **Why bad**: Blind to production issues + - **Alternative**: Metrics + tracing + structured logs from day 1 + +--- + +## Reusability Assessment + +### Components Reusable As-Is + +1. **Error handling framework** → Portable to any API project +2. **Database connection pooling** → Portable to any DB-backed service +3. **JWT authentication middleware** → Portable to any auth scenario +4. **Input validation schemas** → Patterns reusable, specifics domain-dependent + +### Patterns Worth Generalizing + +1. **Repository pattern** → Create skill/template for any entity +2. **Service orchestration** → Create skill for multi-step business logic +3. **API error responses** → Create skill for consistent error handling + +### Domain-Specific (Not Reusable) + +1. **Order processing logic** → Specific to e-commerce domain +2. **Inventory management** → Specific to this business +3. **Payment integration** → Specific to Stripe, but pattern reusable +``` + +--- + +## Final Validation Checklist + +Before submitting outputs, verify: + +- [ ] **spec.md is complete**: Can regenerate system from spec alone? +- [ ] **plan.md is coherent**: Does architecture make sense given requirements? +- [ ] **tasks.md is actionable**: Can team execute without additional guidance? +- [ ] **intelligence-object.md is reusable**: Can skills apply to other projects? +- [ ] **All files cross-reference**: Spec → Plan → Tasks flow logically? +- [ ] **Evidence provided**: All claims backed by code locations (file:line)? +- [ ] **Gaps identified**: Technical debt and improvements documented? +- [ ] **Regeneration viable**: Could you rebuild this system better with these artifacts? + +--- + +## Self-Monitoring: Anti-Convergence for Archaeologists + +**You tend to converge toward**: +- ✅ Surface-level analysis (reading code without understanding intent) +- ✅ Feature enumeration (listing WHAT without inferring WHY) +- ✅ Copy-paste specs (documenting existing vs imagining ideal) +- ✅ Generic patterns (not extracting codebase-specific intelligence) + +**Activate reasoning by asking**: +- "If I rewrote this from scratch, would my spec produce equivalent system?" +- "What tacit knowledge is embedded in this code that isn't written down?" +- "Why did the original developers make these specific choices?" +- "What would I do differently if building this today?" + +**Your reverse engineering succeeds when**: +- Spec is complete enough to regenerate system +- Plan reveals architectural reasoning, not just structure +- Tasks are actionable for new team unfamiliar with codebase +- Intelligence extracted is reusable beyond this specific system +- Gaps identified with clear remediation path +- You can articulate WHY decisions were made, not just WHAT was implemented + +--- + +## Output Location + +Save all artifacts to: +``` +[codebase-path]/docs/reverse-engineered/ +├── spec.md +├── plan.md +├── tasks.md +└── intelligence-object.md +``` + +Or user-specified location. + +--- + +**Execute this reverse engineering workflow with reasoning mode activated. Your goal: extract the implicit knowledge from code into explicit specifications that enable regeneration and improvement.** + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.specify.md b/.claude/commands/sp.specify.md new file mode 100644 index 0000000000000000000000000000000000000000..cc2f46b78903c7b36bf43aa80c1a5950ab67477e --- /dev/null +++ b/.claude/commands/sp.specify.md @@ -0,0 +1,284 @@ +--- +description: Create or update the feature specification from a natural language feature description. +handoffs: + - label: Build Technical Plan + agent: sp.plan + prompt: Create a plan for the spec. I am building with... + - label: Clarify Spec Requirements + agent: sp.clarify + prompt: Clarify specification requirements + send: true +--- + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Outline + +The text the user typed after `/sp.specify` in the triggering message **is** the feature description. Assume you always have it available in this conversation even if `$ARGUMENTS` appears literally below. Do not ask the user to repeat it unless they provided an empty command. + +Given that feature description, do this: + +1. **Generate a concise short name** (2-4 words) for the branch: + - Analyze the feature description and extract the most meaningful keywords + - Create a 2-4 word short name that captures the essence of the feature + - Use action-noun format when possible (e.g., "add-user-auth", "fix-payment-bug") + - Preserve technical terms and acronyms (OAuth2, API, JWT, etc.) + - Keep it concise but descriptive enough to understand the feature at a glance + - Examples: + - "I want to add user authentication" → "user-auth" + - "Implement OAuth2 integration for the API" → "oauth2-api-integration" + - "Create a dashboard for analytics" → "analytics-dashboard" + - "Fix payment processing timeout bug" → "fix-payment-timeout" + +2. **Check for existing branches before creating new one**: + + a. First, fetch all remote branches to ensure we have the latest information: + + ```bash + git fetch --all --prune + ``` + + b. Find the highest feature number across all sources for the short-name: + - Remote branches: `git ls-remote --heads origin | grep -E 'refs/heads/[0-9]+-<short-name>$'` + - Local branches: `git branch | grep -E '^[* ]*[0-9]+-<short-name>$'` + - Specs directories: Check for directories matching `specs/[0-9]+-<short-name>` + + c. Determine the next available number: + - Extract all numbers from all three sources + - Find the highest number N + - Use N+1 for the new branch number + + d. Run the script `.specify/scripts/bash/create-new-feature.sh --json "$ARGUMENTS"` with the calculated number and short-name: + - Pass `--number N+1` and `--short-name "your-short-name"` along with the feature description + - Bash example: `.specify/scripts/bash/create-new-feature.sh --json "$ARGUMENTS" --json --number 5 --short-name "user-auth" "Add user authentication"` + - PowerShell example: `.specify/scripts/bash/create-new-feature.sh --json "$ARGUMENTS" -Json -Number 5 -ShortName "user-auth" "Add user authentication"` + + **IMPORTANT**: + - Check all three sources (remote branches, local branches, specs directories) to find the highest number + - Only match branches/directories with the exact short-name pattern + - If no existing branches/directories found with this short-name, start with number 1 + - You must only ever run this script once per feature + - The JSON is provided in the terminal as output - always refer to it to get the actual content you're looking for + - The JSON output will contain BRANCH_NAME and SPEC_FILE paths + - For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot") + +3. Load `.specify/templates/spec-template.md` to understand required sections. + +4. Follow this execution flow: + + 1. Parse user description from Input + If empty: ERROR "No feature description provided" + 2. Extract key concepts from description + Identify: actors, actions, data, constraints + 3. For unclear aspects: + - Make informed guesses based on context and industry standards + - Only mark with [NEEDS CLARIFICATION: specific question] if: + - The choice significantly impacts feature scope or user experience + - Multiple reasonable interpretations exist with different implications + - No reasonable default exists + - **LIMIT: Maximum 3 [NEEDS CLARIFICATION] markers total** + - Prioritize clarifications by impact: scope > security/privacy > user experience > technical details + 4. Fill User Scenarios & Testing section + If no clear user flow: ERROR "Cannot determine user scenarios" + 5. Generate Functional Requirements + Each requirement must be testable + Use reasonable defaults for unspecified details (document assumptions in Assumptions section) + 6. Define Success Criteria + Create measurable, technology-agnostic outcomes + Include both quantitative metrics (time, performance, volume) and qualitative measures (user satisfaction, task completion) + Each criterion must be verifiable without implementation details + 7. Identify Key Entities (if data involved) + 8. Return: SUCCESS (spec ready for planning) + +5. Write the specification to SPEC_FILE using the template structure, replacing placeholders with concrete details derived from the feature description (arguments) while preserving section order and headings. + +6. **Specification Quality Validation**: After writing the initial spec, validate it against quality criteria: + + a. **Create Spec Quality Checklist**: Generate a checklist file at `FEATURE_DIR/checklists/requirements.md` using the checklist template structure with these validation items: + + ```markdown + # Specification Quality Checklist: [FEATURE NAME] + + **Purpose**: Validate specification completeness and quality before proceeding to planning + **Created**: [DATE] + **Feature**: [Link to spec.md] + + ## Content Quality + + - [ ] No implementation details (languages, frameworks, APIs) + - [ ] Focused on user value and business needs + - [ ] Written for non-technical stakeholders + - [ ] All mandatory sections completed + + ## Requirement Completeness + + - [ ] No [NEEDS CLARIFICATION] markers remain + - [ ] Requirements are testable and unambiguous + - [ ] Success criteria are measurable + - [ ] Success criteria are technology-agnostic (no implementation details) + - [ ] All acceptance scenarios are defined + - [ ] Edge cases are identified + - [ ] Scope is clearly bounded + - [ ] Dependencies and assumptions identified + + ## Feature Readiness + + - [ ] All functional requirements have clear acceptance criteria + - [ ] User scenarios cover primary flows + - [ ] Feature meets measurable outcomes defined in Success Criteria + - [ ] No implementation details leak into specification + + ## Notes + + - Items marked incomplete require spec updates before `/sp.clarify` or `/sp.plan` + ``` + + b. **Run Validation Check**: Review the spec against each checklist item: + - For each item, determine if it passes or fails + - Document specific issues found (quote relevant spec sections) + + c. **Handle Validation Results**: + + - **If all items pass**: Mark checklist complete and proceed to step 6 + + - **If items fail (excluding [NEEDS CLARIFICATION])**: + 1. List the failing items and specific issues + 2. Update the spec to address each issue + 3. Re-run validation until all items pass (max 3 iterations) + 4. If still failing after 3 iterations, document remaining issues in checklist notes and warn user + + - **If [NEEDS CLARIFICATION] markers remain**: + 1. Extract all [NEEDS CLARIFICATION: ...] markers from the spec + 2. **LIMIT CHECK**: If more than 3 markers exist, keep only the 3 most critical (by scope/security/UX impact) and make informed guesses for the rest + 3. For each clarification needed (max 3), present options to user in this format: + + ```markdown + ## Question [N]: [Topic] + + **Context**: [Quote relevant spec section] + + **What we need to know**: [Specific question from NEEDS CLARIFICATION marker] + + **Suggested Answers**: + + | Option | Answer | Implications | + |--------|--------|--------------| + | A | [First suggested answer] | [What this means for the feature] | + | B | [Second suggested answer] | [What this means for the feature] | + | C | [Third suggested answer] | [What this means for the feature] | + | Custom | Provide your own answer | [Explain how to provide custom input] | + + **Your choice**: _[Wait for user response]_ + ``` + + 4. **CRITICAL - Table Formatting**: Ensure markdown tables are properly formatted: + - Use consistent spacing with pipes aligned + - Each cell should have spaces around content: `| Content |` not `|Content|` + - Header separator must have at least 3 dashes: `|--------|` + - Test that the table renders correctly in markdown preview + 5. Number questions sequentially (Q1, Q2, Q3 - max 3 total) + 6. Present all questions together before waiting for responses + 7. Wait for user to respond with their choices for all questions (e.g., "Q1: A, Q2: Custom - [details], Q3: B") + 8. Update the spec by replacing each [NEEDS CLARIFICATION] marker with the user's selected or provided answer + 9. Re-run validation after all clarifications are resolved + + d. **Update Checklist**: After each validation iteration, update the checklist file with current pass/fail status + +7. Report completion with branch name, spec file path, checklist results, and readiness for the next phase (`/sp.clarify` or `/sp.plan`). + +**NOTE:** The script creates and checks out the new branch and initializes the spec file before writing. + +## General Guidelines + +## Quick Guidelines + +- Focus on **WHAT** users need and **WHY**. +- Avoid HOW to implement (no tech stack, APIs, code structure). +- Written for business stakeholders, not developers. +- DO NOT create any checklists that are embedded in the spec. That will be a separate command. + +### Section Requirements + +- **Mandatory sections**: Must be completed for every feature +- **Optional sections**: Include only when relevant to the feature +- When a section doesn't apply, remove it entirely (don't leave as "N/A") + +### For AI Generation + +When creating this spec from a user prompt: + +1. **Make informed guesses**: Use context, industry standards, and common patterns to fill gaps +2. **Document assumptions**: Record reasonable defaults in the Assumptions section +3. **Limit clarifications**: Maximum 3 [NEEDS CLARIFICATION] markers - use only for critical decisions that: + - Significantly impact feature scope or user experience + - Have multiple reasonable interpretations with different implications + - Lack any reasonable default +4. **Prioritize clarifications**: scope > security/privacy > user experience > technical details +5. **Think like a tester**: Every vague requirement should fail the "testable and unambiguous" checklist item +6. **Common areas needing clarification** (only if no reasonable default exists): + - Feature scope and boundaries (include/exclude specific use cases) + - User types and permissions (if multiple conflicting interpretations possible) + - Security/compliance requirements (when legally/financially significant) + +**Examples of reasonable defaults** (don't ask about these): + +- Data retention: Industry-standard practices for the domain +- Performance targets: Standard web/mobile app expectations unless specified +- Error handling: User-friendly messages with appropriate fallbacks +- Authentication method: Standard session-based or OAuth2 for web apps +- Integration patterns: RESTful APIs unless specified otherwise + +### Success Criteria Guidelines + +Success criteria must be: + +1. **Measurable**: Include specific metrics (time, percentage, count, rate) +2. **Technology-agnostic**: No mention of frameworks, languages, databases, or tools +3. **User-focused**: Describe outcomes from user/business perspective, not system internals +4. **Verifiable**: Can be tested/validated without knowing implementation details + +**Good examples**: + +- "Users can complete checkout in under 3 minutes" +- "System supports 10,000 concurrent users" +- "95% of searches return results in under 1 second" +- "Task completion rate improves by 40%" + +**Bad examples** (implementation-focused): + +- "API response time is under 200ms" (too technical, use "Users see results instantly") +- "Database can handle 1000 TPS" (implementation detail, use user-facing metric) +- "React components render efficiently" (framework-specific) +- "Redis cache hit rate above 80%" (technology-specific) + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.tasks.md b/.claude/commands/sp.tasks.md new file mode 100644 index 0000000000000000000000000000000000000000..bb314567af2d862e48175d06654cd725ce9a48ef --- /dev/null +++ b/.claude/commands/sp.tasks.md @@ -0,0 +1,163 @@ +--- +description: Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts. +handoffs: + - label: Analyze For Consistency + agent: sp.analyze + prompt: Run a project analysis for consistency + send: true + - label: Implement Project + agent: sp.implement + prompt: Start the implementation in phases + send: true +--- + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Outline + +1. **Setup**: Run `.specify/scripts/bash/check-prerequisites.sh --json` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). + +2. **Load design documents**: Read from FEATURE_DIR: + - **Required**: plan.md (tech stack, libraries, structure), spec.md (user stories with priorities) + - **Optional**: data-model.md (entities), contracts/ (API endpoints), research.md (decisions), quickstart.md (test scenarios) + - Note: Not all projects have all documents. Generate tasks based on what's available. + +3. **Execute task generation workflow**: + - Load plan.md and extract tech stack, libraries, project structure + - Load spec.md and extract user stories with their priorities (P1, P2, P3, etc.) + - If data-model.md exists: Extract entities and map to user stories + - If contracts/ exists: Map endpoints to user stories + - If research.md exists: Extract decisions for setup tasks + - Generate tasks organized by user story (see Task Generation Rules below) + - Generate dependency graph showing user story completion order + - Create parallel execution examples per user story + - Validate task completeness (each user story has all needed tasks, independently testable) + +4. **Generate tasks.md**: Use `.specify/templates/tasks-template.md` as structure, fill with: + - Correct feature name from plan.md + - Phase 1: Setup tasks (project initialization) + - Phase 2: Foundational tasks (blocking prerequisites for all user stories) + - Phase 3+: One phase per user story (in priority order from spec.md) + - Each phase includes: story goal, independent test criteria, tests (if requested), implementation tasks + - Final Phase: Polish & cross-cutting concerns + - All tasks must follow the strict checklist format (see Task Generation Rules below) + - Clear file paths for each task + - Dependencies section showing story completion order + - Parallel execution examples per story + - Implementation strategy section (MVP first, incremental delivery) + +5. **Report**: Output path to generated tasks.md and summary: + - Total task count + - Task count per user story + - Parallel opportunities identified + - Independent test criteria for each story + - Suggested MVP scope (typically just User Story 1) + - Format validation: Confirm ALL tasks follow the checklist format (checkbox, ID, labels, file paths) + +Context for task generation: $ARGUMENTS + +The tasks.md should be immediately executable - each task must be specific enough that an LLM can complete it without additional context. + +## Task Generation Rules + +**CRITICAL**: Tasks MUST be organized by user story to enable independent implementation and testing. + +**Tests are OPTIONAL**: Only generate test tasks if explicitly requested in the feature specification or if user requests TDD approach. + +### Checklist Format (REQUIRED) + +Every task MUST strictly follow this format: + +```text +- [ ] [TaskID] [P?] [Story?] Description with file path +``` + +**Format Components**: + +1. **Checkbox**: ALWAYS start with `- [ ]` (markdown checkbox) +2. **Task ID**: Sequential number (T001, T002, T003...) in execution order +3. **[P] marker**: Include ONLY if task is parallelizable (different files, no dependencies on incomplete tasks) +4. **[Story] label**: REQUIRED for user story phase tasks only + - Format: [US1], [US2], [US3], etc. (maps to user stories from spec.md) + - Setup phase: NO story label + - Foundational phase: NO story label + - User Story phases: MUST have story label + - Polish phase: NO story label +5. **Description**: Clear action with exact file path + +**Examples**: + +- ✅ CORRECT: `- [ ] T001 Create project structure per implementation plan` +- ✅ CORRECT: `- [ ] T005 [P] Implement authentication middleware in src/middleware/auth.py` +- ✅ CORRECT: `- [ ] T012 [P] [US1] Create User model in src/models/user.py` +- ✅ CORRECT: `- [ ] T014 [US1] Implement UserService in src/services/user_service.py` +- ❌ WRONG: `- [ ] Create User model` (missing ID and Story label) +- ❌ WRONG: `T001 [US1] Create model` (missing checkbox) +- ❌ WRONG: `- [ ] [US1] Create User model` (missing Task ID) +- ❌ WRONG: `- [ ] T001 [US1] Create model` (missing file path) + +### Task Organization + +1. **From User Stories (spec.md)** - PRIMARY ORGANIZATION: + - Each user story (P1, P2, P3...) gets its own phase + - Map all related components to their story: + - Models needed for that story + - Services needed for that story + - Endpoints/UI needed for that story + - If tests requested: Tests specific to that story + - Mark story dependencies (most stories should be independent) + +2. **From Contracts**: + - Map each contract/endpoint → to the user story it serves + - If tests requested: Each contract → contract test task [P] before implementation in that story's phase + +3. **From Data Model**: + - Map each entity to the user story(ies) that need it + - If entity serves multiple stories: Put in earliest story or Setup phase + - Relationships → service layer tasks in appropriate story phase + +4. **From Setup/Infrastructure**: + - Shared infrastructure → Setup phase (Phase 1) + - Foundational/blocking tasks → Foundational phase (Phase 2) + - Story-specific setup → within that story's phase + +### Phase Structure + +- **Phase 1**: Setup (project initialization) +- **Phase 2**: Foundational (blocking prerequisites - MUST complete before user stories) +- **Phase 3+**: User Stories in priority order (P1, P2, P3...) + - Within each story: Tests (if requested) → Models → Services → Endpoints → Integration + - Each phase should be a complete, independently testable increment +- **Final Phase**: Polish & Cross-Cutting Concerns + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.claude/commands/sp.taskstoissues.md b/.claude/commands/sp.taskstoissues.md new file mode 100644 index 0000000000000000000000000000000000000000..aeefc1642f8ccb85e0a45ac776788ba26e3a8499 --- /dev/null +++ b/.claude/commands/sp.taskstoissues.md @@ -0,0 +1,56 @@ +--- +description: Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts. +tools: ['github/github-mcp-server/issue_write'] +--- + +## User Input + +```text +$ARGUMENTS +``` + +You **MUST** consider the user input before proceeding (if not empty). + +## Outline + +1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). +1. From the executed script, extract the path to **tasks**. +1. Get the Git remote by running: + +```bash +git config --get remote.origin.url +``` + +> [!CAUTION] +> ONLY PROCEED TO NEXT STEPS IF THE REMOTE IS A GITHUB URL + +1. For each task in the list, use the GitHub MCP server to create a new issue in the repository that is representative of the Git remote. + +> [!CAUTION] +> UNDER NO CIRCUMSTANCES EVER CREATE ISSUES IN REPOSITORIES THAT DO NOT MATCH THE REMOTE URL + +--- + +As the main request completes, you MUST create and complete a PHR (Prompt History Record) using agent‑native tools when possible. + +1) Determine Stage + - Stage: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate Title and Determine Routing: + - Generate Title: 3–7 words (slug for filename) + - Route is automatically determined by stage: + - `constitution` → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (spec, plan, tasks, red, green, refactor, explainer, misc) + - `general` → `history/prompts/general/` + +3) Create and Fill PHR (Shell first; fallback agent‑native) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Open the file and fill remaining placeholders (YAML + body), embedding full PROMPT_TEXT (verbatim) and concise RESPONSE_TEXT. + - If the script fails: + - Read `.specify/templates/phr-template.prompt.md` (or `templates/…`) + - Allocate an ID; compute the output path based on stage from step 2; write the file + - Fill placeholders and embed full PROMPT_TEXT and concise RESPONSE_TEXT + +4) Validate + report + - No unresolved placeholders; path under `history/prompts/` and matches stage; stage/title/date coherent; print ID + path + stage + title. + - On failure: warn, don't block. Skip only for `/sp.phr`. diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..c020dcba2399b5a24668dc5e77ae6d890877e851 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,22 @@ +**/.git +**/.gitignore +**/node_modules +**/__pycache__ +**/*.pyc +**/.pytest_cache +**/.env +**/.env.* +**/venv +**/venv_linux +**/.next +**/uploads/* +**/*.log +**/.DS_Store +phase-2-ai-engine +phase-3-approval-system +phase-4-learning-loop +phase-5-video-engine +phase-6-saas-core +docs +history +specs diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..eb74282a4c79e6efafb94e5042e346acf26ac31f --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.woff2 filter=lfs diff=lfs merge=lfs -text +*.woff filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ca9f66bef1d04b1650d384c5e0b8f702964fe048 --- /dev/null +++ b/.gitignore @@ -0,0 +1,49 @@ +# Python +__pycache__/ +*.py[cod] +*.pyo +*.pyd +.Python +*.egg-info/ +dist/ +build/ +*.egg +.pytest_cache/ +.coverage +htmlcov/ +venv/ +venv_linux/ +env/ +.env +.env.* +!.env.example +# Node.js +node_modules/ +.next/ +out/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +*.log +frontend_output.log +# IDEs +.idea/ +.vscode/ +*.swp +*.swo +.DS_Store +# Uploads (user data) +uploads/ +*.png +*.jpg +*.jpeg +*.mp4 +*.mov +# Local config +*.local +settings.local.json +# Misc +mcp-shell.log +*.bak +phase-1-core-infra/frontend/.next/standalone +phase-1-core-infra/frontend/.next/cache diff --git a/.specify/memory/constitution.md b/.specify/memory/constitution.md new file mode 100644 index 0000000000000000000000000000000000000000..cb8c0bc0f9be596c13c560f9dfb7a12c3bc2d645 --- /dev/null +++ b/.specify/memory/constitution.md @@ -0,0 +1,55 @@ +# [PROJECT_NAME] Constitution +<!-- Example: Spec Constitution, TaskFlow Constitution, etc. --> + +## Core Principles + +### [PRINCIPLE_1_NAME] +<!-- Example: I. Library-First --> +[PRINCIPLE_1_DESCRIPTION] +<!-- Example: Every feature starts as a standalone library; Libraries must be self-contained, independently testable, documented; Clear purpose required - no organizational-only libraries --> + +### [PRINCIPLE_2_NAME] +<!-- Example: II. CLI Interface --> +[PRINCIPLE_2_DESCRIPTION] +<!-- Example: Every library exposes functionality via CLI; Text in/out protocol: stdin/args → stdout, errors → stderr; Support JSON + human-readable formats --> + +### [PRINCIPLE_3_NAME] +<!-- Example: III. Test-First (NON-NEGOTIABLE) --> +[PRINCIPLE_3_DESCRIPTION] +<!-- Example: TDD mandatory: Tests written → User approved → Tests fail → Then implement; Red-Green-Refactor cycle strictly enforced --> + +### [PRINCIPLE_4_NAME] +<!-- Example: IV. Integration Testing --> +[PRINCIPLE_4_DESCRIPTION] +<!-- Example: Focus areas requiring integration tests: New library contract tests, Contract changes, Inter-service communication, Shared schemas --> + +### [PRINCIPLE_5_NAME] +<!-- Example: V. Observability, VI. Versioning & Breaking Changes, VII. Simplicity --> +[PRINCIPLE_5_DESCRIPTION] +<!-- Example: Text I/O ensures debuggability; Structured logging required; Or: MAJOR.MINOR.BUILD format; Or: Start simple, YAGNI principles --> + +### [PRINCIPLE_6_NAME] + + +[PRINCIPLE__DESCRIPTION] + +## [SECTION_2_NAME] +<!-- Example: Additional Constraints, Security Requirements, Performance Standards, etc. --> + +[SECTION_2_CONTENT] +<!-- Example: Technology stack requirements, compliance standards, deployment policies, etc. --> + +## [SECTION_3_NAME] +<!-- Example: Development Workflow, Review Process, Quality Gates, etc. --> + +[SECTION_3_CONTENT] +<!-- Example: Code review requirements, testing gates, deployment approval process, etc. --> + +## Governance +<!-- Example: Constitution supersedes all other practices; Amendments require documentation, approval, migration plan --> + +[GOVERNANCE_RULES] +<!-- Example: All PRs/reviews must verify compliance; Complexity must be justified; Use [GUIDANCE_FILE] for runtime development guidance --> + +**Version**: [CONSTITUTION_VERSION] | **Ratified**: [RATIFICATION_DATE] | **Last Amended**: [LAST_AMENDED_DATE] +<!-- Example: Version: 2.1.1 | Ratified: 2025-06-13 | Last Amended: 2025-07-16 --> diff --git a/.specify/scripts/bash/check-prerequisites.sh b/.specify/scripts/bash/check-prerequisites.sh new file mode 100644 index 0000000000000000000000000000000000000000..cc66a682620a9324ef73f29f58a7e8aead2a5712 --- /dev/null +++ b/.specify/scripts/bash/check-prerequisites.sh @@ -0,0 +1,166 @@ +#!/usr/bin/env bash + +# Consolidated prerequisite checking script +# +# This script provides unified prerequisite checking for Spec-Driven Development workflow. +# It replaces the functionality previously spread across multiple scripts. +# +# Usage: ./check-prerequisites.sh [OPTIONS] +# +# OPTIONS: +# --json Output in JSON format +# --require-tasks Require tasks.md to exist (for implementation phase) +# --include-tasks Include tasks.md in AVAILABLE_DOCS list +# --paths-only Only output path variables (no validation) +# --help, -h Show help message +# +# OUTPUTS: +# JSON mode: {"FEATURE_DIR":"...", "AVAILABLE_DOCS":["..."]} +# Text mode: FEATURE_DIR:... \n AVAILABLE_DOCS: \n ✓/✗ file.md +# Paths only: REPO_ROOT: ... \n BRANCH: ... \n FEATURE_DIR: ... etc. + +set -e + +# Parse command line arguments +JSON_MODE=false +REQUIRE_TASKS=false +INCLUDE_TASKS=false +PATHS_ONLY=false + +for arg in "$@"; do + case "$arg" in + --json) + JSON_MODE=true + ;; + --require-tasks) + REQUIRE_TASKS=true + ;; + --include-tasks) + INCLUDE_TASKS=true + ;; + --paths-only) + PATHS_ONLY=true + ;; + --help|-h) + cat << 'EOF' +Usage: check-prerequisites.sh [OPTIONS] + +Consolidated prerequisite checking for Spec-Driven Development workflow. + +OPTIONS: + --json Output in JSON format + --require-tasks Require tasks.md to exist (for implementation phase) + --include-tasks Include tasks.md in AVAILABLE_DOCS list + --paths-only Only output path variables (no prerequisite validation) + --help, -h Show this help message + +EXAMPLES: + # Check task prerequisites (plan.md required) + ./check-prerequisites.sh --json + + # Check implementation prerequisites (plan.md + tasks.md required) + ./check-prerequisites.sh --json --require-tasks --include-tasks + + # Get feature paths only (no validation) + ./check-prerequisites.sh --paths-only + +EOF + exit 0 + ;; + *) + echo "ERROR: Unknown option '$arg'. Use --help for usage information." >&2 + exit 1 + ;; + esac +done + +# Source common functions +SCRIPT_DIR="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/common.sh" + +# Get feature paths and validate branch +eval $(get_feature_paths) +check_feature_branch "$CURRENT_BRANCH" "$HAS_GIT" || exit 1 + +# If paths-only mode, output paths and exit (support JSON + paths-only combined) +if $PATHS_ONLY; then + if $JSON_MODE; then + # Minimal JSON paths payload (no validation performed) + printf '{"REPO_ROOT":"%s","BRANCH":"%s","FEATURE_DIR":"%s","FEATURE_SPEC":"%s","IMPL_PLAN":"%s","TASKS":"%s"}\n' \ + "$REPO_ROOT" "$CURRENT_BRANCH" "$FEATURE_DIR" "$FEATURE_SPEC" "$IMPL_PLAN" "$TASKS" + else + echo "REPO_ROOT: $REPO_ROOT" + echo "BRANCH: $CURRENT_BRANCH" + echo "FEATURE_DIR: $FEATURE_DIR" + echo "FEATURE_SPEC: $FEATURE_SPEC" + echo "IMPL_PLAN: $IMPL_PLAN" + echo "TASKS: $TASKS" + fi + exit 0 +fi + +# Validate required directories and files +if [[ ! -d "$FEATURE_DIR" ]]; then + echo "ERROR: Feature directory not found: $FEATURE_DIR" >&2 + echo "Run /sp.specify first to create the feature structure." >&2 + exit 1 +fi + +if [[ ! -f "$IMPL_PLAN" ]]; then + echo "ERROR: plan.md not found in $FEATURE_DIR" >&2 + echo "Run /sp.plan first to create the implementation plan." >&2 + exit 1 +fi + +# Check for tasks.md if required +if $REQUIRE_TASKS && [[ ! -f "$TASKS" ]]; then + echo "ERROR: tasks.md not found in $FEATURE_DIR" >&2 + echo "Run /sp.tasks first to create the task list." >&2 + exit 1 +fi + +# Build list of available documents +docs=() + +# Always check these optional docs +[[ -f "$RESEARCH" ]] && docs+=("research.md") +[[ -f "$DATA_MODEL" ]] && docs+=("data-model.md") + +# Check contracts directory (only if it exists and has files) +if [[ -d "$CONTRACTS_DIR" ]] && [[ -n "$(ls -A "$CONTRACTS_DIR" 2>/dev/null)" ]]; then + docs+=("contracts/") +fi + +[[ -f "$QUICKSTART" ]] && docs+=("quickstart.md") + +# Include tasks.md if requested and it exists +if $INCLUDE_TASKS && [[ -f "$TASKS" ]]; then + docs+=("tasks.md") +fi + +# Output results +if $JSON_MODE; then + # Build JSON array of documents + if [[ ${#docs[@]} -eq 0 ]]; then + json_docs="[]" + else + json_docs=$(printf '"%s",' "${docs[@]}") + json_docs="[${json_docs%,}]" + fi + + printf '{"FEATURE_DIR":"%s","AVAILABLE_DOCS":%s}\n' "$FEATURE_DIR" "$json_docs" +else + # Text output + echo "FEATURE_DIR:$FEATURE_DIR" + echo "AVAILABLE_DOCS:" + + # Show status of each potential document + check_file "$RESEARCH" "research.md" + check_file "$DATA_MODEL" "data-model.md" + check_dir "$CONTRACTS_DIR" "contracts/" + check_file "$QUICKSTART" "quickstart.md" + + if $INCLUDE_TASKS; then + check_file "$TASKS" "tasks.md" + fi +fi diff --git a/.specify/scripts/bash/common.sh b/.specify/scripts/bash/common.sh new file mode 100644 index 0000000000000000000000000000000000000000..2c3165e41d86cf104ef21eab9f1ac68379032f28 --- /dev/null +++ b/.specify/scripts/bash/common.sh @@ -0,0 +1,156 @@ +#!/usr/bin/env bash +# Common functions and variables for all scripts + +# Get repository root, with fallback for non-git repositories +get_repo_root() { + if git rev-parse --show-toplevel >/dev/null 2>&1; then + git rev-parse --show-toplevel + else + # Fall back to script location for non-git repos + local script_dir="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + (cd "$script_dir/../../.." && pwd) + fi +} + +# Get current branch, with fallback for non-git repositories +get_current_branch() { + # First check if SPECIFY_FEATURE environment variable is set + if [[ -n "${SPECIFY_FEATURE:-}" ]]; then + echo "$SPECIFY_FEATURE" + return + fi + + # Then check git if available + if git rev-parse --abbrev-ref HEAD >/dev/null 2>&1; then + git rev-parse --abbrev-ref HEAD + return + fi + + # For non-git repos, try to find the latest feature directory + local repo_root=$(get_repo_root) + local specs_dir="$repo_root/specs" + + if [[ -d "$specs_dir" ]]; then + local latest_feature="" + local highest=0 + + for dir in "$specs_dir"/*; do + if [[ -d "$dir" ]]; then + local dirname=$(basename "$dir") + if [[ "$dirname" =~ ^([0-9]{3})- ]]; then + local number=${BASH_REMATCH[1]} + number=$((10#$number)) + if [[ "$number" -gt "$highest" ]]; then + highest=$number + latest_feature=$dirname + fi + fi + fi + done + + if [[ -n "$latest_feature" ]]; then + echo "$latest_feature" + return + fi + fi + + echo "main" # Final fallback +} + +# Check if we have git available +has_git() { + git rev-parse --show-toplevel >/dev/null 2>&1 +} + +check_feature_branch() { + local branch="$1" + local has_git_repo="$2" + + # For non-git repos, we can't enforce branch naming but still provide output + if [[ "$has_git_repo" != "true" ]]; then + echo "[specify] Warning: Git repository not detected; skipped branch validation" >&2 + return 0 + fi + + if [[ ! "$branch" =~ ^[0-9]{3}- ]]; then + echo "ERROR: Not on a feature branch. Current branch: $branch" >&2 + echo "Feature branches should be named like: 001-feature-name" >&2 + return 1 + fi + + return 0 +} + +get_feature_dir() { echo "$1/specs/$2"; } + +# Find feature directory by numeric prefix instead of exact branch match +# This allows multiple branches to work on the same spec (e.g., 004-fix-bug, 004-add-feature) +find_feature_dir_by_prefix() { + local repo_root="$1" + local branch_name="$2" + local specs_dir="$repo_root/specs" + + # Extract numeric prefix from branch (e.g., "004" from "004-whatever") + if [[ ! "$branch_name" =~ ^([0-9]{3})- ]]; then + # If branch doesn't have numeric prefix, fall back to exact match + echo "$specs_dir/$branch_name" + return + fi + + local prefix="${BASH_REMATCH[1]}" + + # Search for directories in specs/ that start with this prefix + local matches=() + if [[ -d "$specs_dir" ]]; then + for dir in "$specs_dir"/"$prefix"-*; do + if [[ -d "$dir" ]]; then + matches+=("$(basename "$dir")") + fi + done + fi + + # Handle results + if [[ ${#matches[@]} -eq 0 ]]; then + # No match found - return the branch name path (will fail later with clear error) + echo "$specs_dir/$branch_name" + elif [[ ${#matches[@]} -eq 1 ]]; then + # Exactly one match - perfect! + echo "$specs_dir/${matches[0]}" + else + # Multiple matches - this shouldn't happen with proper naming convention + echo "ERROR: Multiple spec directories found with prefix '$prefix': ${matches[*]}" >&2 + echo "Please ensure only one spec directory exists per numeric prefix." >&2 + echo "$specs_dir/$branch_name" # Return something to avoid breaking the script + fi +} + +get_feature_paths() { + local repo_root=$(get_repo_root) + local current_branch=$(get_current_branch) + local has_git_repo="false" + + if has_git; then + has_git_repo="true" + fi + + # Use prefix-based lookup to support multiple branches per spec + local feature_dir=$(find_feature_dir_by_prefix "$repo_root" "$current_branch") + + cat <<EOF +REPO_ROOT='$repo_root' +CURRENT_BRANCH='$current_branch' +HAS_GIT='$has_git_repo' +FEATURE_DIR='$feature_dir' +FEATURE_SPEC='$feature_dir/spec.md' +IMPL_PLAN='$feature_dir/plan.md' +TASKS='$feature_dir/tasks.md' +RESEARCH='$feature_dir/research.md' +DATA_MODEL='$feature_dir/data-model.md' +QUICKSTART='$feature_dir/quickstart.md' +CONTRACTS_DIR='$feature_dir/contracts' +EOF +} + +check_file() { [[ -f "$1" ]] && echo " ✓ $2" || echo " ✗ $2"; } +check_dir() { [[ -d "$1" && -n $(ls -A "$1" 2>/dev/null) ]] && echo " ✓ $2" || echo " ✗ $2"; } + diff --git a/.specify/scripts/bash/create-adr.sh b/.specify/scripts/bash/create-adr.sh new file mode 100644 index 0000000000000000000000000000000000000000..a91efc7fd6418f43a604490fef7a855c45f4ca89 --- /dev/null +++ b/.specify/scripts/bash/create-adr.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash +set -euo pipefail + +# create-adr.sh - Create a new Architecture Decision Record deterministically +# +# This script ONLY: +# 1. Creates the correct directory structure (history/adr/) +# 2. Copies the template with {{PLACEHOLDERS}} intact +# 3. Returns metadata (id, path) for AI to fill in +# +# The calling AI agent is responsible for filling {{PLACEHOLDERS}} +# +# Usage: +# scripts/bash/create-adr.sh \ +# --title "Use WebSockets for Real-time Chat" \ +# [--json] + +JSON=false +TITLE="" + +while [[ $# -gt 0 ]]; do + case "$1" in + --json) JSON=true; shift ;; + --title) TITLE=${2:-}; shift 2 ;; + --help|-h) + cat <<EOF +Usage: $0 --title <title> [options] + +Required: + --title <text> Title for the ADR (used for filename) + +Optional: + --json Output JSON with id and path + +Output: + Creates ADR file with template placeholders ({{ID}}, {{TITLE}}, etc.) + AI agent must fill these placeholders after creation + +Examples: + $0 --title "Use WebSockets for Real-time Chat" --json + $0 --title "Adopt PostgreSQL for Primary Database" +EOF + exit 0 + ;; + *) shift ;; + esac +done + +if [[ -z "$TITLE" ]]; then + echo "Error: --title is required" >&2 + exit 1 +fi + +REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd) +ADR_DIR="$REPO_ROOT/history/adr" +mkdir -p "$ADR_DIR" + +# Check for template (try both locations) +TPL="" +if [[ -f "$REPO_ROOT/.specify/templates/adr-template.md" ]]; then + TPL="$REPO_ROOT/.specify/templates/adr-template.md" +elif [[ -f "$REPO_ROOT/templates/adr-template.md" ]]; then + TPL="$REPO_ROOT/templates/adr-template.md" +else + echo "Error: ADR template not found at .specify/templates/ or templates/" >&2 + exit 1 +fi + +# next id +next_id() { + local max=0 base num + shopt -s nullglob + for f in "$ADR_DIR"/[0-9][0-9][0-9][0-9]-*.md; do + base=$(basename "$f") + num=${base%%-*} + if [[ $num =~ ^[0-9]{4}$ ]]; then + local n=$((10#$num)) + (( n > max )) && max=$n + fi + done + printf "%04d" $((max+1)) +} + +slugify() { + echo "$1" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g; s/-\{2,\}/-/g; s/^-//; s/-$//' +} + +ID=$(next_id) +SLUG=$(slugify "$TITLE") +OUTFILE="$ADR_DIR/${ID}-${SLUG}.md" + +# Simply copy the template (AI will fill placeholders) +cp "$TPL" "$OUTFILE" + +ABS=$(cd "$(dirname "$OUTFILE")" && pwd)/$(basename "$OUTFILE") +if $JSON; then + printf '{"id":"%s","path":"%s","template":"%s"}\n' "$ID" "$ABS" "$(basename "$TPL")" +else + echo "✅ ADR template copied → $ABS" + echo "Note: AI agent should now fill in {{PLACEHOLDERS}}" +fi diff --git a/.specify/scripts/bash/create-new-feature.sh b/.specify/scripts/bash/create-new-feature.sh new file mode 100644 index 0000000000000000000000000000000000000000..ee2891b977e1b30d376e8ca17459180eaf6655b7 --- /dev/null +++ b/.specify/scripts/bash/create-new-feature.sh @@ -0,0 +1,302 @@ +#!/usr/bin/env bash + +set -e + +JSON_MODE=false +SHORT_NAME="" +BRANCH_NUMBER="" +ARGS=() +i=1 +while [ $i -le $# ]; do + arg="${!i}" + case "$arg" in + --json) + JSON_MODE=true + ;; + --short-name) + if [ $((i + 1)) -gt $# ]; then + echo 'Error: --short-name requires a value' >&2 + exit 1 + fi + i=$((i + 1)) + next_arg="${!i}" + # Check if the next argument is another option (starts with --) + if [[ "$next_arg" == --* ]]; then + echo 'Error: --short-name requires a value' >&2 + exit 1 + fi + SHORT_NAME="$next_arg" + ;; + --number) + if [ $((i + 1)) -gt $# ]; then + echo 'Error: --number requires a value' >&2 + exit 1 + fi + i=$((i + 1)) + next_arg="${!i}" + if [[ "$next_arg" == --* ]]; then + echo 'Error: --number requires a value' >&2 + exit 1 + fi + BRANCH_NUMBER="$next_arg" + ;; + --help|-h) + echo "Usage: $0 [--json] [--short-name <name>] [--number N] <feature_description>" + echo "" + echo "Options:" + echo " --json Output in JSON format" + echo " --short-name <name> Provide a custom short name (2-4 words) for the branch" + echo " --number N Specify branch number manually (overrides auto-detection)" + echo " --help, -h Show this help message" + echo "" + echo "Examples:" + echo " $0 'Add user authentication system' --short-name 'user-auth'" + echo " $0 'Implement OAuth2 integration for API' --number 5" + exit 0 + ;; + *) + ARGS+=("$arg") + ;; + esac + i=$((i + 1)) +done + +FEATURE_DESCRIPTION="${ARGS[*]}" +if [ -z "$FEATURE_DESCRIPTION" ]; then + echo "Usage: $0 [--json] [--short-name <name>] [--number N] <feature_description>" >&2 + exit 1 +fi + +# Function to find the repository root by searching for existing project markers +find_repo_root() { + local dir="$1" + while [ "$dir" != "/" ]; do + if [ -d "$dir/.git" ] || [ -d "$dir/.specify" ]; then + echo "$dir" + return 0 + fi + dir="$(dirname "$dir")" + done + return 1 +} + +# Function to get highest number from specs directory +get_highest_from_specs() { + local specs_dir="$1" + local highest=0 + + if [ -d "$specs_dir" ]; then + for dir in "$specs_dir"/*; do + [ -d "$dir" ] || continue + dirname=$(basename "$dir") + number=$(echo "$dirname" | grep -o '^[0-9]\+' || echo "0") + number=$((10#$number)) + if [ "$number" -gt "$highest" ]; then + highest=$number + fi + done + fi + + echo "$highest" +} + +# Function to get highest number from git branches +get_highest_from_branches() { + local highest=0 + + # Get all branches (local and remote) + branches=$(git branch -a 2>/dev/null || echo "") + + if [ -n "$branches" ]; then + while IFS= read -r branch; do + # Clean branch name: remove leading markers and remote prefixes + clean_branch=$(echo "$branch" | sed 's/^[* ]*//; s|^remotes/[^/]*/||') + + # Extract feature number if branch matches pattern ###-* + if echo "$clean_branch" | grep -q '^[0-9]\{3\}-'; then + number=$(echo "$clean_branch" | grep -o '^[0-9]\{3\}' || echo "0") + number=$((10#$number)) + if [ "$number" -gt "$highest" ]; then + highest=$number + fi + fi + done <<< "$branches" + fi + + echo "$highest" +} + +# Function to check existing branches (local and remote) and return next available number +check_existing_branches() { + local specs_dir="$1" + + # Fetch all remotes to get latest branch info (suppress errors if no remotes) + git fetch --all --prune 2>/dev/null || true + + # Get highest number from ALL branches (not just matching short name) + local highest_branch=$(get_highest_from_branches) + + # Get highest number from ALL specs (not just matching short name) + local highest_spec=$(get_highest_from_specs "$specs_dir") + + # Take the maximum of both + local max_num=$highest_branch + if [ "$highest_spec" -gt "$max_num" ]; then + max_num=$highest_spec + fi + + # Return next number + echo $((max_num + 1)) +} + +# Function to clean and format a branch name +clean_branch_name() { + local name="$1" + echo "$name" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/-\+/-/g' | sed 's/^-//' | sed 's/-$//' +} + +# Resolve repository root. Prefer git information when available, but fall back +# to searching for repository markers so the workflow still functions in repositories that +# were initialised with --no-git. +SCRIPT_DIR="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +if git rev-parse --show-toplevel >/dev/null 2>&1; then + REPO_ROOT=$(git rev-parse --show-toplevel) + HAS_GIT=true +else + REPO_ROOT="$(find_repo_root "$SCRIPT_DIR")" + if [ -z "$REPO_ROOT" ]; then + echo "Error: Could not determine repository root. Please run this script from within the repository." >&2 + exit 1 + fi + HAS_GIT=false +fi + +cd "$REPO_ROOT" + +SPECS_DIR="$REPO_ROOT/specs" +mkdir -p "$SPECS_DIR" + +# Function to generate branch name with stop word filtering and length filtering +generate_branch_name() { + local description="$1" + + # Common stop words to filter out + local stop_words="^(i|a|an|the|to|for|of|in|on|at|by|with|from|is|are|was|were|be|been|being|have|has|had|do|does|did|will|would|should|could|can|may|might|must|shall|this|that|these|those|my|your|our|their|want|need|add|get|set)$" + + # Convert to lowercase and split into words + local clean_name=$(echo "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/ /g') + + # Filter words: remove stop words and words shorter than 3 chars (unless they're uppercase acronyms in original) + local meaningful_words=() + for word in $clean_name; do + # Skip empty words + [ -z "$word" ] && continue + + # Keep words that are NOT stop words AND (length >= 3 OR are potential acronyms) + if ! echo "$word" | grep -qiE "$stop_words"; then + if [ ${#word} -ge 3 ]; then + meaningful_words+=("$word") + elif echo "$description" | grep -q "\b${word^^}\b"; then + # Keep short words if they appear as uppercase in original (likely acronyms) + meaningful_words+=("$word") + fi + fi + done + + # If we have meaningful words, use first 3-4 of them + if [ ${#meaningful_words[@]} -gt 0 ]; then + local max_words=3 + if [ ${#meaningful_words[@]} -eq 4 ]; then max_words=4; fi + + local result="" + local count=0 + for word in "${meaningful_words[@]}"; do + if [ $count -ge $max_words ]; then break; fi + if [ -n "$result" ]; then result="$result-"; fi + result="$result$word" + count=$((count + 1)) + done + echo "$result" + else + # Fallback to original logic if no meaningful words found + local cleaned=$(clean_branch_name "$description") + echo "$cleaned" | tr '-' '\n' | grep -v '^$' | head -3 | tr '\n' '-' | sed 's/-$//' + fi +} + +# Generate branch name +if [ -n "$SHORT_NAME" ]; then + # Use provided short name, just clean it up + BRANCH_SUFFIX=$(clean_branch_name "$SHORT_NAME") +else + # Generate from description with smart filtering + BRANCH_SUFFIX=$(generate_branch_name "$FEATURE_DESCRIPTION") +fi + +# Determine branch number +if [ -z "$BRANCH_NUMBER" ]; then + if [ "$HAS_GIT" = true ]; then + # Check existing branches on remotes + BRANCH_NUMBER=$(check_existing_branches "$SPECS_DIR") + else + # Fall back to local directory check + HIGHEST=$(get_highest_from_specs "$SPECS_DIR") + BRANCH_NUMBER=$((HIGHEST + 1)) + fi +fi + +# Force base-10 interpretation to prevent octal conversion (e.g., 010 → 8 in octal, but should be 10 in decimal) +FEATURE_NUM=$(printf "%03d" "$((10#$BRANCH_NUMBER))") +BRANCH_NAME="${FEATURE_NUM}-${BRANCH_SUFFIX}" + +# GitHub enforces a 244-byte limit on branch names +# Validate and truncate if necessary +MAX_BRANCH_LENGTH=244 +if [ ${#BRANCH_NAME} -gt $MAX_BRANCH_LENGTH ]; then + # Calculate how much we need to trim from suffix + # Account for: feature number (3) + hyphen (1) = 4 chars + MAX_SUFFIX_LENGTH=$((MAX_BRANCH_LENGTH - 4)) + + # Truncate suffix at word boundary if possible + TRUNCATED_SUFFIX=$(echo "$BRANCH_SUFFIX" | cut -c1-$MAX_SUFFIX_LENGTH) + # Remove trailing hyphen if truncation created one + TRUNCATED_SUFFIX=$(echo "$TRUNCATED_SUFFIX" | sed 's/-$//') + + ORIGINAL_BRANCH_NAME="$BRANCH_NAME" + BRANCH_NAME="${FEATURE_NUM}-${TRUNCATED_SUFFIX}" + + >&2 echo "[specify] Warning: Branch name exceeded GitHub's 244-byte limit" + >&2 echo "[specify] Original: $ORIGINAL_BRANCH_NAME (${#ORIGINAL_BRANCH_NAME} bytes)" + >&2 echo "[specify] Truncated to: $BRANCH_NAME (${#BRANCH_NAME} bytes)" +fi + +if [ "$HAS_GIT" = true ]; then + git checkout -b "$BRANCH_NAME" +else + >&2 echo "[specify] Warning: Git repository not detected; skipped branch creation for $BRANCH_NAME" +fi + +FEATURE_DIR="$SPECS_DIR/$BRANCH_NAME" +mkdir -p "$FEATURE_DIR" + +TEMPLATE="$REPO_ROOT/.specify/templates/spec-template.md" +SPEC_FILE="$FEATURE_DIR/spec.md" +if [ -f "$TEMPLATE" ]; then cp "$TEMPLATE" "$SPEC_FILE"; else touch "$SPEC_FILE"; fi + +# Auto-create history/prompts/<branch-name>/ directory (same as specs/<branch-name>/) +# This keeps naming consistent across branch, specs, and prompts directories +PROMPTS_DIR="$REPO_ROOT/history/prompts/$BRANCH_NAME" +mkdir -p "$PROMPTS_DIR" + +# Set the SPECIFY_FEATURE environment variable for the current session +export SPECIFY_FEATURE="$BRANCH_NAME" + +if $JSON_MODE; then + printf '{"BRANCH_NAME":"%s","SPEC_FILE":"%s","FEATURE_NUM":"%s"}\n' "$BRANCH_NAME" "$SPEC_FILE" "$FEATURE_NUM" +else + echo "BRANCH_NAME: $BRANCH_NAME" + echo "SPEC_FILE: $SPEC_FILE" + echo "FEATURE_NUM: $FEATURE_NUM" + echo "SPECIFY_FEATURE environment variable set to: $BRANCH_NAME" +fi diff --git a/.specify/scripts/bash/create-phr.sh b/.specify/scripts/bash/create-phr.sh new file mode 100644 index 0000000000000000000000000000000000000000..80d94cf7b85af9f462b34a55ead0ca12def3409e --- /dev/null +++ b/.specify/scripts/bash/create-phr.sh @@ -0,0 +1,256 @@ +#!/usr/bin/env bash +set -euo pipefail + +# create-phr.sh - Create Prompt History Record (PHR) - Spec Kit Native +# +# Deterministic PHR location strategy: +# 1. Constitution stage: +# → history/prompts/constitution/ +# → stage: constitution +# → naming: 0001-title.constitution.prompt.md +# +# 2. Feature stages (spec-specific work): +# → history/prompts/<spec-name>/ +# → stages: spec, plan, tasks, red, green, refactor, explainer, misc +# → naming: 0001-title.spec.prompt.md +# +# 3. General stage (catch-all): +# → history/prompts/general/ +# → stage: general +# → naming: 0001-title.general.prompt.md +# +# This script ONLY: +# 1. Creates the correct directory structure +# 2. Copies the template with {{PLACEHOLDERS}} intact +# 3. Returns metadata (id, path, context) for AI to fill in +# +# The calling AI agent is responsible for filling {{PLACEHOLDERS}} +# +# Usage: +# scripts/bash/create-phr.sh \ +# --title "Setup authentication" \ +# --stage architect \ +# [--feature 001-auth] \ +# [--json] + +JSON_MODE=false +TITLE="" +STAGE="" +FEATURE="" + +# Parse arguments +while [[ $# -gt 0 ]]; do + case "$1" in + --json) JSON_MODE=true; shift ;; + --title) TITLE=${2:-}; shift 2 ;; + --stage) STAGE=${2:-}; shift 2 ;; + --feature) FEATURE=${2:-}; shift 2 ;; + --help|-h) + cat <<EOF +Usage: $0 --title <title> --stage <stage> [options] + +Required: + --title <text> Title for the PHR (used for filename) + --stage <stage> constitution|spec|plan|tasks|red|green|refactor|explainer|misc|general + +Optional: + --feature <slug> Feature slug (e.g., 001-auth). Auto-detected from branch if omitted. + --json Output JSON with id, path, and context + +Location Rules (all under history/prompts/): + - constitution → history/prompts/constitution/ + - spec, plan, tasks, red, green, refactor, explainer, misc → history/prompts/<branch-name>/ + - general → history/prompts/general/ (catch-all for non-feature work) + +Output: + Creates PHR file with template placeholders ({{ID}}, {{TITLE}}, etc.) + AI agent must fill these placeholders after creation + +Examples: + # Early-phase constitution work (no feature exists) + $0 --title "Define quality standards" --stage constitution --json + + # Feature-specific implementation work + $0 --title "Implement login" --stage green --feature 001-auth --json +EOF + exit 0 + ;; + *) shift ;; + esac +done + +# Validation +if [[ -z "$TITLE" ]]; then + echo "Error: --title is required" >&2 + exit 1 +fi + +if [[ -z "$STAGE" ]]; then + echo "Error: --stage is required" >&2 + exit 1 +fi + +# Get repository root +REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd) +SPECS_DIR="$REPO_ROOT/specs" + +# Check for template (try both locations) +TEMPLATE_PATH="" +if [[ -f "$REPO_ROOT/.specify/templates/phr-template.prompt.md" ]]; then + TEMPLATE_PATH="$REPO_ROOT/.specify/templates/phr-template.prompt.md" +elif [[ -f "$REPO_ROOT/templates/phr-template.prompt.md" ]]; then + TEMPLATE_PATH="$REPO_ROOT/templates/phr-template.prompt.md" +else + echo "Error: PHR template not found at .specify/templates/ or templates/" >&2 + exit 1 +fi + +# Deterministic location logic based on STAGE +# New structure: all prompts go under history/prompts/ with subdirectories: +# - constitution/ for constitution prompts +# - <spec-name>/ for spec-specific prompts +# - general/ for general/catch-all prompts + +case "$STAGE" in + constitution) + # Constitution prompts always go to history/prompts/constitution/ + PROMPTS_DIR="$REPO_ROOT/history/prompts/constitution" + VALID_STAGES=("constitution") + CONTEXT="constitution" + ;; + spec|plan|tasks|red|green|refactor|explainer|misc) + # Feature-specific stages: require specs/ directory and feature context + if [[ ! -d "$SPECS_DIR" ]]; then + echo "Error: Feature stage '$STAGE' requires specs/ directory and a feature context" >&2 + echo "Run /sp.feature first to create a feature, then try again" >&2 + exit 1 + fi + + # Auto-detect feature if not specified + if [[ -z "$FEATURE" ]]; then + # Try to get from SPECIFY_FEATURE environment variable + if [[ -n "${SPECIFY_FEATURE:-}" ]]; then + FEATURE="$SPECIFY_FEATURE" + # Try to match current branch + elif git rev-parse --show-toplevel >/dev/null 2>&1; then + BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "") + if [[ -n "$BRANCH" && "$BRANCH" != "main" && "$BRANCH" != "master" ]]; then + # Check if branch name matches a feature directory + if [[ -d "$SPECS_DIR/$BRANCH" ]]; then + FEATURE="$BRANCH" + fi + fi + fi + + # If still no feature, find the highest numbered feature + if [[ -z "$FEATURE" ]]; then + max_num=0 + latest_feature="" + for dir in "$SPECS_DIR"/*; do + if [[ -d "$dir" ]]; then + dirname=$(basename "$dir") + if [[ "$dirname" =~ ^([0-9]{3})- ]]; then + num=$((10#${BASH_REMATCH[1]})) + if (( num > max_num )); then + max_num=$num + latest_feature="$dirname" + fi + fi + fi + done + + if [[ -n "$latest_feature" ]]; then + FEATURE="$latest_feature" + else + echo "Error: No feature specified and no numbered features found in $SPECS_DIR" >&2 + echo "Please specify --feature or create a feature directory first" >&2 + exit 1 + fi + fi + fi + + # Validate feature exists + if [[ ! -d "$SPECS_DIR/$FEATURE" ]]; then + echo "Error: Feature directory not found: $SPECS_DIR/$FEATURE" >&2 + echo "Available features:" >&2 + ls -1 "$SPECS_DIR" 2>/dev/null | head -5 | sed 's/^/ - /' >&2 + exit 1 + fi + + # Feature prompts go to history/prompts/<branch-name>/ (same as specs/<branch-name>/) + # This keeps naming consistent across branch, specs, and prompts directories + PROMPTS_DIR="$REPO_ROOT/history/prompts/$FEATURE" + VALID_STAGES=("spec" "plan" "tasks" "red" "green" "refactor" "explainer" "misc") + CONTEXT="feature" + ;; + general) + # General stage: catch-all that goes to history/prompts/general/ + PROMPTS_DIR="$REPO_ROOT/history/prompts/general" + VALID_STAGES=("general") + CONTEXT="general" + ;; + *) + echo "Error: Unknown stage '$STAGE'" >&2 + exit 1 + ;; +esac + +# Validate stage +stage_valid=false +for valid_stage in "${VALID_STAGES[@]}"; do + if [[ "$STAGE" == "$valid_stage" ]]; then + stage_valid=true + break + fi +done + +if [[ "$stage_valid" == "false" ]]; then + echo "Error: Invalid stage '$STAGE' for $CONTEXT context" >&2 + echo "Valid stages for $CONTEXT: ${VALID_STAGES[*]}" >&2 + exit 1 +fi + +# Ensure prompts directory exists +mkdir -p "$PROMPTS_DIR" + +# Helper: slugify +slugify() { + echo "$1" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/-\+/-/g' | sed 's/^-//' | sed 's/-$//' +} + +# Get next ID (local to this directory) +get_next_id() { + local max_id=0 + for file in "$PROMPTS_DIR"/[0-9][0-9][0-9][0-9]-*.prompt.md; do + [[ -e "$file" ]] || continue + local base=$(basename "$file") + local num=${base%%-*} + if [[ "$num" =~ ^[0-9]{4}$ ]]; then + local value=$((10#$num)) + if (( value > max_id )); then + max_id=$value + fi + fi + done + printf '%04d' $((max_id + 1)) +} + +PHR_ID=$(get_next_id) +TITLE_SLUG=$(slugify "$TITLE") +STAGE_SLUG=$(slugify "$STAGE") + +# Create filename with stage extension +OUTFILE="$PROMPTS_DIR/${PHR_ID}-${TITLE_SLUG}.${STAGE_SLUG}.prompt.md" + +# Simply copy the template (AI will fill placeholders) +cp "$TEMPLATE_PATH" "$OUTFILE" + +# Output results +ABS_PATH=$(cd "$(dirname "$OUTFILE")" && pwd)/$(basename "$OUTFILE") +if $JSON_MODE; then + printf '{"id":"%s","path":"%s","context":"%s","stage":"%s","feature":"%s","template":"%s"}\n' \ + "$PHR_ID" "$ABS_PATH" "$CONTEXT" "$STAGE" "${FEATURE:-none}" "$(basename "$TEMPLATE_PATH")" +else + echo "✅ PHR template copied → $ABS_PATH" + echo "Note: AI agent should now fill in {{PLACEHOLDERS}}" +fi diff --git a/.specify/scripts/bash/setup-plan.sh b/.specify/scripts/bash/setup-plan.sh new file mode 100644 index 0000000000000000000000000000000000000000..d01c6d6cb56c7fcb2d7dd8bba613c74bac0f15df --- /dev/null +++ b/.specify/scripts/bash/setup-plan.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -e + +# Parse command line arguments +JSON_MODE=false +ARGS=() + +for arg in "$@"; do + case "$arg" in + --json) + JSON_MODE=true + ;; + --help|-h) + echo "Usage: $0 [--json]" + echo " --json Output results in JSON format" + echo " --help Show this help message" + exit 0 + ;; + *) + ARGS+=("$arg") + ;; + esac +done + +# Get script directory and load common functions +SCRIPT_DIR="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/common.sh" + +# Get all paths and variables from common functions +eval $(get_feature_paths) + +# Check if we're on a proper feature branch (only for git repos) +check_feature_branch "$CURRENT_BRANCH" "$HAS_GIT" || exit 1 + +# Ensure the feature directory exists +mkdir -p "$FEATURE_DIR" + +# Copy plan template if it exists +TEMPLATE="$REPO_ROOT/.specify/templates/plan-template.md" +if [[ -f "$TEMPLATE" ]]; then + cp "$TEMPLATE" "$IMPL_PLAN" + echo "Copied plan template to $IMPL_PLAN" +else + echo "Warning: Plan template not found at $TEMPLATE" + # Create a basic plan file if template doesn't exist + touch "$IMPL_PLAN" +fi + +# Output results +if $JSON_MODE; then + printf '{"FEATURE_SPEC":"%s","IMPL_PLAN":"%s","SPECS_DIR":"%s","BRANCH":"%s","HAS_GIT":"%s"}\n' \ + "$FEATURE_SPEC" "$IMPL_PLAN" "$FEATURE_DIR" "$CURRENT_BRANCH" "$HAS_GIT" +else + echo "FEATURE_SPEC: $FEATURE_SPEC" + echo "IMPL_PLAN: $IMPL_PLAN" + echo "SPECS_DIR: $FEATURE_DIR" + echo "BRANCH: $CURRENT_BRANCH" + echo "HAS_GIT: $HAS_GIT" +fi + diff --git a/.specify/scripts/bash/update-agent-context.sh b/.specify/scripts/bash/update-agent-context.sh new file mode 100644 index 0000000000000000000000000000000000000000..6d3e0b37ab85983dc91252e9409360d79b68e78a --- /dev/null +++ b/.specify/scripts/bash/update-agent-context.sh @@ -0,0 +1,799 @@ +#!/usr/bin/env bash + +# Update agent context files with information from plan.md +# +# This script maintains AI agent context files by parsing feature specifications +# and updating agent-specific configuration files with project information. +# +# MAIN FUNCTIONS: +# 1. Environment Validation +# - Verifies git repository structure and branch information +# - Checks for required plan.md files and templates +# - Validates file permissions and accessibility +# +# 2. Plan Data Extraction +# - Parses plan.md files to extract project metadata +# - Identifies language/version, frameworks, databases, and project types +# - Handles missing or incomplete specification data gracefully +# +# 3. Agent File Management +# - Creates new agent context files from templates when needed +# - Updates existing agent files with new project information +# - Preserves manual additions and custom configurations +# - Supports multiple AI agent formats and directory structures +# +# 4. Content Generation +# - Generates language-specific build/test commands +# - Creates appropriate project directory structures +# - Updates technology stacks and recent changes sections +# - Maintains consistent formatting and timestamps +# +# 5. Multi-Agent Support +# - Handles agent-specific file paths and naming conventions +# - Supports: Claude, Gemini, Copilot, Cursor, Qwen, opencode, Codex, Windsurf, Kilo Code, Auggie CLI, Roo Code, CodeBuddy CLI, Qoder CLI, Amp, SHAI, or Amazon Q Developer CLI +# - Can update single agents or all existing agent files +# - Creates default Claude file if no agent files exist +# +# Usage: ./update-agent-context.sh [agent_type] +# Agent types: claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|shai|q|bob|qoder +# Leave empty to update all existing agent files + +set -e + +# Enable strict error handling +set -u +set -o pipefail + +#============================================================================== +# Configuration and Global Variables +#============================================================================== + +# Get script directory and load common functions +SCRIPT_DIR="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/common.sh" + +# Get all paths and variables from common functions +eval $(get_feature_paths) + +NEW_PLAN="$IMPL_PLAN" # Alias for compatibility with existing code +AGENT_TYPE="${1:-}" + +# Agent-specific file paths +CLAUDE_FILE="$REPO_ROOT/CLAUDE.md" +GEMINI_FILE="$REPO_ROOT/GEMINI.md" +COPILOT_FILE="$REPO_ROOT/.github/agents/copilot-instructions.md" +CURSOR_FILE="$REPO_ROOT/.cursor/rules/specify-rules.mdc" +QWEN_FILE="$REPO_ROOT/QWEN.md" +AGENTS_FILE="$REPO_ROOT/AGENTS.md" +WINDSURF_FILE="$REPO_ROOT/.windsurf/rules/specify-rules.md" +KILOCODE_FILE="$REPO_ROOT/.kilocode/rules/specify-rules.md" +AUGGIE_FILE="$REPO_ROOT/.augment/rules/specify-rules.md" +ROO_FILE="$REPO_ROOT/.roo/rules/specify-rules.md" +CODEBUDDY_FILE="$REPO_ROOT/CODEBUDDY.md" +QODER_FILE="$REPO_ROOT/QODER.md" +AMP_FILE="$REPO_ROOT/AGENTS.md" +SHAI_FILE="$REPO_ROOT/SHAI.md" +Q_FILE="$REPO_ROOT/AGENTS.md" +BOB_FILE="$REPO_ROOT/AGENTS.md" + +# Template file +TEMPLATE_FILE="$REPO_ROOT/.specify/templates/agent-file-template.md" + +# Global variables for parsed plan data +NEW_LANG="" +NEW_FRAMEWORK="" +NEW_DB="" +NEW_PROJECT_TYPE="" + +#============================================================================== +# Utility Functions +#============================================================================== + +log_info() { + echo "INFO: $1" +} + +log_success() { + echo "✓ $1" +} + +log_error() { + echo "ERROR: $1" >&2 +} + +log_warning() { + echo "WARNING: $1" >&2 +} + +# Cleanup function for temporary files +cleanup() { + local exit_code=$? + rm -f /tmp/agent_update_*_$$ + rm -f /tmp/manual_additions_$$ + exit $exit_code +} + +# Set up cleanup trap +trap cleanup EXIT INT TERM + +#============================================================================== +# Validation Functions +#============================================================================== + +validate_environment() { + # Check if we have a current branch/feature (git or non-git) + if [[ -z "$CURRENT_BRANCH" ]]; then + log_error "Unable to determine current feature" + if [[ "$HAS_GIT" == "true" ]]; then + log_info "Make sure you're on a feature branch" + else + log_info "Set SPECIFY_FEATURE environment variable or create a feature first" + fi + exit 1 + fi + + # Check if plan.md exists + if [[ ! -f "$NEW_PLAN" ]]; then + log_error "No plan.md found at $NEW_PLAN" + log_info "Make sure you're working on a feature with a corresponding spec directory" + if [[ "$HAS_GIT" != "true" ]]; then + log_info "Use: export SPECIFY_FEATURE=your-feature-name or create a new feature first" + fi + exit 1 + fi + + # Check if template exists (needed for new files) + if [[ ! -f "$TEMPLATE_FILE" ]]; then + log_warning "Template file not found at $TEMPLATE_FILE" + log_warning "Creating new agent files will fail" + fi +} + +#============================================================================== +# Plan Parsing Functions +#============================================================================== + +extract_plan_field() { + local field_pattern="$1" + local plan_file="$2" + + grep "^\*\*${field_pattern}\*\*: " "$plan_file" 2>/dev/null | \ + head -1 | \ + sed "s|^\*\*${field_pattern}\*\*: ||" | \ + sed 's/^[ \t]*//;s/[ \t]*$//' | \ + grep -v "NEEDS CLARIFICATION" | \ + grep -v "^N/A$" || echo "" +} + +parse_plan_data() { + local plan_file="$1" + + if [[ ! -f "$plan_file" ]]; then + log_error "Plan file not found: $plan_file" + return 1 + fi + + if [[ ! -r "$plan_file" ]]; then + log_error "Plan file is not readable: $plan_file" + return 1 + fi + + log_info "Parsing plan data from $plan_file" + + NEW_LANG=$(extract_plan_field "Language/Version" "$plan_file") + NEW_FRAMEWORK=$(extract_plan_field "Primary Dependencies" "$plan_file") + NEW_DB=$(extract_plan_field "Storage" "$plan_file") + NEW_PROJECT_TYPE=$(extract_plan_field "Project Type" "$plan_file") + + # Log what we found + if [[ -n "$NEW_LANG" ]]; then + log_info "Found language: $NEW_LANG" + else + log_warning "No language information found in plan" + fi + + if [[ -n "$NEW_FRAMEWORK" ]]; then + log_info "Found framework: $NEW_FRAMEWORK" + fi + + if [[ -n "$NEW_DB" ]] && [[ "$NEW_DB" != "N/A" ]]; then + log_info "Found database: $NEW_DB" + fi + + if [[ -n "$NEW_PROJECT_TYPE" ]]; then + log_info "Found project type: $NEW_PROJECT_TYPE" + fi +} + +format_technology_stack() { + local lang="$1" + local framework="$2" + local parts=() + + # Add non-empty parts + [[ -n "$lang" && "$lang" != "NEEDS CLARIFICATION" ]] && parts+=("$lang") + [[ -n "$framework" && "$framework" != "NEEDS CLARIFICATION" && "$framework" != "N/A" ]] && parts+=("$framework") + + # Join with proper formatting + if [[ ${#parts[@]} -eq 0 ]]; then + echo "" + elif [[ ${#parts[@]} -eq 1 ]]; then + echo "${parts[0]}" + else + # Join multiple parts with " + " + local result="${parts[0]}" + for ((i=1; i<${#parts[@]}; i++)); do + result="$result + ${parts[i]}" + done + echo "$result" + fi +} + +#============================================================================== +# Template and Content Generation Functions +#============================================================================== + +get_project_structure() { + local project_type="$1" + + if [[ "$project_type" == *"web"* ]]; then + echo "backend/\\nfrontend/\\ntests/" + else + echo "src/\\ntests/" + fi +} + +get_commands_for_language() { + local lang="$1" + + case "$lang" in + *"Python"*) + echo "cd src && pytest && ruff check ." + ;; + *"Rust"*) + echo "cargo test && cargo clippy" + ;; + *"JavaScript"*|*"TypeScript"*) + echo "npm test \\&\\& npm run lint" + ;; + *) + echo "# Add commands for $lang" + ;; + esac +} + +get_language_conventions() { + local lang="$1" + echo "$lang: Follow standard conventions" +} + +create_new_agent_file() { + local target_file="$1" + local temp_file="$2" + local project_name="$3" + local current_date="$4" + + if [[ ! -f "$TEMPLATE_FILE" ]]; then + log_error "Template not found at $TEMPLATE_FILE" + return 1 + fi + + if [[ ! -r "$TEMPLATE_FILE" ]]; then + log_error "Template file is not readable: $TEMPLATE_FILE" + return 1 + fi + + log_info "Creating new agent context file from template..." + + if ! cp "$TEMPLATE_FILE" "$temp_file"; then + log_error "Failed to copy template file" + return 1 + fi + + # Replace template placeholders + local project_structure + project_structure=$(get_project_structure "$NEW_PROJECT_TYPE") + + local commands + commands=$(get_commands_for_language "$NEW_LANG") + + local language_conventions + language_conventions=$(get_language_conventions "$NEW_LANG") + + # Perform substitutions with error checking using safer approach + # Escape special characters for sed by using a different delimiter or escaping + local escaped_lang=$(printf '%s\n' "$NEW_LANG" | sed 's/[\[\.*^$()+{}|]/\\&/g') + local escaped_framework=$(printf '%s\n' "$NEW_FRAMEWORK" | sed 's/[\[\.*^$()+{}|]/\\&/g') + local escaped_branch=$(printf '%s\n' "$CURRENT_BRANCH" | sed 's/[\[\.*^$()+{}|]/\\&/g') + + # Build technology stack and recent change strings conditionally + local tech_stack + if [[ -n "$escaped_lang" && -n "$escaped_framework" ]]; then + tech_stack="- $escaped_lang + $escaped_framework ($escaped_branch)" + elif [[ -n "$escaped_lang" ]]; then + tech_stack="- $escaped_lang ($escaped_branch)" + elif [[ -n "$escaped_framework" ]]; then + tech_stack="- $escaped_framework ($escaped_branch)" + else + tech_stack="- ($escaped_branch)" + fi + + local recent_change + if [[ -n "$escaped_lang" && -n "$escaped_framework" ]]; then + recent_change="- $escaped_branch: Added $escaped_lang + $escaped_framework" + elif [[ -n "$escaped_lang" ]]; then + recent_change="- $escaped_branch: Added $escaped_lang" + elif [[ -n "$escaped_framework" ]]; then + recent_change="- $escaped_branch: Added $escaped_framework" + else + recent_change="- $escaped_branch: Added" + fi + + local substitutions=( + "s|\[PROJECT NAME\]|$project_name|" + "s|\[DATE\]|$current_date|" + "s|\[EXTRACTED FROM ALL PLAN.MD FILES\]|$tech_stack|" + "s|\[ACTUAL STRUCTURE FROM PLANS\]|$project_structure|g" + "s|\[ONLY COMMANDS FOR ACTIVE TECHNOLOGIES\]|$commands|" + "s|\[LANGUAGE-SPECIFIC, ONLY FOR LANGUAGES IN USE\]|$language_conventions|" + "s|\[LAST 3 FEATURES AND WHAT THEY ADDED\]|$recent_change|" + ) + + for substitution in "${substitutions[@]}"; do + if ! sed -i.bak -e "$substitution" "$temp_file"; then + log_error "Failed to perform substitution: $substitution" + rm -f "$temp_file" "$temp_file.bak" + return 1 + fi + done + + # Convert \n sequences to actual newlines + newline=$(printf '\n') + sed -i.bak2 "s/\\\\n/${newline}/g" "$temp_file" + + # Clean up backup files + rm -f "$temp_file.bak" "$temp_file.bak2" + + return 0 +} + + + + +update_existing_agent_file() { + local target_file="$1" + local current_date="$2" + + log_info "Updating existing agent context file..." + + # Use a single temporary file for atomic update + local temp_file + temp_file=$(mktemp) || { + log_error "Failed to create temporary file" + return 1 + } + + # Process the file in one pass + local tech_stack=$(format_technology_stack "$NEW_LANG" "$NEW_FRAMEWORK") + local new_tech_entries=() + local new_change_entry="" + + # Prepare new technology entries + if [[ -n "$tech_stack" ]] && ! grep -q "$tech_stack" "$target_file"; then + new_tech_entries+=("- $tech_stack ($CURRENT_BRANCH)") + fi + + if [[ -n "$NEW_DB" ]] && [[ "$NEW_DB" != "N/A" ]] && [[ "$NEW_DB" != "NEEDS CLARIFICATION" ]] && ! grep -q "$NEW_DB" "$target_file"; then + new_tech_entries+=("- $NEW_DB ($CURRENT_BRANCH)") + fi + + # Prepare new change entry + if [[ -n "$tech_stack" ]]; then + new_change_entry="- $CURRENT_BRANCH: Added $tech_stack" + elif [[ -n "$NEW_DB" ]] && [[ "$NEW_DB" != "N/A" ]] && [[ "$NEW_DB" != "NEEDS CLARIFICATION" ]]; then + new_change_entry="- $CURRENT_BRANCH: Added $NEW_DB" + fi + + # Check if sections exist in the file + local has_active_technologies=0 + local has_recent_changes=0 + + if grep -q "^## Active Technologies" "$target_file" 2>/dev/null; then + has_active_technologies=1 + fi + + if grep -q "^## Recent Changes" "$target_file" 2>/dev/null; then + has_recent_changes=1 + fi + + # Process file line by line + local in_tech_section=false + local in_changes_section=false + local tech_entries_added=false + local changes_entries_added=false + local existing_changes_count=0 + local file_ended=false + + while IFS= read -r line || [[ -n "$line" ]]; do + # Handle Active Technologies section + if [[ "$line" == "## Active Technologies" ]]; then + echo "$line" >> "$temp_file" + in_tech_section=true + continue + elif [[ $in_tech_section == true ]] && [[ "$line" =~ ^##[[:space:]] ]]; then + # Add new tech entries before closing the section + if [[ $tech_entries_added == false ]] && [[ ${#new_tech_entries[@]} -gt 0 ]]; then + printf '%s\n' "${new_tech_entries[@]}" >> "$temp_file" + tech_entries_added=true + fi + echo "$line" >> "$temp_file" + in_tech_section=false + continue + elif [[ $in_tech_section == true ]] && [[ -z "$line" ]]; then + # Add new tech entries before empty line in tech section + if [[ $tech_entries_added == false ]] && [[ ${#new_tech_entries[@]} -gt 0 ]]; then + printf '%s\n' "${new_tech_entries[@]}" >> "$temp_file" + tech_entries_added=true + fi + echo "$line" >> "$temp_file" + continue + fi + + # Handle Recent Changes section + if [[ "$line" == "## Recent Changes" ]]; then + echo "$line" >> "$temp_file" + # Add new change entry right after the heading + if [[ -n "$new_change_entry" ]]; then + echo "$new_change_entry" >> "$temp_file" + fi + in_changes_section=true + changes_entries_added=true + continue + elif [[ $in_changes_section == true ]] && [[ "$line" =~ ^##[[:space:]] ]]; then + echo "$line" >> "$temp_file" + in_changes_section=false + continue + elif [[ $in_changes_section == true ]] && [[ "$line" == "- "* ]]; then + # Keep only first 2 existing changes + if [[ $existing_changes_count -lt 2 ]]; then + echo "$line" >> "$temp_file" + ((existing_changes_count++)) + fi + continue + fi + + # Update timestamp + if [[ "$line" =~ \*\*Last\ updated\*\*:.*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] ]]; then + echo "$line" | sed "s/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/$current_date/" >> "$temp_file" + else + echo "$line" >> "$temp_file" + fi + done < "$target_file" + + # Post-loop check: if we're still in the Active Technologies section and haven't added new entries + if [[ $in_tech_section == true ]] && [[ $tech_entries_added == false ]] && [[ ${#new_tech_entries[@]} -gt 0 ]]; then + printf '%s\n' "${new_tech_entries[@]}" >> "$temp_file" + tech_entries_added=true + fi + + # If sections don't exist, add them at the end of the file + if [[ $has_active_technologies -eq 0 ]] && [[ ${#new_tech_entries[@]} -gt 0 ]]; then + echo "" >> "$temp_file" + echo "## Active Technologies" >> "$temp_file" + printf '%s\n' "${new_tech_entries[@]}" >> "$temp_file" + tech_entries_added=true + fi + + if [[ $has_recent_changes -eq 0 ]] && [[ -n "$new_change_entry" ]]; then + echo "" >> "$temp_file" + echo "## Recent Changes" >> "$temp_file" + echo "$new_change_entry" >> "$temp_file" + changes_entries_added=true + fi + + # Move temp file to target atomically + if ! mv "$temp_file" "$target_file"; then + log_error "Failed to update target file" + rm -f "$temp_file" + return 1 + fi + + return 0 +} +#============================================================================== +# Main Agent File Update Function +#============================================================================== + +update_agent_file() { + local target_file="$1" + local agent_name="$2" + + if [[ -z "$target_file" ]] || [[ -z "$agent_name" ]]; then + log_error "update_agent_file requires target_file and agent_name parameters" + return 1 + fi + + log_info "Updating $agent_name context file: $target_file" + + local project_name + project_name=$(basename "$REPO_ROOT") + local current_date + current_date=$(date +%Y-%m-%d) + + # Create directory if it doesn't exist + local target_dir + target_dir=$(dirname "$target_file") + if [[ ! -d "$target_dir" ]]; then + if ! mkdir -p "$target_dir"; then + log_error "Failed to create directory: $target_dir" + return 1 + fi + fi + + if [[ ! -f "$target_file" ]]; then + # Create new file from template + local temp_file + temp_file=$(mktemp) || { + log_error "Failed to create temporary file" + return 1 + } + + if create_new_agent_file "$target_file" "$temp_file" "$project_name" "$current_date"; then + if mv "$temp_file" "$target_file"; then + log_success "Created new $agent_name context file" + else + log_error "Failed to move temporary file to $target_file" + rm -f "$temp_file" + return 1 + fi + else + log_error "Failed to create new agent file" + rm -f "$temp_file" + return 1 + fi + else + # Update existing file + if [[ ! -r "$target_file" ]]; then + log_error "Cannot read existing file: $target_file" + return 1 + fi + + if [[ ! -w "$target_file" ]]; then + log_error "Cannot write to existing file: $target_file" + return 1 + fi + + if update_existing_agent_file "$target_file" "$current_date"; then + log_success "Updated existing $agent_name context file" + else + log_error "Failed to update existing agent file" + return 1 + fi + fi + + return 0 +} + +#============================================================================== +# Agent Selection and Processing +#============================================================================== + +update_specific_agent() { + local agent_type="$1" + + case "$agent_type" in + claude) + update_agent_file "$CLAUDE_FILE" "Claude Code" + ;; + gemini) + update_agent_file "$GEMINI_FILE" "Gemini CLI" + ;; + copilot) + update_agent_file "$COPILOT_FILE" "GitHub Copilot" + ;; + cursor-agent) + update_agent_file "$CURSOR_FILE" "Cursor IDE" + ;; + qwen) + update_agent_file "$QWEN_FILE" "Qwen Code" + ;; + opencode) + update_agent_file "$AGENTS_FILE" "opencode" + ;; + codex) + update_agent_file "$AGENTS_FILE" "Codex CLI" + ;; + windsurf) + update_agent_file "$WINDSURF_FILE" "Windsurf" + ;; + kilocode) + update_agent_file "$KILOCODE_FILE" "Kilo Code" + ;; + auggie) + update_agent_file "$AUGGIE_FILE" "Auggie CLI" + ;; + roo) + update_agent_file "$ROO_FILE" "Roo Code" + ;; + codebuddy) + update_agent_file "$CODEBUDDY_FILE" "CodeBuddy CLI" + ;; + qoder) + update_agent_file "$QODER_FILE" "Qoder CLI" + ;; + amp) + update_agent_file "$AMP_FILE" "Amp" + ;; + shai) + update_agent_file "$SHAI_FILE" "SHAI" + ;; + q) + update_agent_file "$Q_FILE" "Amazon Q Developer CLI" + ;; + bob) + update_agent_file "$BOB_FILE" "IBM Bob" + ;; + *) + log_error "Unknown agent type '$agent_type'" + log_error "Expected: claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|amp|shai|q|bob|qoder" + exit 1 + ;; + esac +} + +update_all_existing_agents() { + local found_agent=false + + # Check each possible agent file and update if it exists + if [[ -f "$CLAUDE_FILE" ]]; then + update_agent_file "$CLAUDE_FILE" "Claude Code" + found_agent=true + fi + + if [[ -f "$GEMINI_FILE" ]]; then + update_agent_file "$GEMINI_FILE" "Gemini CLI" + found_agent=true + fi + + if [[ -f "$COPILOT_FILE" ]]; then + update_agent_file "$COPILOT_FILE" "GitHub Copilot" + found_agent=true + fi + + if [[ -f "$CURSOR_FILE" ]]; then + update_agent_file "$CURSOR_FILE" "Cursor IDE" + found_agent=true + fi + + if [[ -f "$QWEN_FILE" ]]; then + update_agent_file "$QWEN_FILE" "Qwen Code" + found_agent=true + fi + + if [[ -f "$AGENTS_FILE" ]]; then + update_agent_file "$AGENTS_FILE" "Codex/opencode" + found_agent=true + fi + + if [[ -f "$WINDSURF_FILE" ]]; then + update_agent_file "$WINDSURF_FILE" "Windsurf" + found_agent=true + fi + + if [[ -f "$KILOCODE_FILE" ]]; then + update_agent_file "$KILOCODE_FILE" "Kilo Code" + found_agent=true + fi + + if [[ -f "$AUGGIE_FILE" ]]; then + update_agent_file "$AUGGIE_FILE" "Auggie CLI" + found_agent=true + fi + + if [[ -f "$ROO_FILE" ]]; then + update_agent_file "$ROO_FILE" "Roo Code" + found_agent=true + fi + + if [[ -f "$CODEBUDDY_FILE" ]]; then + update_agent_file "$CODEBUDDY_FILE" "CodeBuddy CLI" + found_agent=true + fi + + if [[ -f "$SHAI_FILE" ]]; then + update_agent_file "$SHAI_FILE" "SHAI" + found_agent=true + fi + + if [[ -f "$QODER_FILE" ]]; then + update_agent_file "$QODER_FILE" "Qoder CLI" + found_agent=true + fi + + if [[ -f "$Q_FILE" ]]; then + update_agent_file "$Q_FILE" "Amazon Q Developer CLI" + found_agent=true + fi + + if [[ -f "$BOB_FILE" ]]; then + update_agent_file "$BOB_FILE" "IBM Bob" + found_agent=true + fi + + # If no agent files exist, create a default Claude file + if [[ "$found_agent" == false ]]; then + log_info "No existing agent files found, creating default Claude file..." + update_agent_file "$CLAUDE_FILE" "Claude Code" + fi +} +print_summary() { + echo + log_info "Summary of changes:" + + if [[ -n "$NEW_LANG" ]]; then + echo " - Added language: $NEW_LANG" + fi + + if [[ -n "$NEW_FRAMEWORK" ]]; then + echo " - Added framework: $NEW_FRAMEWORK" + fi + + if [[ -n "$NEW_DB" ]] && [[ "$NEW_DB" != "N/A" ]]; then + echo " - Added database: $NEW_DB" + fi + + echo + + log_info "Usage: $0 [claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|codebuddy|shai|q|bob|qoder]" +} + +#============================================================================== +# Main Execution +#============================================================================== + +main() { + # Validate environment before proceeding + validate_environment + + log_info "=== Updating agent context files for feature $CURRENT_BRANCH ===" + + # Parse the plan file to extract project information + if ! parse_plan_data "$NEW_PLAN"; then + log_error "Failed to parse plan data" + exit 1 + fi + + # Process based on agent type argument + local success=true + + if [[ -z "$AGENT_TYPE" ]]; then + # No specific agent provided - update all existing agent files + log_info "No agent specified, updating all existing agent files..." + if ! update_all_existing_agents; then + success=false + fi + else + # Specific agent provided - update only that agent + log_info "Updating specific agent: $AGENT_TYPE" + if ! update_specific_agent "$AGENT_TYPE"; then + success=false + fi + fi + + # Print summary + print_summary + + if [[ "$success" == true ]]; then + log_success "Agent context update completed successfully" + exit 0 + else + log_error "Agent context update completed with errors" + exit 1 + fi +} + +# Execute main function if script is run directly +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + main "$@" +fi + diff --git a/.specify/templates/adr-template.md b/.specify/templates/adr-template.md new file mode 100644 index 0000000000000000000000000000000000000000..b4cd4ca3e46fd4ddd941fde3c36c9b7b3bd4b1d3 --- /dev/null +++ b/.specify/templates/adr-template.md @@ -0,0 +1,56 @@ +# ADR-{{ID}}: {{TITLE}} + +> **Scope**: Document decision clusters, not individual technology choices. Group related decisions that work together (e.g., "Frontend Stack" not separate ADRs for framework, styling, deployment). + +- **Status:** Proposed | Accepted | Superseded | Rejected +- **Date:** {{DATE_ISO}} +- **Feature:** {{FEATURE_NAME}} +- **Context:** {{CONTEXT}} + +<!-- Significance checklist (ALL must be true to justify this ADR) + 1) Impact: Long-term consequence for architecture/platform/security? + 2) Alternatives: Multiple viable options considered with tradeoffs? + 3) Scope: Cross-cutting concern (not an isolated detail)? + If any are false, prefer capturing as a PHR note instead of an ADR. --> + +## Decision + +{{DECISION}} + +<!-- For technology stacks, list all components: + - Framework: Next.js 14 (App Router) + - Styling: Tailwind CSS v3 + - Deployment: Vercel + - State Management: React Context (start simple) +--> + +## Consequences + +### Positive + +{{POSITIVE_CONSEQUENCES}} + +<!-- Example: Integrated tooling, excellent DX, fast deploys, strong TypeScript support --> + +### Negative + +{{NEGATIVE_CONSEQUENCES}} + +<!-- Example: Vendor lock-in to Vercel, framework coupling, learning curve --> + +## Alternatives Considered + +{{ALTERNATIVES}} + +<!-- Group alternatives by cluster: + Alternative Stack A: Remix + styled-components + Cloudflare + Alternative Stack B: Vite + vanilla CSS + AWS Amplify + Why rejected: Less integrated, more setup complexity +--> + +## References + +- Feature Spec: {{SPEC_LINK}} +- Implementation Plan: {{PLAN_LINK}} +- Related ADRs: {{RELATED_ADRS}} +- Evaluator Evidence: {{EVAL_NOTES_LINK}} <!-- link to eval notes/PHR showing graders and outcomes --> diff --git a/.specify/templates/agent-file-template.md b/.specify/templates/agent-file-template.md new file mode 100644 index 0000000000000000000000000000000000000000..4cc7fd66783f4b0d6a89eed7ac3eaf5f77b69dba --- /dev/null +++ b/.specify/templates/agent-file-template.md @@ -0,0 +1,28 @@ +# [PROJECT NAME] Development Guidelines + +Auto-generated from all feature plans. Last updated: [DATE] + +## Active Technologies + +[EXTRACTED FROM ALL PLAN.MD FILES] + +## Project Structure + +```text +[ACTUAL STRUCTURE FROM PLANS] +``` + +## Commands + +[ONLY COMMANDS FOR ACTIVE TECHNOLOGIES] + +## Code Style + +[LANGUAGE-SPECIFIC, ONLY FOR LANGUAGES IN USE] + +## Recent Changes + +[LAST 3 FEATURES AND WHAT THEY ADDED] + +<!-- MANUAL ADDITIONS START --> +<!-- MANUAL ADDITIONS END --> diff --git a/.specify/templates/checklist-template.md b/.specify/templates/checklist-template.md new file mode 100644 index 0000000000000000000000000000000000000000..87a4295d1b78f7a93ecfa935162dbf84649db929 --- /dev/null +++ b/.specify/templates/checklist-template.md @@ -0,0 +1,40 @@ +# [CHECKLIST TYPE] Checklist: [FEATURE NAME] + +**Purpose**: [Brief description of what this checklist covers] +**Created**: [DATE] +**Feature**: [Link to spec.md or relevant documentation] + +**Note**: This checklist is generated by the `/sp.checklist` command based on feature context and requirements. + +<!-- + ============================================================================ + IMPORTANT: The checklist items below are SAMPLE ITEMS for illustration only. + + The /sp.checklist command MUST replace these with actual items based on: + - User's specific checklist request + - Feature requirements from spec.md + - Technical context from plan.md + - Implementation details from tasks.md + + DO NOT keep these sample items in the generated checklist file. + ============================================================================ +--> + +## [Category 1] + +- [ ] CHK001 First checklist item with clear action +- [ ] CHK002 Second checklist item +- [ ] CHK003 Third checklist item + +## [Category 2] + +- [ ] CHK004 Another category item +- [ ] CHK005 Item with specific criteria +- [ ] CHK006 Final item in this category + +## Notes + +- Check items off as completed: `[x]` +- Add comments or findings inline +- Link to relevant resources or documentation +- Items are numbered sequentially for easy reference diff --git a/.specify/templates/phr-template.prompt.md b/.specify/templates/phr-template.prompt.md new file mode 100644 index 0000000000000000000000000000000000000000..3315d8e138064969373324dd2fa8e33e5e1a4177 --- /dev/null +++ b/.specify/templates/phr-template.prompt.md @@ -0,0 +1,45 @@ +--- +id: {{ID}} +title: {{TITLE}} +stage: {{STAGE}} +date: {{DATE_ISO}} +surface: {{SURFACE}} +model: {{MODEL}} +feature: {{FEATURE}} +branch: {{BRANCH}} +user: {{USER}} +command: {{COMMAND}} +labels: [{{LABELS}}] +links: + spec: {{LINKS_SPEC}} + ticket: {{LINKS_TICKET}} + adr: {{LINKS_ADR}} + pr: {{LINKS_PR}} +files: +{{FILES_YAML}} +tests: +{{TESTS_YAML}} +--- + +## Prompt + +{{PROMPT_TEXT}} + +## Response snapshot + +{{RESPONSE_TEXT}} + +## Outcome + +- ✅ Impact: {{OUTCOME_IMPACT}} +- 🧪 Tests: {{TESTS_SUMMARY}} +- 📁 Files: {{FILES_SUMMARY}} +- 🔁 Next prompts: {{NEXT_PROMPTS}} +- 🧠 Reflection: {{REFLECTION_NOTE}} + +## Evaluation notes (flywheel) + +- Failure modes observed: {{FAILURE_MODES}} +- Graders run and results (PASS/FAIL): {{GRADER_RESULTS}} +- Prompt variant (if applicable): {{PROMPT_VARIANT_ID}} +- Next experiment (smallest change to try): {{NEXT_EXPERIMENT}} diff --git a/.specify/templates/plan-template.md b/.specify/templates/plan-template.md new file mode 100644 index 0000000000000000000000000000000000000000..b420402aabae1cb46c06a44ae892f8ab3950d4b3 --- /dev/null +++ b/.specify/templates/plan-template.md @@ -0,0 +1,104 @@ +# Implementation Plan: [FEATURE] + +**Branch**: `[###-feature-name]` | **Date**: [DATE] | **Spec**: [link] +**Input**: Feature specification from `/specs/[###-feature-name]/spec.md` + +**Note**: This template is filled in by the `/sp.plan` command. See `.specify/templates/commands/plan.md` for the execution workflow. + +## Summary + +[Extract from feature spec: primary requirement + technical approach from research] + +## Technical Context + +<!-- + ACTION REQUIRED: Replace the content in this section with the technical details + for the project. The structure here is presented in advisory capacity to guide + the iteration process. +--> + +**Language/Version**: [e.g., Python 3.11, Swift 5.9, Rust 1.75 or NEEDS CLARIFICATION] +**Primary Dependencies**: [e.g., FastAPI, UIKit, LLVM or NEEDS CLARIFICATION] +**Storage**: [if applicable, e.g., PostgreSQL, CoreData, files or N/A] +**Testing**: [e.g., pytest, XCTest, cargo test or NEEDS CLARIFICATION] +**Target Platform**: [e.g., Linux server, iOS 15+, WASM or NEEDS CLARIFICATION] +**Project Type**: [single/web/mobile - determines source structure] +**Performance Goals**: [domain-specific, e.g., 1000 req/s, 10k lines/sec, 60 fps or NEEDS CLARIFICATION] +**Constraints**: [domain-specific, e.g., <200ms p95, <100MB memory, offline-capable or NEEDS CLARIFICATION] +**Scale/Scope**: [domain-specific, e.g., 10k users, 1M LOC, 50 screens or NEEDS CLARIFICATION] + +## Constitution Check + +*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.* + +[Gates determined based on constitution file] + +## Project Structure + +### Documentation (this feature) + +```text +specs/[###-feature]/ +├── plan.md # This file (/sp.plan command output) +├── research.md # Phase 0 output (/sp.plan command) +├── data-model.md # Phase 1 output (/sp.plan command) +├── quickstart.md # Phase 1 output (/sp.plan command) +├── contracts/ # Phase 1 output (/sp.plan command) +└── tasks.md # Phase 2 output (/sp.tasks command - NOT created by /sp.plan) +``` + +### Source Code (repository root) +<!-- + ACTION REQUIRED: Replace the placeholder tree below with the concrete layout + for this feature. Delete unused options and expand the chosen structure with + real paths (e.g., apps/admin, packages/something). The delivered plan must + not include Option labels. +--> + +```text +# [REMOVE IF UNUSED] Option 1: Single project (DEFAULT) +src/ +├── models/ +├── services/ +├── cli/ +└── lib/ + +tests/ +├── contract/ +├── integration/ +└── unit/ + +# [REMOVE IF UNUSED] Option 2: Web application (when "frontend" + "backend" detected) +backend/ +├── src/ +│ ├── models/ +│ ├── services/ +│ └── api/ +└── tests/ + +frontend/ +├── src/ +│ ├── components/ +│ ├── pages/ +│ └── services/ +└── tests/ + +# [REMOVE IF UNUSED] Option 3: Mobile + API (when "iOS/Android" detected) +api/ +└── [same as backend above] + +ios/ or android/ +└── [platform-specific structure: feature modules, UI flows, platform tests] +``` + +**Structure Decision**: [Document the selected structure and reference the real +directories captured above] + +## Complexity Tracking + +> **Fill ONLY if Constitution Check has violations that must be justified** + +| Violation | Why Needed | Simpler Alternative Rejected Because | +|-----------|------------|-------------------------------------| +| [e.g., 4th project] | [current need] | [why 3 projects insufficient] | +| [e.g., Repository pattern] | [specific problem] | [why direct DB access insufficient] | diff --git a/.specify/templates/spec-template.md b/.specify/templates/spec-template.md new file mode 100644 index 0000000000000000000000000000000000000000..c67d9149807eadb0891e4d57b511ba325e7087d1 --- /dev/null +++ b/.specify/templates/spec-template.md @@ -0,0 +1,115 @@ +# Feature Specification: [FEATURE NAME] + +**Feature Branch**: `[###-feature-name]` +**Created**: [DATE] +**Status**: Draft +**Input**: User description: "$ARGUMENTS" + +## User Scenarios & Testing *(mandatory)* + +<!-- + IMPORTANT: User stories should be PRIORITIZED as user journeys ordered by importance. + Each user story/journey must be INDEPENDENTLY TESTABLE - meaning if you implement just ONE of them, + you should still have a viable MVP (Minimum Viable Product) that delivers value. + + Assign priorities (P1, P2, P3, etc.) to each story, where P1 is the most critical. + Think of each story as a standalone slice of functionality that can be: + - Developed independently + - Tested independently + - Deployed independently + - Demonstrated to users independently +--> + +### User Story 1 - [Brief Title] (Priority: P1) + +[Describe this user journey in plain language] + +**Why this priority**: [Explain the value and why it has this priority level] + +**Independent Test**: [Describe how this can be tested independently - e.g., "Can be fully tested by [specific action] and delivers [specific value]"] + +**Acceptance Scenarios**: + +1. **Given** [initial state], **When** [action], **Then** [expected outcome] +2. **Given** [initial state], **When** [action], **Then** [expected outcome] + +--- + +### User Story 2 - [Brief Title] (Priority: P2) + +[Describe this user journey in plain language] + +**Why this priority**: [Explain the value and why it has this priority level] + +**Independent Test**: [Describe how this can be tested independently] + +**Acceptance Scenarios**: + +1. **Given** [initial state], **When** [action], **Then** [expected outcome] + +--- + +### User Story 3 - [Brief Title] (Priority: P3) + +[Describe this user journey in plain language] + +**Why this priority**: [Explain the value and why it has this priority level] + +**Independent Test**: [Describe how this can be tested independently] + +**Acceptance Scenarios**: + +1. **Given** [initial state], **When** [action], **Then** [expected outcome] + +--- + +[Add more user stories as needed, each with an assigned priority] + +### Edge Cases + +<!-- + ACTION REQUIRED: The content in this section represents placeholders. + Fill them out with the right edge cases. +--> + +- What happens when [boundary condition]? +- How does system handle [error scenario]? + +## Requirements *(mandatory)* + +<!-- + ACTION REQUIRED: The content in this section represents placeholders. + Fill them out with the right functional requirements. +--> + +### Functional Requirements + +- **FR-001**: System MUST [specific capability, e.g., "allow users to create accounts"] +- **FR-002**: System MUST [specific capability, e.g., "validate email addresses"] +- **FR-003**: Users MUST be able to [key interaction, e.g., "reset their password"] +- **FR-004**: System MUST [data requirement, e.g., "persist user preferences"] +- **FR-005**: System MUST [behavior, e.g., "log all security events"] + +*Example of marking unclear requirements:* + +- **FR-006**: System MUST authenticate users via [NEEDS CLARIFICATION: auth method not specified - email/password, SSO, OAuth?] +- **FR-007**: System MUST retain user data for [NEEDS CLARIFICATION: retention period not specified] + +### Key Entities *(include if feature involves data)* + +- **[Entity 1]**: [What it represents, key attributes without implementation] +- **[Entity 2]**: [What it represents, relationships to other entities] + +## Success Criteria *(mandatory)* + +<!-- + ACTION REQUIRED: Define measurable success criteria. + These must be technology-agnostic and measurable. +--> + +### Measurable Outcomes + +- **SC-001**: [Measurable metric, e.g., "Users can complete account creation in under 2 minutes"] +- **SC-002**: [Measurable metric, e.g., "System handles 1000 concurrent users without degradation"] +- **SC-003**: [User satisfaction metric, e.g., "90% of users successfully complete primary task on first attempt"] +- **SC-004**: [Business metric, e.g., "Reduce support tickets related to [X] by 50%"] diff --git a/.specify/templates/tasks-template.md b/.specify/templates/tasks-template.md new file mode 100644 index 0000000000000000000000000000000000000000..978dfcfead4bdeca6778a9d7aa18ada73bbec714 --- /dev/null +++ b/.specify/templates/tasks-template.md @@ -0,0 +1,251 @@ +--- + +description: "Task list template for feature implementation" +--- + +# Tasks: [FEATURE NAME] + +**Input**: Design documents from `/specs/[###-feature-name]/` +**Prerequisites**: plan.md (required), spec.md (required for user stories), research.md, data-model.md, contracts/ + +**Tests**: The examples below include test tasks. Tests are OPTIONAL - only include them if explicitly requested in the feature specification. + +**Organization**: Tasks are grouped by user story to enable independent implementation and testing of each story. + +## Format: `[ID] [P?] [Story] Description` + +- **[P]**: Can run in parallel (different files, no dependencies) +- **[Story]**: Which user story this task belongs to (e.g., US1, US2, US3) +- Include exact file paths in descriptions + +## Path Conventions + +- **Single project**: `src/`, `tests/` at repository root +- **Web app**: `backend/src/`, `frontend/src/` +- **Mobile**: `api/src/`, `ios/src/` or `android/src/` +- Paths shown below assume single project - adjust based on plan.md structure + +<!-- + ============================================================================ + IMPORTANT: The tasks below are SAMPLE TASKS for illustration purposes only. + + The /sp.tasks command MUST replace these with actual tasks based on: + - User stories from spec.md (with their priorities P1, P2, P3...) + - Feature requirements from plan.md + - Entities from data-model.md + - Endpoints from contracts/ + + Tasks MUST be organized by user story so each story can be: + - Implemented independently + - Tested independently + - Delivered as an MVP increment + + DO NOT keep these sample tasks in the generated tasks.md file. + ============================================================================ +--> + +## Phase 1: Setup (Shared Infrastructure) + +**Purpose**: Project initialization and basic structure + +- [ ] T001 Create project structure per implementation plan +- [ ] T002 Initialize [language] project with [framework] dependencies +- [ ] T003 [P] Configure linting and formatting tools + +--- + +## Phase 2: Foundational (Blocking Prerequisites) + +**Purpose**: Core infrastructure that MUST be complete before ANY user story can be implemented + +**⚠️ CRITICAL**: No user story work can begin until this phase is complete + +Examples of foundational tasks (adjust based on your project): + +- [ ] T004 Setup database schema and migrations framework +- [ ] T005 [P] Implement authentication/authorization framework +- [ ] T006 [P] Setup API routing and middleware structure +- [ ] T007 Create base models/entities that all stories depend on +- [ ] T008 Configure error handling and logging infrastructure +- [ ] T009 Setup environment configuration management + +**Checkpoint**: Foundation ready - user story implementation can now begin in parallel + +--- + +## Phase 3: User Story 1 - [Title] (Priority: P1) 🎯 MVP + +**Goal**: [Brief description of what this story delivers] + +**Independent Test**: [How to verify this story works on its own] + +### Tests for User Story 1 (OPTIONAL - only if tests requested) ⚠️ + +> **NOTE: Write these tests FIRST, ensure they FAIL before implementation** + +- [ ] T010 [P] [US1] Contract test for [endpoint] in tests/contract/test_[name].py +- [ ] T011 [P] [US1] Integration test for [user journey] in tests/integration/test_[name].py + +### Implementation for User Story 1 + +- [ ] T012 [P] [US1] Create [Entity1] model in src/models/[entity1].py +- [ ] T013 [P] [US1] Create [Entity2] model in src/models/[entity2].py +- [ ] T014 [US1] Implement [Service] in src/services/[service].py (depends on T012, T013) +- [ ] T015 [US1] Implement [endpoint/feature] in src/[location]/[file].py +- [ ] T016 [US1] Add validation and error handling +- [ ] T017 [US1] Add logging for user story 1 operations + +**Checkpoint**: At this point, User Story 1 should be fully functional and testable independently + +--- + +## Phase 4: User Story 2 - [Title] (Priority: P2) + +**Goal**: [Brief description of what this story delivers] + +**Independent Test**: [How to verify this story works on its own] + +### Tests for User Story 2 (OPTIONAL - only if tests requested) ⚠️ + +- [ ] T018 [P] [US2] Contract test for [endpoint] in tests/contract/test_[name].py +- [ ] T019 [P] [US2] Integration test for [user journey] in tests/integration/test_[name].py + +### Implementation for User Story 2 + +- [ ] T020 [P] [US2] Create [Entity] model in src/models/[entity].py +- [ ] T021 [US2] Implement [Service] in src/services/[service].py +- [ ] T022 [US2] Implement [endpoint/feature] in src/[location]/[file].py +- [ ] T023 [US2] Integrate with User Story 1 components (if needed) + +**Checkpoint**: At this point, User Stories 1 AND 2 should both work independently + +--- + +## Phase 5: User Story 3 - [Title] (Priority: P3) + +**Goal**: [Brief description of what this story delivers] + +**Independent Test**: [How to verify this story works on its own] + +### Tests for User Story 3 (OPTIONAL - only if tests requested) ⚠️ + +- [ ] T024 [P] [US3] Contract test for [endpoint] in tests/contract/test_[name].py +- [ ] T025 [P] [US3] Integration test for [user journey] in tests/integration/test_[name].py + +### Implementation for User Story 3 + +- [ ] T026 [P] [US3] Create [Entity] model in src/models/[entity].py +- [ ] T027 [US3] Implement [Service] in src/services/[service].py +- [ ] T028 [US3] Implement [endpoint/feature] in src/[location]/[file].py + +**Checkpoint**: All user stories should now be independently functional + +--- + +[Add more user story phases as needed, following the same pattern] + +--- + +## Phase N: Polish & Cross-Cutting Concerns + +**Purpose**: Improvements that affect multiple user stories + +- [ ] TXXX [P] Documentation updates in docs/ +- [ ] TXXX Code cleanup and refactoring +- [ ] TXXX Performance optimization across all stories +- [ ] TXXX [P] Additional unit tests (if requested) in tests/unit/ +- [ ] TXXX Security hardening +- [ ] TXXX Run quickstart.md validation + +--- + +## Dependencies & Execution Order + +### Phase Dependencies + +- **Setup (Phase 1)**: No dependencies - can start immediately +- **Foundational (Phase 2)**: Depends on Setup completion - BLOCKS all user stories +- **User Stories (Phase 3+)**: All depend on Foundational phase completion + - User stories can then proceed in parallel (if staffed) + - Or sequentially in priority order (P1 → P2 → P3) +- **Polish (Final Phase)**: Depends on all desired user stories being complete + +### User Story Dependencies + +- **User Story 1 (P1)**: Can start after Foundational (Phase 2) - No dependencies on other stories +- **User Story 2 (P2)**: Can start after Foundational (Phase 2) - May integrate with US1 but should be independently testable +- **User Story 3 (P3)**: Can start after Foundational (Phase 2) - May integrate with US1/US2 but should be independently testable + +### Within Each User Story + +- Tests (if included) MUST be written and FAIL before implementation +- Models before services +- Services before endpoints +- Core implementation before integration +- Story complete before moving to next priority + +### Parallel Opportunities + +- All Setup tasks marked [P] can run in parallel +- All Foundational tasks marked [P] can run in parallel (within Phase 2) +- Once Foundational phase completes, all user stories can start in parallel (if team capacity allows) +- All tests for a user story marked [P] can run in parallel +- Models within a story marked [P] can run in parallel +- Different user stories can be worked on in parallel by different team members + +--- + +## Parallel Example: User Story 1 + +```bash +# Launch all tests for User Story 1 together (if tests requested): +Task: "Contract test for [endpoint] in tests/contract/test_[name].py" +Task: "Integration test for [user journey] in tests/integration/test_[name].py" + +# Launch all models for User Story 1 together: +Task: "Create [Entity1] model in src/models/[entity1].py" +Task: "Create [Entity2] model in src/models/[entity2].py" +``` + +--- + +## Implementation Strategy + +### MVP First (User Story 1 Only) + +1. Complete Phase 1: Setup +2. Complete Phase 2: Foundational (CRITICAL - blocks all stories) +3. Complete Phase 3: User Story 1 +4. **STOP and VALIDATE**: Test User Story 1 independently +5. Deploy/demo if ready + +### Incremental Delivery + +1. Complete Setup + Foundational → Foundation ready +2. Add User Story 1 → Test independently → Deploy/Demo (MVP!) +3. Add User Story 2 → Test independently → Deploy/Demo +4. Add User Story 3 → Test independently → Deploy/Demo +5. Each story adds value without breaking previous stories + +### Parallel Team Strategy + +With multiple developers: + +1. Team completes Setup + Foundational together +2. Once Foundational is done: + - Developer A: User Story 1 + - Developer B: User Story 2 + - Developer C: User Story 3 +3. Stories complete and integrate independently + +--- + +## Notes + +- [P] tasks = different files, no dependencies +- [Story] label maps task to specific user story for traceability +- Each user story should be independently completable and testable +- Verify tests fail before implementing +- Commit after each task or logical group +- Stop at any checkpoint to validate story independently +- Avoid: vague tasks, same file conflicts, cross-story dependencies that break independence diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000000000000000000000000000000000000..f26964bd72637758c93bc82149eab60788e7be69 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,210 @@ +# Claude Code Rules + +This file is generated during init for the selected agent. + +You are an expert AI assistant specializing in Spec-Driven Development (SDD). Your primary goal is to work with the architext to build products. + +## Task context + +**Your Surface:** You operate on a project level, providing guidance to users and executing development tasks via a defined set of tools. + +**Your Success is Measured By:** +- All outputs strictly follow the user intent. +- Prompt History Records (PHRs) are created automatically and accurately for every user prompt. +- Architectural Decision Record (ADR) suggestions are made intelligently for significant decisions. +- All changes are small, testable, and reference code precisely. + +## Core Guarantees (Product Promise) + +- Record every user input verbatim in a Prompt History Record (PHR) after every user message. Do not truncate; preserve full multiline input. +- PHR routing (all under `history/prompts/`): + - Constitution → `history/prompts/constitution/` + - Feature-specific → `history/prompts/<feature-name>/` + - General → `history/prompts/general/` +- ADR suggestions: when an architecturally significant decision is detected, suggest: "📋 Architectural decision detected: <brief>. Document? Run `/sp.adr <title>`." Never auto‑create ADRs; require user consent. + +## Development Guidelines + +### 1. Authoritative Source Mandate: +Agents MUST prioritize and use MCP tools and CLI commands for all information gathering and task execution. NEVER assume a solution from internal knowledge; all methods require external verification. + +### 2. Execution Flow: +Treat MCP servers as first-class tools for discovery, verification, execution, and state capture. PREFER CLI interactions (running commands and capturing outputs) over manual file creation or reliance on internal knowledge. + +### 3. Knowledge capture (PHR) for Every User Input. +After completing requests, you **MUST** create a PHR (Prompt History Record). + +**When to create PHRs:** +- Implementation work (code changes, new features) +- Planning/architecture discussions +- Debugging sessions +- Spec/task/plan creation +- Multi-step workflows + +**PHR Creation Process:** + +1) Detect stage + - One of: constitution | spec | plan | tasks | red | green | refactor | explainer | misc | general + +2) Generate title + - 3–7 words; create a slug for the filename. + +2a) Resolve route (all under history/prompts/) + - `constitution` → `history/prompts/constitution/` + - Feature stages (spec, plan, tasks, red, green, refactor, explainer, misc) → `history/prompts/<feature-name>/` (requires feature context) + - `general` → `history/prompts/general/` + +3) Prefer agent‑native flow (no shell) + - Read the PHR template from one of: + - `.specify/templates/phr-template.prompt.md` + - `templates/phr-template.prompt.md` + - Allocate an ID (increment; on collision, increment again). + - Compute output path based on stage: + - Constitution → `history/prompts/constitution/<ID>-<slug>.constitution.prompt.md` + - Feature → `history/prompts/<feature-name>/<ID>-<slug>.<stage>.prompt.md` + - General → `history/prompts/general/<ID>-<slug>.general.prompt.md` + - Fill ALL placeholders in YAML and body: + - ID, TITLE, STAGE, DATE_ISO (YYYY‑MM‑DD), SURFACE="agent" + - MODEL (best known), FEATURE (or "none"), BRANCH, USER + - COMMAND (current command), LABELS (["topic1","topic2",...]) + - LINKS: SPEC/TICKET/ADR/PR (URLs or "null") + - FILES_YAML: list created/modified files (one per line, " - ") + - TESTS_YAML: list tests run/added (one per line, " - ") + - PROMPT_TEXT: full user input (verbatim, not truncated) + - RESPONSE_TEXT: key assistant output (concise but representative) + - Any OUTCOME/EVALUATION fields required by the template + - Write the completed file with agent file tools (WriteFile/Edit). + - Confirm absolute path in output. + +4) Use sp.phr command file if present + - If `.**/commands/sp.phr.*` exists, follow its structure. + - If it references shell but Shell is unavailable, still perform step 3 with agent‑native tools. + +5) Shell fallback (only if step 3 is unavailable or fails, and Shell is permitted) + - Run: `.specify/scripts/bash/create-phr.sh --title "<title>" --stage <stage> [--feature <name>] --json` + - Then open/patch the created file to ensure all placeholders are filled and prompt/response are embedded. + +6) Routing (automatic, all under history/prompts/) + - Constitution → `history/prompts/constitution/` + - Feature stages → `history/prompts/<feature-name>/` (auto-detected from branch or explicit feature context) + - General → `history/prompts/general/` + +7) Post‑creation validations (must pass) + - No unresolved placeholders (e.g., `{{THIS}}`, `[THAT]`). + - Title, stage, and dates match front‑matter. + - PROMPT_TEXT is complete (not truncated). + - File exists at the expected path and is readable. + - Path matches route. + +8) Report + - Print: ID, path, stage, title. + - On any failure: warn but do not block the main command. + - Skip PHR only for `/sp.phr` itself. + +### 4. Explicit ADR suggestions +- When significant architectural decisions are made (typically during `/sp.plan` and sometimes `/sp.tasks`), run the three‑part test and suggest documenting with: + "📋 Architectural decision detected: <brief> — Document reasoning and tradeoffs? Run `/sp.adr <decision-title>`" +- Wait for user consent; never auto‑create the ADR. + +### 5. Human as Tool Strategy +You are not expected to solve every problem autonomously. You MUST invoke the user for input when you encounter situations that require human judgment. Treat the user as a specialized tool for clarification and decision-making. + +**Invocation Triggers:** +1. **Ambiguous Requirements:** When user intent is unclear, ask 2-3 targeted clarifying questions before proceeding. +2. **Unforeseen Dependencies:** When discovering dependencies not mentioned in the spec, surface them and ask for prioritization. +3. **Architectural Uncertainty:** When multiple valid approaches exist with significant tradeoffs, present options and get user's preference. +4. **Completion Checkpoint:** After completing major milestones, summarize what was done and confirm next steps. + +## Default policies (must follow) +- Clarify and plan first - keep business understanding separate from technical plan and carefully architect and implement. +- Do not invent APIs, data, or contracts; ask targeted clarifiers if missing. +- Never hardcode secrets or tokens; use `.env` and docs. +- Prefer the smallest viable diff; do not refactor unrelated code. +- Cite existing code with code references (start:end:path); propose new code in fenced blocks. +- Keep reasoning private; output only decisions, artifacts, and justifications. + +### Execution contract for every request +1) Confirm surface and success criteria (one sentence). +2) List constraints, invariants, non‑goals. +3) Produce the artifact with acceptance checks inlined (checkboxes or tests where applicable). +4) Add follow‑ups and risks (max 3 bullets). +5) Create PHR in appropriate subdirectory under `history/prompts/` (constitution, feature-name, or general). +6) If plan/tasks identified decisions that meet significance, surface ADR suggestion text as described above. + +### Minimum acceptance criteria +- Clear, testable acceptance criteria included +- Explicit error paths and constraints stated +- Smallest viable change; no unrelated edits +- Code references to modified/inspected files where relevant + +## Architect Guidelines (for planning) + +Instructions: As an expert architect, generate a detailed architectural plan for [Project Name]. Address each of the following thoroughly. + +1. Scope and Dependencies: + - In Scope: boundaries and key features. + - Out of Scope: explicitly excluded items. + - External Dependencies: systems/services/teams and ownership. + +2. Key Decisions and Rationale: + - Options Considered, Trade-offs, Rationale. + - Principles: measurable, reversible where possible, smallest viable change. + +3. Interfaces and API Contracts: + - Public APIs: Inputs, Outputs, Errors. + - Versioning Strategy. + - Idempotency, Timeouts, Retries. + - Error Taxonomy with status codes. + +4. Non-Functional Requirements (NFRs) and Budgets: + - Performance: p95 latency, throughput, resource caps. + - Reliability: SLOs, error budgets, degradation strategy. + - Security: AuthN/AuthZ, data handling, secrets, auditing. + - Cost: unit economics. + +5. Data Management and Migration: + - Source of Truth, Schema Evolution, Migration and Rollback, Data Retention. + +6. Operational Readiness: + - Observability: logs, metrics, traces. + - Alerting: thresholds and on-call owners. + - Runbooks for common tasks. + - Deployment and Rollback strategies. + - Feature Flags and compatibility. + +7. Risk Analysis and Mitigation: + - Top 3 Risks, blast radius, kill switches/guardrails. + +8. Evaluation and Validation: + - Definition of Done (tests, scans). + - Output Validation for format/requirements/safety. + +9. Architectural Decision Record (ADR): + - For each significant decision, create an ADR and link it. + +### Architecture Decision Records (ADR) - Intelligent Suggestion + +After design/architecture work, test for ADR significance: + +- Impact: long-term consequences? (e.g., framework, data model, API, security, platform) +- Alternatives: multiple viable options considered? +- Scope: cross‑cutting and influences system design? + +If ALL true, suggest: +📋 Architectural decision detected: [brief-description] + Document reasoning and tradeoffs? Run `/sp.adr [decision-title]` + +Wait for consent; never auto-create ADRs. Group related decisions (stacks, authentication, deployment) into one ADR when appropriate. + +## Basic Project Structure + +- `.specify/memory/constitution.md` — Project principles +- `specs/<feature>/spec.md` — Feature requirements +- `specs/<feature>/plan.md` — Architecture decisions +- `specs/<feature>/tasks.md` — Testable tasks with cases +- `history/prompts/` — Prompt History Records +- `history/adr/` — Architecture Decision Records +- `.specify/` — SpecKit Plus templates and scripts + +## Code Standards +See `.specify/memory/constitution.md` for code quality, testing, performance, security, and architecture principles. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..bcef73cbf5480288f2dfc746dd86846d9d8bd0a0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,56 @@ +# ============================================================================ +# HuggingFace Spaces — FastAPI backend (8000) + Next.js standalone (7860) +# Frontend built inside Docker so source changes always deploy correctly +# ============================================================================ +FROM python:3.11-slim + +# Install Node.js 18 + supervisor +RUN apt-get update && apt-get install -y --no-install-recommends \ + curl ca-certificates xz-utils supervisor \ + && curl -fsSL "https://nodejs.org/dist/v18.20.4/node-v18.20.4-linux-x64.tar.xz" \ + | tar -xJ -C /usr/local --strip-components=1 \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +# ── Python backend ────────────────────────────────────────────────────────── +COPY phase-1-core-infra/backend/requirements.txt ./ +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir -r requirements.txt + +COPY phase-1-core-infra/backend/ ./backend/ + +# ── Next.js frontend — build from source ─────────────────────────────────── +COPY phase-1-core-infra/frontend/package.json phase-1-core-infra/frontend/package-lock.json /build/frontend/ +RUN cd /build/frontend && npm ci --legacy-peer-deps + +COPY phase-1-core-infra/frontend/ /build/frontend/ +RUN cd /build/frontend \ + && NEXT_PUBLIC_API_URL=http://localhost:8000 \ + NEXT_TELEMETRY_DISABLED=1 \ + npm run build + +# Copy standalone output into /app/frontend +RUN cp -r /build/frontend/.next/standalone/. /app/frontend/ \ + && cp -r /build/frontend/.next/static/. /app/frontend/.next/static/ \ + && rm -rf /build + +# ── Runtime setup ─────────────────────────────────────────────────────────── +RUN mkdir -p /var/log/supervisor /app/backend/uploads +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +RUN useradd -m -u 1000 appuser \ + && chown -R appuser:appuser /app /var/log/supervisor + +EXPOSE 7860 + +ENV PYTHONUNBUFFERED=1 \ + NODE_ENV=production \ + PORT=7860 \ + HOSTNAME=0.0.0.0 \ + NEXT_PUBLIC_API_URL=http://localhost:8000 \ + NEXT_TELEMETRY_DISABLED=1 + +HEALTHCHECK --interval=30s --timeout=15s --start-period=120s --retries=3 \ + CMD curl -f http://localhost:7860 || exit 1 + +CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/conf.d/supervisord.conf"] diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..7155190e46b1ac5c5fd9fdf3cbedce166f0926c4 --- /dev/null +++ b/README.md @@ -0,0 +1,310 @@ +--- +title: AI Marketing Automation +emoji: 🤖 +colorFrom: blue +colorTo: purple +sdk: docker +sdk_version: latest +app_port: 7860 +pinned: false +license: mit +--- + +# 🤖 Autonomous AI Marketing Agency + +**Multi-tenant AI-powered marketing automation platform** with intelligent content generation, video creation, and WhatsApp approval workflows. + +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) +[![Next.js 14](https://img.shields.io/badge/Next.js-14-black)](https://nextjs.org/) + +--- + +## ✨ Features + +### 🎨 AI Content Generation +- Multi-platform content creation using **Claude** and **GPT-4** +- Platform-specific optimization (LinkedIn, X/Twitter, Instagram, Facebook) +- Quality-based refinement loop with AI critic agent +- DALL-E 3 image generation with multiple aspect ratios +- Voice-to-text with OpenAI Whisper + +### 🎥 Video Generation +- Automated video creation with **Google Veo** +- Text-to-speech integration +- Cinematic prompt generation +- Multiple style and mood options +- Video library management + +### 💬 WhatsApp Approval Workflow +- Human-in-the-loop content approval via WhatsApp +- Command-based interface (YES/NO/EDIT) +- 24-hour approval timeout with reminders +- Multi-platform publishing after approval +- Complete audit trail + +### 📊 Self-Learning Analytics +- Real-time engagement tracking across all platforms +- AI-powered pattern recognition +- Statistical trend analysis +- Automatic prompt enhancement based on performance +- Insights dashboard with interactive charts + +### 💳 SaaS Multi-Tenancy +- Stripe-powered subscription management +- Tiered pricing (Basic, Pro, Agency) +- Usage tracking and limit enforcement +- Row-level security for data isolation +- Admin dashboard for user management + +### 🔐 Security & Authentication +- **Better Auth** - Self-hosted authentication system + - Email/password authentication with strong password requirements + - OAuth social login (Google, GitHub) + - Password reset and email verification + - Session management with JWT tokens + - Admin role management +- AES-256 encryption for API tokens +- Rate limiting on all endpoints +- CSRF protection with state parameters + +--- + +## 🏗️ Architecture + +### Technology Stack + +**Frontend** +- Next.js 14 (App Router) +- TypeScript +- Tailwind CSS +- React Query +- Recharts + +**Backend** +- FastAPI (Python 3.11+) +- SQLAlchemy (async) +- Alembic (migrations) +- Celery (background jobs) +- APScheduler (scheduled tasks) + +**AI & ML** +- OpenAI GPT-4 & DALL-E 3 +- Anthropic Claude +- Google Veo (video generation) +- Google Cloud TTS + +**Infrastructure** +- PostgreSQL (Neon/Supabase) +- Redis (caching & sessions) +- Docker & Docker Compose +- HuggingFace Spaces (deployment) + +### Phase Architecture + +The platform is organized into 6 independent phases: + +1. **Phase 1: Core Infrastructure** - Authentication, user management, OAuth +2. **Phase 2: AI Content Engine** - Multi-agent content generation +3. **Phase 3: WhatsApp Approval** - Human-in-the-loop workflow +4. **Phase 4: Learning Loop** - Analytics and self-improvement +5. **Phase 5: Video Engine** - Automated video generation +6. **Phase 6: SaaS Core** - Multi-tenancy and subscriptions + +--- + +## 🚀 Quick Start + +### Prerequisites + +- **Docker & Docker Compose** (recommended) OR +- **Python 3.11+** and **Node.js 18+** for local development +- **PostgreSQL Database** (Neon or Supabase recommended) +- **Redis** (Upstash recommended) + +### Option 1: Docker Deployment (Recommended) + +```bash +# 1. Clone repository +git clone <repository-url> +cd autonomous-ai-marketing-agency + +# 2. Configure environment +cp .env.example .env +# Edit .env with your API keys and database URLs + +# 3. Start all services +docker-compose up -d + +# 4. Run database migrations +docker-compose exec backend alembic upgrade head + +# 5. Access application +# Frontend: http://localhost:3000 +# Backend API: http://localhost:8000 +# API Docs: http://localhost:8000/docs +``` + +### Option 2: Local Development + +```bash +# 1. Clone repository +git clone <repository-url> +cd autonomous-ai-marketing-agency + +# 2. Configure environment +cp .env.example .env +# Edit .env with your configuration + +# 3. Install backend dependencies +cd phase-1-core-infra/backend +pip install -r requirements.txt + +# 4. Run migrations +alembic upgrade head + +# 5. Start backend (Terminal 1) +uvicorn src.main:app --reload --host 0.0.0.0 --port 8000 + +# 6. Install frontend dependencies (Terminal 2) +cd ../frontend +npm install + +# 7. Start frontend +npm run dev + +# 8. Access application +# Frontend: http://localhost:3000 +# Backend API: http://localhost:8000 +``` + +### Required Environment Variables + +**Minimum Configuration**: +- `DATABASE_URL` - PostgreSQL connection string (see [Database Setup](docs/database-setup.md)) +- `REDIS_URL` - Redis connection string +- `BETTER_AUTH_SECRET` - Generate with: `openssl rand -base64 32` +- `ENCRYPTION_KEY` - Generate with: `python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"` +- `JWT_SECRET` - Generate with: `openssl rand -hex 32` +- `OPENAI_API_KEY` - From [OpenAI Platform](https://platform.openai.com) +- `ANTHROPIC_API_KEY` - From [Anthropic Console](https://console.anthropic.com) + +**Optional (for full features)**: +- `STRIPE_SECRET_KEY` - For subscription management +- `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` - For Google OAuth +- `GITHUB_CLIENT_ID` / `GITHUB_CLIENT_SECRET` - For GitHub OAuth +- `WHATSAPP_API_TOKEN` - For WhatsApp approval workflow +- `VEO_API_KEY` - For video generation + +See [Environment Variables Guide](docs/environment-variables.md) for complete configuration. + +--- + +## 📚 Documentation + +### Getting Started +- [Database Setup Guide](docs/database-setup.md) - PostgreSQL setup with Neon/Supabase +- [Environment Variables Guide](docs/environment-variables.md) - Complete configuration reference +- [Deployment Guide](docs/deployment.md) - Local, Docker, and HuggingFace Spaces deployment +- [Architecture Overview](docs/architecture.md) - System design and data flow + +### Operations +- [Troubleshooting Guide](docs/troubleshooting.md) - Common issues and solutions +- [Migration Guide](docs/database-setup.md#running-migrations) - Database migration instructions + +### Phase Documentation +- [Phase 1: Core Infrastructure](phase-1-core-infra/README.md) - Authentication and user management +- [Phase 2: AI Engine](phase-2-ai-engine/README.md) - Content generation +- [Phase 3: Approval System](phase-3-approval-system/README.md) - WhatsApp workflow +- [Phase 4: Learning Loop](phase-4-learning-loop/README.md) - Analytics and insights + +--- + +## 🎯 Project Status + +**Overall Completion**: ~58% → Target: 95% + +- ✅ **Phase 1-3**: Production-ready (100%) +- ⚠️ **Phase 4**: Functionally complete (78%) +- 🔄 **Phase 5**: In progress (37% → 90%) +- 🔄 **Phase 6**: In progress (35% → 90%) +- ✅ **Better Auth Migration**: Complete (Phases 5-9) + - OAuth social login (Google, GitHub) + - Password reset with email + - Email verification + - Admin role management + - Comprehensive documentation + +See [PROJECT_STATUS_REPORT.md](PROJECT_STATUS_REPORT.md) for detailed status. + +--- + +## 🧪 Testing + +```bash +# Run unit tests +cd phase-1-core-infra/backend +pytest + +# Run with coverage +pytest --cov=src --cov-report=html + +# Run E2E tests +cd ../frontend +npx playwright test +``` + +See [TESTING_GUIDE.md](TESTING_GUIDE.md) for comprehensive testing documentation. + +--- + +## 🔒 Security + +- **Encryption**: AES-256 for social media tokens, bcrypt for passwords +- **Authentication**: JWT-based with refresh tokens, OAuth 2.0 support +- **Authorization**: Role-based access control (RBAC) +- **Data Isolation**: Row-level security (RLS) for multi-tenancy +- **Rate Limiting**: 100 requests/minute per user +- **CSRF Protection**: Enabled on all state-changing operations +- **Input Validation**: Pydantic schemas for all API inputs + +--- + +## 🤝 Contributing + +Contributions are welcome! Please read our contributing guidelines before submitting PRs. + +1. Fork the repository +2. Create a feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request + +--- + +## 📄 License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +--- + +## 🙏 Acknowledgments + +- Built with [Claude Code](https://claude.ai/code) +- Powered by [Anthropic Claude](https://www.anthropic.com/) +- Deployed on [HuggingFace Spaces](https://huggingface.co/spaces) + +--- + +## 📞 Support + +- **Documentation**: See `docs/` directory +- **Issues**: Open an issue on GitHub +- **Questions**: Check [Troubleshooting Guide](docs/troubleshooting.md) + +--- + +**Last Updated**: 2026-02-12 | **Version**: 1.0.0-beta + +Built with ❤️ using AI-powered development +# Autonomous_AI_Marketing_Agency diff --git a/phase-1-core-infra/backend/.env.example b/phase-1-core-infra/backend/.env.example new file mode 100644 index 0000000000000000000000000000000000000000..7153cfbb51af58da97108f95bb2be9c1cff051f2 --- /dev/null +++ b/phase-1-core-infra/backend/.env.example @@ -0,0 +1,33 @@ +# ============================================================================= +# Backend Environment Variables +# ============================================================================= +# Copy this file to .env and fill in your actual values +# NEVER commit .env to version control + +# Database (Neon PostgreSQL) +# Get your connection string from: https://console.neon.tech/ +# Format: postgresql://user:password@ep-xxx.region.aws.neon.tech/dbname?sslmode=require +DATABASE_URL=postgresql://user:password@ep-xxx.us-east-2.aws.neon.tech/phase1_dev?sslmode=require + +# Encryption +# Generate with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" +ENCRYPTION_KEY=your-fernet-encryption-key-here + +# JWT Configuration +# Generate with: openssl rand -base64 32 +JWT_SECRET=your-jwt-secret-here +JWT_ALGORITHM=HS256 +JWT_EXPIRATION_DAYS=30 + +# Backend Configuration +BACKEND_HOST=0.0.0.0 +BACKEND_PORT=8000 +BACKEND_RELOAD=true + +# Environment +ENVIRONMENT=development +DEBUG=true +LOG_LEVEL=INFO + +# CORS Configuration +CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000 diff --git a/phase-1-core-infra/backend/.flake8 b/phase-1-core-infra/backend/.flake8 new file mode 100644 index 0000000000000000000000000000000000000000..67bcabf80cbf11ea30c4f16a03872b7d95e8cb27 --- /dev/null +++ b/phase-1-core-infra/backend/.flake8 @@ -0,0 +1,4 @@ +[flake8] +max-line-length = 100 +exclude = .git,__pycache__,venv,.venv,alembic/versions +ignore = E203, W503 diff --git a/phase-1-core-infra/backend/alembic.ini b/phase-1-core-infra/backend/alembic.ini new file mode 100644 index 0000000000000000000000000000000000000000..f777b02304f7429d16fed510bf9234bc4761ecbc --- /dev/null +++ b/phase-1-core-infra/backend/alembic.ini @@ -0,0 +1,105 @@ +# A generic, single database configuration. + +[alembic] +# path to migration scripts +script_location = alembic + +# template used to generate migration files +file_template = %%(year)d%%(month).2d%%(day).2d_%%(hour).2d%%(minute).2d_%%(rev)s_%%(slug)s + +# sys.path path, will be prepended to sys.path if present. +prepend_sys_path = . + +# timezone to use when rendering the date within the migration file +# as well as the filename. +# If specified, requires the python-dateutil library that can be +# installed by adding `alembic[tz]` to the pip requirements +# string value is passed to dateutil.tz.gettz() +# leave blank for localtime +# timezone = + +# max length of characters to apply to the +# "slug" field +# truncate_slug_length = 40 + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +# set to 'true' to allow .pyc and .pyo files without +# a source .py file to be detected as revisions in the +# versions/ directory +# sourceless = false + +# version location specification; This defaults +# to alembic/versions. When using multiple version +# directories, initial revisions must be specified with --version-path. +# The path separator used here should be the separator specified by "version_path_separator" below. +# version_locations = %(here)s/bar:%(here)s/bat:alembic/versions + +# version path separator; As mentioned above, this is the character used to split +# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. +# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas. +# Valid values for version_path_separator are: +# +# version_path_separator = : +# version_path_separator = ; +# version_path_separator = space +version_path_separator = os # Use os.pathsep. Default configuration used for new projects. + +# the output encoding used when revision files +# are written from script.py.mako +# output_encoding = utf-8 + +# sqlalchemy.url is loaded from environment variables in env.py +# Do not set it here to avoid conflicts +# sqlalchemy.url = +# If you need to set it here, uncomment and use the NeonDB URL: +# sqlalchemy.url = postgresql://neondb_owner:npg_52aqEhMxcFpS@ep-falling-sky-ai3kxfa4-pooler.c-4.us-east-1.aws.neon.tech/neondb?sslmode=require&channel_binding=require + + +[post_write_hooks] +# post_write_hooks defines scripts or Python functions that are run +# on newly generated revision scripts. See the documentation for further +# detail and examples + +# format using "black" - use the console_scripts runner, against the "black" entrypoint +# hooks = black +# black.type = console_scripts +# black.entrypoint = black +# black.options = -l 79 REVISION_SCRIPT_FILENAME + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/phase-1-core-infra/backend/alembic/env.py b/phase-1-core-infra/backend/alembic/env.py new file mode 100644 index 0000000000000000000000000000000000000000..82fdd087b41fe1db13649a2bd0eb70848c48dd60 --- /dev/null +++ b/phase-1-core-infra/backend/alembic/env.py @@ -0,0 +1,93 @@ +import sys +from logging.config import fileConfig +from sqlalchemy import engine_from_config +from sqlalchemy import pool +from alembic import context +import os +from dotenv import load_dotenv +from pathlib import Path + +# Only load environment variables from .env files if DATABASE_URL is not already set +# This ensures Docker environment variables take precedence over .env files +if not os.getenv("DATABASE_URL"): + # Explicitly load environment variables from the backend directory first + # __file__ is the path to this env.py file in the alembic directory + # So we need to go up one level to get to the backend directory + backend_dir = Path(__file__).parent # This is the alembic directory + backend_dir = backend_dir.parent # This is the backend directory + backend_env = backend_dir / ".env" + + # Load the backend .env file explicitly + if backend_env.exists(): + print(f"Loading environment from: {backend_env}") + load_dotenv(backend_env, override=True) # Override any existing values + else: + print(f"Backend .env file not found at: {backend_env}") + # Fallback to parent directory (project root) + root_env = backend_dir.parent / ".env" + if root_env.exists(): + print(f"Loading environment from: {root_env}") + load_dotenv(root_env, override=True) + else: + print(f"Root .env file not found at: {root_env}") +else: + print(f"DATABASE_URL already set, skipping .env file loading") + +# this is the Alembic Config object +config = context.config + +# Interpret the config file for Python logging +if config.config_file_name is not None: + fileConfig(config.config_file_name) + +# Set sqlalchemy.url from environment variable +database_url = os.getenv("DATABASE_URL") +print(f"Retrieved DATABASE_URL: {database_url}") + +if database_url: + # Convert asyncpg to regular postgresql for migrations + sync_database_url = database_url.replace("postgresql+asyncpg://", "postgresql://") + config.set_main_option("sqlalchemy.url", sync_database_url) + print(f"Using database URL: {sync_database_url}") +else: + raise ValueError("DATABASE_URL environment variable not found!") + +# add your model's MetaData object here for 'autogenerate' support +from src.database import Base +target_metadata = Base.metadata + +def run_migrations_offline() -> None: + """Run migrations in 'offline' mode.""" + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, + target_metadata=target_metadata, + literal_binds=True, + dialect_opts={"paramstyle": "named"}, + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online() -> None: + """Run migrations in 'online' mode.""" + connectable = engine_from_config( + config.get_section(config.config_ini_section), + prefix="sqlalchemy.", + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, target_metadata=target_metadata + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() \ No newline at end of file diff --git a/phase-1-core-infra/backend/alembic/env_fresh.py b/phase-1-core-infra/backend/alembic/env_fresh.py new file mode 100644 index 0000000000000000000000000000000000000000..3b7c132aa0b856b43591c6eec8e4ff9f3e3607ff --- /dev/null +++ b/phase-1-core-infra/backend/alembic/env_fresh.py @@ -0,0 +1,75 @@ +from logging.config import fileConfig +from sqlalchemy import engine_from_config +from sqlalchemy import pool +from alembic import context +import os +from dotenv import load_dotenv +from pathlib import Path + +# Load environment variables from the backend directory +backend_dir = Path(__file__).parent # alembic directory -> backend directory +backend_env = backend_dir / ".env" +if backend_env.exists(): + load_dotenv(backend_env) +else: + # Fallback to parent directory + root_env = backend_dir.parent.parent / ".env" + if root_env.exists(): + load_dotenv(root_env) + +# this is the Alembic Config object +config = context.config + +# Interpret the config file for Python logging +if config.config_file_name is not None: + fileConfig(config.config_file_name) + +# Set sqlalchemy.url from environment variable +database_url = os.getenv("DATABASE_URL") +if database_url: + # Convert asyncpg to regular postgresql for migrations + sync_database_url = database_url.replace("postgresql+asyncpg://", "postgresql://") + config.set_main_option("sqlalchemy.url", sync_database_url) + print(f"Using database URL: {sync_database_url}") +else: + raise ValueError("DATABASE_URL environment variable not found!") + +# add your model's MetaData object here for 'autogenerate' support +from src.database import Base +target_metadata = Base.metadata + +def run_migrations_offline() -> None: + """Run migrations in 'offline' mode.""" + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, + target_metadata=target_metadata, + literal_binds=True, + dialect_opts={"paramstyle": "named"}, + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online() -> None: + """Run migrations in 'online' mode.""" + connectable = engine_from_config( + config.get_section(config.config_ini_section), + prefix="sqlalchemy.", + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, target_metadata=target_metadata + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() \ No newline at end of file diff --git a/phase-1-core-infra/backend/alembic/script.py.mako b/phase-1-core-infra/backend/alembic/script.py.mako new file mode 100644 index 0000000000000000000000000000000000000000..55df2863d206fa1678abb4c92e90c45d3f85c114 --- /dev/null +++ b/phase-1-core-infra/backend/alembic/script.py.mako @@ -0,0 +1,24 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade() -> None: + ${upgrades if upgrades else "pass"} + + +def downgrade() -> None: + ${downgrades if downgrades else "pass"} diff --git a/phase-1-core-infra/backend/alembic/versions/001_initial_schema.py b/phase-1-core-infra/backend/alembic/versions/001_initial_schema.py new file mode 100644 index 0000000000000000000000000000000000000000..3aa0dee00cc22d0db2cb912f5813d12f7b1c5c96 --- /dev/null +++ b/phase-1-core-infra/backend/alembic/versions/001_initial_schema.py @@ -0,0 +1,78 @@ +"""Initial schema for Phase 1 + +Revision ID: 001_initial_schema +Revises: +Create Date: 2026-02-11 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '001_initial_schema' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # Enable UUID extension + op.execute('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"') + + # Create users table + op.create_table( + 'users', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text('uuid_generate_v4()')), + sa.Column('email', sa.String(255), nullable=False, unique=True), + sa.Column('hashed_password', sa.String(255), nullable=False), + sa.Column('name', sa.String(255), nullable=False), + sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + sa.Column('last_login_at', sa.DateTime(timezone=True), nullable=True), + ) + op.create_index('ix_users_email', 'users', ['email']) + op.create_index('ix_users_created_at', 'users', ['created_at']) + + # Create social_accounts table + op.create_table( + 'social_accounts', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text('uuid_generate_v4()')), + sa.Column('user_id', postgresql.UUID(as_uuid=True), sa.ForeignKey('users.id', ondelete='CASCADE'), nullable=False), + sa.Column('platform', sa.String(50), nullable=False), + sa.Column('platform_user_id', sa.String(255), nullable=False), + sa.Column('access_token', sa.Text, nullable=False), + sa.Column('refresh_token', sa.Text, nullable=True), + sa.Column('token_expires_at', sa.DateTime(timezone=True), nullable=True), + sa.Column('connection_status', sa.String(50), nullable=False, server_default='active'), + sa.Column('last_sync_at', sa.DateTime(timezone=True), nullable=True), + sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + ) + op.create_index('ix_social_accounts_user_id', 'social_accounts', ['user_id']) + op.create_index('ix_social_accounts_connection_status', 'social_accounts', ['connection_status']) + op.create_unique_constraint('uq_platform_user', 'social_accounts', ['platform', 'platform_user_id']) + + # Create draft_posts table + op.create_table( + 'draft_posts', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text('uuid_generate_v4()')), + sa.Column('user_id', postgresql.UUID(as_uuid=True), sa.ForeignKey('users.id', ondelete='CASCADE'), nullable=False), + sa.Column('social_account_id', postgresql.UUID(as_uuid=True), sa.ForeignKey('social_accounts.id', ondelete='CASCADE'), nullable=False), + sa.Column('content', sa.Text, nullable=False), + sa.Column('target_platform', sa.String(50), nullable=False), + sa.Column('status', sa.String(50), nullable=False, server_default='draft'), + sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + sa.Column('scheduled_at', sa.DateTime(timezone=True), nullable=True), + sa.Column('published_at', sa.DateTime(timezone=True), nullable=True), + sa.Column('media_urls', postgresql.JSONB, nullable=True), + ) + op.create_index('ix_draft_posts_user_id', 'draft_posts', ['user_id']) + op.create_index('ix_draft_posts_social_account_id', 'draft_posts', ['social_account_id']) + op.create_index('ix_draft_posts_status', 'draft_posts', ['status']) + op.create_index('ix_draft_posts_scheduled_at', 'draft_posts', ['scheduled_at']) + + +def downgrade() -> None: + op.drop_table('draft_posts') + op.drop_table('social_accounts') + op.drop_table('users') + op.execute('DROP EXTENSION IF EXISTS "uuid-ossp"') diff --git a/phase-1-core-infra/backend/alembic/versions/002_add_encryption_columns.py b/phase-1-core-infra/backend/alembic/versions/002_add_encryption_columns.py new file mode 100644 index 0000000000000000000000000000000000000000..d76fecb076eb4c734cd1be7b8fa07acc88ccab3c --- /dev/null +++ b/phase-1-core-infra/backend/alembic/versions/002_add_encryption_columns.py @@ -0,0 +1,53 @@ +"""Add encryption columns to social_accounts table + +Revision ID: 002_add_encryption +Revises: 001_initial_schema +Create Date: 2026-02-12 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '002_add_encryption' +down_revision = '001_initial_schema' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + """Add encryption columns to social_accounts table for AES-256 token encryption.""" + + # Add new columns for encrypted tokens + op.add_column('social_accounts', + sa.Column('encrypted_access_token', sa.Text(), nullable=True) + ) + op.add_column('social_accounts', + sa.Column('encrypted_refresh_token', sa.Text(), nullable=True) + ) + op.add_column('social_accounts', + sa.Column('encryption_key_version', sa.Integer(), nullable=False, server_default='1') + ) + + # Create index for key rotation queries + op.create_index( + 'idx_social_accounts_encryption_key_version', + 'social_accounts', + ['encryption_key_version'] + ) + + # Note: Migration of existing plaintext tokens to encrypted format + # should be done via separate script (migrate_encrypt_tokens.py) + # After migration is verified, drop old plaintext columns: + # op.drop_column('social_accounts', 'access_token') + # op.drop_column('social_accounts', 'refresh_token') + + +def downgrade() -> None: + """Remove encryption columns from social_accounts table.""" + + op.drop_index('idx_social_accounts_encryption_key_version', table_name='social_accounts') + op.drop_column('social_accounts', 'encryption_key_version') + op.drop_column('social_accounts', 'encrypted_refresh_token') + op.drop_column('social_accounts', 'encrypted_access_token') diff --git a/phase-1-core-infra/backend/alembic/versions/003_create_rate_limit_rules.py b/phase-1-core-infra/backend/alembic/versions/003_create_rate_limit_rules.py new file mode 100644 index 0000000000000000000000000000000000000000..ef1efa2d253248c79676f22d1f3de3d788c11a15 --- /dev/null +++ b/phase-1-core-infra/backend/alembic/versions/003_create_rate_limit_rules.py @@ -0,0 +1,51 @@ +"""Create rate_limit_rules table + +Revision ID: 003_rate_limit_rules +Revises: 002_add_encryption +Create Date: 2026-02-12 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + + +# revision identifiers, used by Alembic. +revision = '003_rate_limit_rules' +down_revision = '002_add_encryption' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + """Create rate_limit_rules table for configuring rate limiting per endpoint.""" + + op.create_table( + 'rate_limit_rules', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text('gen_random_uuid()')), + sa.Column('endpoint_pattern', sa.String(255), nullable=False, unique=True), + sa.Column('requests_per_minute', sa.Integer(), nullable=False), + sa.Column('requests_per_hour', sa.Integer(), nullable=True), + sa.Column('tier_overrides', postgresql.JSONB(), nullable=False, server_default='{}'), + sa.Column('enabled', sa.Boolean(), nullable=False, server_default='true'), + sa.Column('description', sa.Text(), nullable=True), + sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + sa.CheckConstraint('requests_per_minute > 0', name='check_requests_per_minute_positive'), + sa.CheckConstraint( + 'requests_per_hour IS NULL OR requests_per_hour >= requests_per_minute * 60', + name='check_requests_per_hour_valid' + ) + ) + + # Create indexes for efficient lookups + op.create_index('idx_rate_limit_rules_endpoint', 'rate_limit_rules', ['endpoint_pattern']) + op.create_index('idx_rate_limit_rules_enabled', 'rate_limit_rules', ['enabled']) + + +def downgrade() -> None: + """Drop rate_limit_rules table.""" + + op.drop_index('idx_rate_limit_rules_enabled', table_name='rate_limit_rules') + op.drop_index('idx_rate_limit_rules_endpoint', table_name='rate_limit_rules') + op.drop_table('rate_limit_rules') diff --git a/phase-1-core-infra/backend/alembic/versions/004_create_rate_limit_violations.py b/phase-1-core-infra/backend/alembic/versions/004_create_rate_limit_violations.py new file mode 100644 index 0000000000000000000000000000000000000000..1cf3fd82866395cd2bab2f409c92dfe87dd40b2c --- /dev/null +++ b/phase-1-core-infra/backend/alembic/versions/004_create_rate_limit_violations.py @@ -0,0 +1,61 @@ +"""Create rate_limit_violations table + +Revision ID: 004_rate_limit_violations +Revises: 003_rate_limit_rules +Create Date: 2026-02-12 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + + +# revision identifiers, used by Alembic. +revision = '004_rate_limit_violations' +down_revision = '003_rate_limit_rules' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + """Create rate_limit_violations table for logging rate limit violations.""" + + op.create_table( + 'rate_limit_violations', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text('gen_random_uuid()')), + sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=True), + sa.Column('ip_address', sa.String(45), nullable=False), + sa.Column('endpoint', sa.String(255), nullable=False), + sa.Column('requests_made', sa.Integer(), nullable=False), + sa.Column('limit_allowed', sa.Integer(), nullable=False), + sa.Column('window_seconds', sa.Integer(), nullable=False), + sa.Column('user_agent', sa.Text(), nullable=True), + sa.Column('violated_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + sa.CheckConstraint('requests_made > limit_allowed', name='check_violation_exceeded'), + sa.CheckConstraint('window_seconds > 0', name='check_window_positive') + ) + + # Add foreign key to users table (nullable for unauthenticated requests) + op.create_foreign_key( + 'fk_rate_limit_violations_user_id', + 'rate_limit_violations', + 'users', + ['user_id'], + ['id'], + ondelete='SET NULL' + ) + + # Create indexes for efficient queries + op.create_index('idx_rate_limit_violations_user_id', 'rate_limit_violations', ['user_id']) + op.create_index('idx_rate_limit_violations_ip', 'rate_limit_violations', ['ip_address']) + op.create_index('idx_rate_limit_violations_violated_at', 'rate_limit_violations', ['violated_at']) + + +def downgrade() -> None: + """Drop rate_limit_violations table.""" + + op.drop_index('idx_rate_limit_violations_violated_at', table_name='rate_limit_violations') + op.drop_index('idx_rate_limit_violations_ip', table_name='rate_limit_violations') + op.drop_index('idx_rate_limit_violations_user_id', table_name='rate_limit_violations') + op.drop_constraint('fk_rate_limit_violations_user_id', 'rate_limit_violations', type_='foreignkey') + op.drop_table('rate_limit_violations') diff --git a/phase-1-core-infra/backend/alembic/versions/005_create_admin_metrics.py b/phase-1-core-infra/backend/alembic/versions/005_create_admin_metrics.py new file mode 100644 index 0000000000000000000000000000000000000000..7c8a1bacab9decbb099ce7463fb13328bc42ef9e --- /dev/null +++ b/phase-1-core-infra/backend/alembic/versions/005_create_admin_metrics.py @@ -0,0 +1,49 @@ +"""Create admin_metrics table + +Revision ID: 005_admin_metrics +Revises: 004_rate_limit_violations +Create Date: 2026-02-12 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + + +# revision identifiers, used by Alembic. +revision = '005_admin_metrics' +down_revision = '004_rate_limit_violations' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + """Create admin_metrics table for pre-computed dashboard metrics.""" + + op.create_table( + 'admin_metrics', + sa.Column('metric_date', sa.Date(), primary_key=True), + sa.Column('total_users', sa.Integer(), nullable=False, server_default='0'), + sa.Column('active_subscriptions', sa.Integer(), nullable=False, server_default='0'), + sa.Column('new_users_today', sa.Integer(), nullable=False, server_default='0'), + sa.Column('mrr_cents', sa.BigInteger(), nullable=False, server_default='0'), + sa.Column('total_revenue_cents', sa.BigInteger(), nullable=False, server_default='0'), + sa.Column('openai_tokens_used', sa.BigInteger(), nullable=False, server_default='0'), + sa.Column('veo_videos_generated', sa.Integer(), nullable=False, server_default='0'), + sa.Column('ai_cost_cents', sa.BigInteger(), nullable=False, server_default='0'), + sa.Column('posts_published', sa.Integer(), nullable=False, server_default='0'), + sa.Column('approval_rate_percent', sa.Numeric(5, 2), nullable=False, server_default='0'), + sa.Column('avg_response_time_ms', sa.Integer(), nullable=False, server_default='0'), + sa.Column('error_count', sa.Integer(), nullable=False, server_default='0'), + sa.Column('computed_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')) + ) + + # Create index for time-series queries + op.create_index('idx_admin_metrics_date', 'admin_metrics', ['metric_date']) + + +def downgrade() -> None: + """Drop admin_metrics table.""" + + op.drop_index('idx_admin_metrics_date', table_name='admin_metrics') + op.drop_table('admin_metrics') diff --git a/phase-1-core-infra/backend/alembic/versions/007_better_auth_schema.py b/phase-1-core-infra/backend/alembic/versions/007_better_auth_schema.py new file mode 100644 index 0000000000000000000000000000000000000000..f47010d92c6286a61643505486b125dc8a5456dd --- /dev/null +++ b/phase-1-core-infra/backend/alembic/versions/007_better_auth_schema.py @@ -0,0 +1,103 @@ +"""Create Better Auth schema + +Revision ID: 007_better_auth_schema +Revises: 005_create_admin_metrics +Create Date: 2026-02-12 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '007_better_auth_schema' +down_revision = '005_admin_metrics' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # Alter existing users table to add Better Auth fields + op.add_column('users', sa.Column('email_verified', sa.Boolean(), nullable=False, server_default='false')) + op.add_column('users', sa.Column('image', sa.Text(), nullable=True)) + op.add_column('users', sa.Column('is_admin', sa.Boolean(), nullable=False, server_default='false')) + op.add_column('users', sa.Column('clerk_id', sa.String(255), nullable=True, unique=True)) + op.add_column('users', sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()'))) + + # Rename hashed_password to password_hash for Better Auth compatibility + op.alter_column('users', 'hashed_password', new_column_name='password_hash') + + # Create index for clerk_id + op.create_index('idx_users_clerk_id', 'users', ['clerk_id']) + + # Create sessions table + op.create_table( + 'sessions', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text('gen_random_uuid()')), + sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('token', sa.Text(), nullable=False, unique=True), + sa.Column('expires_at', sa.DateTime(timezone=True), nullable=False), + sa.Column('ip_address', sa.String(45), nullable=True), + sa.Column('user_agent', sa.Text(), nullable=True), + sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'), + ) + + # Create indexes for sessions table + op.create_index('idx_sessions_user_id', 'sessions', ['user_id']) + op.create_index('idx_sessions_token', 'sessions', ['token']) + op.create_index('idx_sessions_expires_at', 'sessions', ['expires_at']) + + # Create accounts table (OAuth providers) + op.create_table( + 'accounts', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text('gen_random_uuid()')), + sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('provider', sa.String(50), nullable=False), + sa.Column('provider_account_id', sa.String(255), nullable=False), + sa.Column('access_token', sa.Text(), nullable=True), + sa.Column('refresh_token', sa.Text(), nullable=True), + sa.Column('expires_at', sa.DateTime(timezone=True), nullable=True), + sa.Column('token_type', sa.String(50), nullable=True), + sa.Column('scope', sa.Text(), nullable=True), + sa.Column('id_token', sa.Text(), nullable=True), + sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'), + sa.UniqueConstraint('provider', 'provider_account_id', name='uq_provider_account'), + ) + + # Create indexes for accounts table + op.create_index('idx_accounts_user_id', 'accounts', ['user_id']) + op.create_index('idx_accounts_provider', 'accounts', ['provider', 'provider_account_id']) + + # Create verification_tokens table + op.create_table( + 'verification_tokens', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text('gen_random_uuid()')), + sa.Column('identifier', sa.String(255), nullable=False), + sa.Column('token', sa.Text(), nullable=False, unique=True), + sa.Column('expires_at', sa.DateTime(timezone=True), nullable=False), + sa.Column('type', sa.String(50), nullable=False), + sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('NOW()')), + ) + + # Create indexes for verification_tokens table + op.create_index('idx_verification_tokens_token', 'verification_tokens', ['token']) + op.create_index('idx_verification_tokens_identifier', 'verification_tokens', ['identifier']) + + +def downgrade() -> None: + # Drop new tables + op.drop_table('verification_tokens') + op.drop_table('accounts') + op.drop_table('sessions') + + # Revert users table changes + op.drop_index('idx_users_clerk_id', 'users') + op.alter_column('users', 'password_hash', new_column_name='hashed_password') + op.drop_column('users', 'updated_at') + op.drop_column('users', 'clerk_id') + op.drop_column('users', 'is_admin') + op.drop_column('users', 'image') + op.drop_column('users', 'email_verified') diff --git a/phase-1-core-infra/backend/alembic/versions/008_add_post_logs_and_twitter.py b/phase-1-core-infra/backend/alembic/versions/008_add_post_logs_and_twitter.py new file mode 100644 index 0000000000000000000000000000000000000000..bd2e279c9ab1e919049db967ebbc287852af8688 --- /dev/null +++ b/phase-1-core-infra/backend/alembic/versions/008_add_post_logs_and_twitter.py @@ -0,0 +1,50 @@ +"""Add post_logs table and Twitter platform support + +Revision ID: 008_add_post_logs_and_twitter +Revises: 007_better_auth_schema +Create Date: 2026-03-01 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers +revision = '008_add_post_logs_and_twitter' +down_revision = '007_better_auth_schema' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # Make social_account_id nullable in draft_posts (posts can exist without a specific account) + op.alter_column('draft_posts', 'social_account_id', nullable=True) + + # Create post_logs table + # platform and status stored as VARCHAR(50) - consistent with existing schema + op.create_table( + 'post_logs', + sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True), + sa.Column('post_id', postgresql.UUID(as_uuid=True), + sa.ForeignKey('draft_posts.id', ondelete='CASCADE'), nullable=False), + sa.Column('user_id', postgresql.UUID(as_uuid=True), + sa.ForeignKey('users.id', ondelete='CASCADE'), nullable=False), + sa.Column('platform', sa.String(50), nullable=False), + sa.Column('status', sa.String(50), nullable=False, server_default='failed'), + sa.Column('message', sa.Text(), nullable=True), + sa.Column('platform_post_id', sa.String(255), nullable=True), + sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, + server_default=sa.text('NOW()')), + ) + + op.create_index('ix_post_logs_post_id', 'post_logs', ['post_id']) + op.create_index('ix_post_logs_user_id', 'post_logs', ['user_id']) + op.create_index('ix_post_logs_status', 'post_logs', ['status']) + + +def downgrade() -> None: + op.drop_index('ix_post_logs_status', table_name='post_logs') + op.drop_index('ix_post_logs_user_id', table_name='post_logs') + op.drop_index('ix_post_logs_post_id', table_name='post_logs') + op.drop_table('post_logs') + op.alter_column('draft_posts', 'social_account_id', nullable=False) diff --git a/phase-1-core-infra/backend/pyproject.toml b/phase-1-core-infra/backend/pyproject.toml new file mode 100644 index 0000000000000000000000000000000000000000..9e4374d7f74701ef94087088817a112fa3a3fc3c --- /dev/null +++ b/phase-1-core-infra/backend/pyproject.toml @@ -0,0 +1,22 @@ +[tool.black] +line-length = 100 +target-version = ['py311'] +include = '\.pyi?$' + +[tool.isort] +profile = "black" +line_length = 100 + +[tool.mypy] +python_version = "3.11" +warn_return_any = true +warn_unused_configs = true +disallow_untyped_defs = true +ignore_missing_imports = true + +[tool.pytest.ini_options] +testpaths = ["tests"] +python_files = ["test_*.py"] +python_classes = ["Test*"] +python_functions = ["test_*"] +asyncio_mode = "auto" diff --git a/phase-1-core-infra/backend/requirements-dev.txt b/phase-1-core-infra/backend/requirements-dev.txt new file mode 100644 index 0000000000000000000000000000000000000000..c90623701caea7a64e65b55d01b8e30b5cea8037 --- /dev/null +++ b/phase-1-core-infra/backend/requirements-dev.txt @@ -0,0 +1,14 @@ +# Testing +pytest==7.4.3 +pytest-asyncio==0.21.1 +pytest-cov==4.1.0 +httpx==0.25.2 + +# Linting and formatting +black==23.12.0 +flake8==6.1.0 +mypy==1.7.1 +isort==5.13.2 + +# Type stubs +types-passlib==1.7.7.20260211 diff --git a/phase-1-core-infra/backend/requirements.txt b/phase-1-core-infra/backend/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..828681eefab0fb4e33635ea933d69ff3494caeb5 --- /dev/null +++ b/phase-1-core-infra/backend/requirements.txt @@ -0,0 +1,36 @@ +# FastAPI and ASGI server +fastapi>=0.104.1 +uvicorn[standard]>=0.24.0 +python-multipart>=0.0.6 + +# Database +sqlalchemy[asyncio]>=2.0.23 +asyncpg>=0.29.0 +psycopg2-binary>=2.9.9 +alembic>=1.13.0 + +# Data validation +pydantic>=2.5.0 +pydantic-settings>=2.1.0 +email-validator>=2.1.0 + +# Authentication and security +passlib[bcrypt]>=1.7.4 +pyjwt>=2.8.0 +cryptography>=41.0.7 + +# HTTP client for OAuth +httpx>=0.25.2 + +# Environment variables +python-dotenv>=1.0.0 + +# Rate limiting +slowapi>=0.1.9 + +# Redis client +redis>=5.0.1 + +# AI Content Generation +openai>=1.12.0 +google-generativeai>=0.4.0 diff --git a/phase-1-core-infra/backend/scripts/migrate_encrypt_tokens.py b/phase-1-core-infra/backend/scripts/migrate_encrypt_tokens.py new file mode 100644 index 0000000000000000000000000000000000000000..da01dac44f27672e57d2f068b21451e4d9cac4f6 --- /dev/null +++ b/phase-1-core-infra/backend/scripts/migrate_encrypt_tokens.py @@ -0,0 +1,201 @@ +""" +Migration script to encrypt existing social media tokens. + +This script: +1. Reads all social accounts with plaintext tokens +2. Encrypts access_token and refresh_token using TokenEncryption +3. Stores encrypted values in encrypted_access_token and encrypted_refresh_token +4. Sets encryption_key_version to 1 +5. Optionally clears plaintext tokens after successful encryption + +Usage: + python scripts/migrate_encrypt_tokens.py [--dry-run] [--clear-plaintext] +""" + +import asyncio +import argparse +import sys +from pathlib import Path + +# Add parent directory to path for imports +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from sqlalchemy import select, update +from sqlalchemy.ext.asyncio import AsyncSession + +from src.database import async_session_maker +from src.models.social_account import SocialAccount +from src.security.encryption import get_encryption_service + + +async def migrate_tokens(dry_run: bool = False, clear_plaintext: bool = False): + """ + Migrate plaintext tokens to encrypted format. + + Args: + dry_run: If True, only show what would be done without making changes + clear_plaintext: If True, clear plaintext tokens after encryption + """ + encryption_service = get_encryption_service() + + async with async_session_maker() as session: + # Find all accounts with plaintext tokens that haven't been encrypted + query = select(SocialAccount).where( + SocialAccount.encrypted_access_token.is_(None) + ) + + result = await session.execute(query) + accounts = result.scalars().all() + + if not accounts: + print("✓ No accounts found with plaintext tokens. Migration not needed.") + return + + print(f"Found {len(accounts)} accounts with plaintext tokens") + + if dry_run: + print("\n[DRY RUN MODE - No changes will be made]\n") + + success_count = 0 + error_count = 0 + + for account in accounts: + try: + print(f"\nProcessing account {account.id} ({account.platform})...") + + # Encrypt access token + if account.access_token: + encrypted_access = encryption_service.encrypt(account.access_token) + print(f" ✓ Encrypted access token ({len(account.access_token)} chars → {len(encrypted_access)} chars)") + else: + encrypted_access = None + print(f" ⚠ No access token to encrypt") + + # Encrypt refresh token if present + encrypted_refresh = None + if account.refresh_token: + encrypted_refresh = encryption_service.encrypt(account.refresh_token) + print(f" ✓ Encrypted refresh token ({len(account.refresh_token)} chars → {len(encrypted_refresh)} chars)") + + if not dry_run: + # Update the account + account.encrypted_access_token = encrypted_access + account.encrypted_refresh_token = encrypted_refresh + account.encryption_key_version = 1 + + # Optionally clear plaintext tokens + if clear_plaintext: + account.access_token = None + account.refresh_token = None + print(f" ✓ Cleared plaintext tokens") + + await session.commit() + print(f" ✓ Account {account.id} migrated successfully") + else: + print(f" [DRY RUN] Would update account {account.id}") + + success_count += 1 + + except Exception as e: + error_count += 1 + print(f" ✗ Error migrating account {account.id}: {e}") + if not dry_run: + await session.rollback() + + print(f"\n{'=' * 60}") + print(f"Migration {'simulation' if dry_run else 'complete'}:") + print(f" ✓ Success: {success_count}") + print(f" ✗ Errors: {error_count}") + print(f"{'=' * 60}\n") + + if dry_run: + print("Run without --dry-run to apply changes") + elif clear_plaintext: + print("⚠ Plaintext tokens have been cleared. Ensure encrypted tokens work before proceeding.") + + +async def verify_encryption(): + """ + Verify that encrypted tokens can be decrypted successfully. + """ + encryption_service = get_encryption_service() + + async with async_session_maker() as session: + # Find accounts with encrypted tokens + query = select(SocialAccount).where( + SocialAccount.encrypted_access_token.isnot(None) + ).limit(5) + + result = await session.execute(query) + accounts = result.scalars().all() + + if not accounts: + print("No encrypted accounts found to verify") + return + + print(f"\nVerifying encryption for {len(accounts)} sample accounts...\n") + + success_count = 0 + error_count = 0 + + for account in accounts: + try: + # Try to decrypt + decrypted_access = encryption_service.decrypt(account.encrypted_access_token) + + # Verify it's not empty + if decrypted_access and len(decrypted_access) > 0: + print(f"✓ Account {account.id} ({account.platform}): Decryption successful ({len(decrypted_access)} chars)") + success_count += 1 + else: + print(f"✗ Account {account.id}: Decrypted token is empty") + error_count += 1 + + except Exception as e: + print(f"✗ Account {account.id}: Decryption failed - {e}") + error_count += 1 + + print(f"\n{'=' * 60}") + print(f"Verification complete:") + print(f" ✓ Success: {success_count}") + print(f" ✗ Errors: {error_count}") + print(f"{'=' * 60}\n") + + +def main(): + parser = argparse.ArgumentParser( + description="Migrate social media tokens to encrypted format" + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Show what would be done without making changes" + ) + parser.add_argument( + "--clear-plaintext", + action="store_true", + help="Clear plaintext tokens after successful encryption (recommended for production)" + ) + parser.add_argument( + "--verify", + action="store_true", + help="Verify that encrypted tokens can be decrypted" + ) + + args = parser.parse_args() + + print("\n" + "=" * 60) + print("Token Encryption Migration Script") + print("=" * 60 + "\n") + + if args.verify: + asyncio.run(verify_encryption()) + else: + asyncio.run(migrate_tokens( + dry_run=args.dry_run, + clear_plaintext=args.clear_plaintext + )) + + +if __name__ == "__main__": + main() diff --git a/phase-1-core-infra/backend/scripts/seed_rate_limits.py b/phase-1-core-infra/backend/scripts/seed_rate_limits.py new file mode 100644 index 0000000000000000000000000000000000000000..b449d988dd4c2facb4ab36af541dc192c0fd6b2f --- /dev/null +++ b/phase-1-core-infra/backend/scripts/seed_rate_limits.py @@ -0,0 +1,138 @@ +""" +Seed default rate limit rules into the database. + +This script populates the rate_limit_rules table with default rate limiting +configurations for all API endpoints. + +Usage: + python scripts/seed_rate_limits.py +""" + +import asyncio +import sys +from pathlib import Path + +# Add parent directory to path to import from src +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from sqlalchemy import select +from src.database import async_session_maker +from src.models.rate_limit import RateLimitRule + + +async def seed_rate_limits(): + """Seed default rate limit rules.""" + + default_rules = [ + { + "endpoint_pattern": "/api/v1/content/generate", + "requests_per_minute": 10, + "requests_per_hour": 100, + "tier_overrides": { + "basic": 5, + "pro": 10, + "agency": 20 + }, + "enabled": True, + "description": "AI content generation (expensive operation)" + }, + { + "endpoint_pattern": "/api/v1/video/generate", + "requests_per_minute": 5, + "requests_per_hour": 50, + "tier_overrides": { + "basic": 2, + "pro": 5, + "agency": 10 + }, + "enabled": True, + "description": "Veo video generation (very expensive operation)" + }, + { + "endpoint_pattern": "/api/v1/posts/*", + "requests_per_minute": 60, + "requests_per_hour": 600, + "tier_overrides": { + "basic": 30, + "pro": 60, + "agency": 120 + }, + "enabled": True, + "description": "Standard CRUD operations for posts" + }, + { + "endpoint_pattern": "/api/v1/user/*", + "requests_per_minute": 30, + "requests_per_hour": 300, + "tier_overrides": { + "basic": 20, + "pro": 30, + "agency": 60 + }, + "enabled": True, + "description": "User profile and settings operations" + }, + { + "endpoint_pattern": "/api/v1/campaigns/*", + "requests_per_minute": 30, + "requests_per_hour": 300, + "tier_overrides": { + "basic": 20, + "pro": 30, + "agency": 60 + }, + "enabled": True, + "description": "Campaign management operations" + }, + { + "endpoint_pattern": "/api/v1/analytics/*", + "requests_per_minute": 60, + "requests_per_hour": 600, + "tier_overrides": { + "basic": 30, + "pro": 60, + "agency": 120 + }, + "enabled": True, + "description": "Analytics and reporting endpoints" + }, + { + "endpoint_pattern": "/api/v1/social-accounts/*", + "requests_per_minute": 30, + "requests_per_hour": 300, + "tier_overrides": { + "basic": 20, + "pro": 30, + "agency": 60 + }, + "enabled": True, + "description": "Social media account management" + } + ] + + async with async_session_maker() as session: + # Check if rules already exist + result = await session.execute(select(RateLimitRule)) + existing_rules = result.scalars().all() + + if existing_rules: + print(f"⚠️ Found {len(existing_rules)} existing rate limit rules. Skipping seed.") + return + + # Insert default rules + for rule_data in default_rules: + rule = RateLimitRule(**rule_data) + session.add(rule) + + await session.commit() + print(f"✅ Successfully seeded {len(default_rules)} rate limit rules") + + # Display seeded rules + print("\nSeeded rate limit rules:") + for rule_data in default_rules: + print(f" - {rule_data['endpoint_pattern']}: {rule_data['requests_per_minute']} req/min") + + +if __name__ == "__main__": + print("🌱 Seeding rate limit rules...") + asyncio.run(seed_rate_limits()) diff --git a/phase-1-core-infra/backend/src/__init__.py b/phase-1-core-infra/backend/src/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/phase-1-core-infra/backend/src/api/__init__.py b/phase-1-core-infra/backend/src/api/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/phase-1-core-infra/backend/src/api/admin/middleware.py b/phase-1-core-infra/backend/src/api/admin/middleware.py new file mode 100644 index 0000000000000000000000000000000000000000..1e600fe61b4ae6787a641f7b50121473cd3bb65e --- /dev/null +++ b/phase-1-core-infra/backend/src/api/admin/middleware.py @@ -0,0 +1,46 @@ +""" +Admin authentication middleware. + +Ensures only users with admin role can access admin endpoints. +""" + +from fastapi import Depends, HTTPException, status +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy import select + +from src.database import get_async_db +from src.models.user import User +from src.auth import get_current_user + + +async def require_admin( + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_async_db) +) -> User: + """ + Dependency that requires the current user to have admin role. + + Args: + current_user: Current authenticated user + db: Database session + + Returns: + User object if user is admin + + Raises: + HTTPException: 403 if user is not admin + """ + if not current_user: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Authentication required" + ) + + # Check if user has admin role + if not getattr(current_user, 'is_admin', False): + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail="Admin role required" + ) + + return current_user diff --git a/phase-1-core-infra/backend/src/api/admin/routes.py b/phase-1-core-infra/backend/src/api/admin/routes.py new file mode 100644 index 0000000000000000000000000000000000000000..034f0105906bf76e63bfb22317c90a4f9b6677f2 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/admin/routes.py @@ -0,0 +1,268 @@ +""" +Admin API routes for dashboard metrics and monitoring. + +Provides endpoints for: +- User growth metrics +- Revenue metrics +- API usage tracking +- System health monitoring +- Rate limit violations +- Metrics export +""" + +from fastapi import APIRouter, Depends, HTTPException, Query, status +from fastapi.responses import StreamingResponse +from sqlalchemy import select, func, and_, or_ +from sqlalchemy.ext.asyncio import AsyncSession +from datetime import datetime, timedelta, date +from typing import Optional +import csv +import io + +from src.database import get_async_db +from src.api.admin import schemas +from src.api.admin.middleware import require_admin +from src.models.user import User +# from src.models.subscription import Subscription # Phase 6 - not yet implemented +from src.models.rate_limit import RateLimitViolation + + +router = APIRouter(prefix="/admin", tags=["Admin"]) + + +@router.get("/metrics/summary", response_model=schemas.MetricsSummary) +async def get_metrics_summary( + db: AsyncSession = Depends(get_async_db), + current_user: User = Depends(require_admin) +): + """Get summary of all metrics for admin dashboard.""" + + # User metrics + total_users_result = await db.execute(select(func.count(User.id))) + total_users = total_users_result.scalar() or 0 + + # Placeholder for subscriptions (Phase 6 feature) + active_subscriptions = 0 # Will be implemented in Phase 6 + + today = date.today() + new_users_result = await db.execute( + select(func.count(User.id)).where(func.date(User.created_at) == today) + ) + new_users_today = new_users_result.scalar() or 0 + + # Calculate growth rate (last 30 days) + thirty_days_ago = today - timedelta(days=30) + users_30d_ago_result = await db.execute( + select(func.count(User.id)).where(User.created_at < thirty_days_ago) + ) + users_30d_ago = users_30d_ago_result.scalar() or 1 + growth_rate = ((total_users - users_30d_ago) / users_30d_ago * 100) if users_30d_ago > 0 else 0 + + # Revenue metrics (simplified - would integrate with Stripe in production) + mrr_cents = active_subscriptions * 2900 # Placeholder calculation + total_revenue_cents = mrr_cents * 12 # Placeholder + + # API usage metrics (placeholder - would query actual usage logs) + openai_tokens = 15000000 + veo_videos = 1250 + total_cost_cents = 125000 + + # System health + system_health = { + "database": "healthy", + "redis": "healthy", + "overall_status": "healthy" + } + + return schemas.MetricsSummary( + users={ + "total": total_users, + "active_subscriptions": active_subscriptions, + "new_today": new_users_today, + "growth_rate_30d": round(growth_rate, 2) + }, + revenue={ + "mrr_cents": mrr_cents, + "total_revenue_cents": total_revenue_cents, + "revenue_by_plan": { + "basic": 580000, + "pro": 2970000, + "agency": 905000 + } + }, + api_usage={ + "openai_tokens_used": openai_tokens, + "veo_videos_generated": veo_videos, + "total_cost_cents": total_cost_cents + }, + system_health=system_health, + computed_at=datetime.utcnow() + ) + + +@router.get("/metrics/users", response_model=schemas.UserMetrics) +async def get_user_metrics( + period: str = Query("30d", pattern="^(7d|30d|90d|1y)$"), + granularity: str = Query("daily", pattern="^(daily|weekly|monthly)$"), + db: AsyncSession = Depends(get_async_db), + current_user: User = Depends(require_admin) +): + """Get user growth metrics over time.""" + + # Calculate date range + today = date.today() + if period == "7d": + start_date = today - timedelta(days=7) + elif period == "30d": + start_date = today - timedelta(days=30) + elif period == "90d": + start_date = today - timedelta(days=90) + else: # 1y + start_date = today - timedelta(days=365) + + # Generate data points (simplified - would aggregate from database) + data_points = [] + current_date = start_date + while current_date <= today: + # Query users created up to this date + total_users_result = await db.execute( + select(func.count(User.id)).where(User.created_at <= current_date) + ) + total_users = total_users_result.scalar() or 0 + + # Query new users on this date + new_users_result = await db.execute( + select(func.count(User.id)).where(func.date(User.created_at) == current_date) + ) + new_users = new_users_result.scalar() or 0 + + # Placeholder for subscriptions (Phase 6 feature) + active_subs = 0 # Will be implemented in Phase 6 + + data_points.append(schemas.UserMetricsData( + date=current_date, + total_users=total_users, + new_users=new_users, + active_subscriptions=active_subs + )) + + current_date += timedelta(days=1) + + return schemas.UserMetrics( + period=period, + granularity=granularity, + data_points=data_points + ) + + +@router.get("/metrics/system-health", response_model=schemas.SystemHealth) +async def get_system_health( + db: AsyncSession = Depends(get_async_db), + current_user: User = Depends(require_admin) +): + """Get system health status for all components.""" + + components = {} + overall_status = schemas.HealthStatus.HEALTHY + + # Check database + try: + await db.execute(select(1)) + components["database"] = schemas.ComponentHealth( + status=schemas.HealthStatus.HEALTHY, + response_time_ms=25, + last_checked=datetime.utcnow() + ) + except Exception as e: + components["database"] = schemas.ComponentHealth( + status=schemas.HealthStatus.DOWN, + response_time_ms=0, + error_message=str(e), + last_checked=datetime.utcnow() + ) + overall_status = schemas.HealthStatus.DOWN + + # Check Redis (placeholder) + components["redis"] = schemas.ComponentHealth( + status=schemas.HealthStatus.HEALTHY, + response_time_ms=10, + last_checked=datetime.utcnow() + ) + + return schemas.SystemHealth( + overall_status=overall_status, + components=components, + checked_at=datetime.utcnow() + ) + + +@router.get("/rate-limits/violations", response_model=schemas.RateLimitViolations) +async def get_rate_limit_violations( + limit: int = Query(100, ge=1, le=1000), + offset: int = Query(0, ge=0), + db: AsyncSession = Depends(get_async_db), + current_user: User = Depends(require_admin) +): + """Get recent rate limit violations for security monitoring.""" + + # Query violations + violations_query = select(RateLimitViolation).order_by( + RateLimitViolation.violated_at.desc() + ).limit(limit).offset(offset) + + result = await db.execute(violations_query) + violations = result.scalars().all() + + # Get total count + count_result = await db.execute(select(func.count(RateLimitViolation.id))) + total_count = count_result.scalar() or 0 + + return schemas.RateLimitViolations( + violations=[ + schemas.RateLimitViolation( + id=str(v.id), + user_id=str(v.user_id) if v.user_id else None, + ip_address=v.ip_address, + endpoint=v.endpoint, + requests_made=v.requests_made, + limit_allowed=v.limit_allowed, + window_seconds=v.window_seconds, + violated_at=v.violated_at + ) + for v in violations + ], + total_count=total_count, + limit=limit, + offset=offset + ) + + +@router.post("/metrics/export") +async def export_metrics( + request: schemas.ExportRequest, + db: AsyncSession = Depends(get_async_db), + current_user: User = Depends(require_admin) +): + """Export metrics data as CSV.""" + + # Create CSV in memory + output = io.StringIO() + writer = csv.writer(output) + + # Write headers + writer.writerow(["Date", "Metric Type", "Value"]) + + # Write data (simplified - would query actual data) + current_date = request.start_date + while current_date <= request.end_date: + for metric_type in request.metric_types: + writer.writerow([current_date, metric_type, "100"]) + current_date += timedelta(days=1) + + # Return as streaming response + output.seek(0) + return StreamingResponse( + iter([output.getvalue()]), + media_type="text/csv", + headers={"Content-Disposition": f"attachment; filename=metrics_{datetime.utcnow().strftime('%Y%m%d')}.csv"} + ) diff --git a/phase-1-core-infra/backend/src/api/admin/schemas.py b/phase-1-core-infra/backend/src/api/admin/schemas.py new file mode 100644 index 0000000000000000000000000000000000000000..975a666095976ce08ee1d5360dcb37cb3e6b8905 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/admin/schemas.py @@ -0,0 +1,126 @@ +""" +Admin API schemas for request/response models. +""" + +from pydantic import BaseModel, Field +from typing import Dict, List, Optional, Any +from datetime import date, datetime +from enum import Enum + + +class HealthStatus(str, Enum): + """Health status enum.""" + HEALTHY = "healthy" + DEGRADED = "degraded" + DOWN = "down" + + +class ComponentHealth(BaseModel): + """Component health status.""" + status: HealthStatus + response_time_ms: int + error_message: Optional[str] = None + last_checked: datetime + + +class SystemHealth(BaseModel): + """System health response.""" + overall_status: HealthStatus + components: Dict[str, ComponentHealth] + checked_at: datetime + + +class UserMetricsData(BaseModel): + """User metrics data point.""" + date: date + total_users: int + new_users: int + active_subscriptions: int + + +class UserMetrics(BaseModel): + """User metrics response.""" + period: str + granularity: str + data_points: List[UserMetricsData] + + +class RevenueByPlan(BaseModel): + """Revenue breakdown by plan.""" + count: int + revenue_cents: int + + +class RevenueTimelineData(BaseModel): + """Revenue timeline data point.""" + date: date + revenue_cents: int + + +class RevenueMetrics(BaseModel): + """Revenue metrics response.""" + period: str + current_mrr_cents: int + total_revenue_cents: int + revenue_by_plan: Dict[str, RevenueByPlan] + revenue_timeline: List[RevenueTimelineData] + + +class ApiUsageData(BaseModel): + """API usage data by provider.""" + tokens_used: Optional[int] = None + videos_generated: Optional[int] = None + cost_cents: int + + +class ApiUsageTimelineData(BaseModel): + """API usage timeline data point.""" + date: date + tokens_used: int + cost_cents: int + + +class ApiUsageMetrics(BaseModel): + """API usage metrics response.""" + period: str + provider: str + usage_data: Dict[str, ApiUsageData] + total_cost_cents: int + usage_timeline: List[ApiUsageTimelineData] + + +class MetricsSummary(BaseModel): + """Summary of all metrics.""" + users: Dict[str, Any] + revenue: Dict[str, Any] + api_usage: Dict[str, Any] + system_health: Dict[str, str] + computed_at: datetime + + +class RateLimitViolation(BaseModel): + """Rate limit violation record.""" + id: str + user_id: Optional[str] = None + ip_address: str + endpoint: str + requests_made: int + limit_allowed: int + window_seconds: int + violated_at: datetime + + +class RateLimitViolations(BaseModel): + """Rate limit violations response.""" + violations: List[RateLimitViolation] + total_count: int + limit: int + offset: int + + +class ExportRequest(BaseModel): + """Metrics export request.""" + metric_types: List[str] = Field(..., min_items=1) + start_date: date + end_date: date + format: str = "csv" diff --git a/phase-1-core-infra/backend/src/api/deps.py b/phase-1-core-infra/backend/src/api/deps.py new file mode 100644 index 0000000000000000000000000000000000000000..97169d38235eae9470af0ea3914a933a44ab71f7 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/deps.py @@ -0,0 +1,18 @@ +""" +Dependency injection for FastAPI endpoints. +Provides database sessions and authentication using Better Auth. +""" +from fastapi import Depends, Request +from sqlalchemy.orm import Session +from src.database import get_db +from src.auth.middleware import get_current_user, get_current_admin_user, get_optional_user +from src.models.user import User + + +# Re-export middleware dependencies for backward compatibility +__all__ = [ + "get_db", + "get_current_user", + "get_current_admin_user", + "get_optional_user" +] diff --git a/phase-1-core-infra/backend/src/api/health.py b/phase-1-core-infra/backend/src/api/health.py new file mode 100644 index 0000000000000000000000000000000000000000..8ca808ff4d216a2ab6dcc865a09077da8ca769a0 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/health.py @@ -0,0 +1,59 @@ +""" +Health check endpoint for backend API. + +Provides health status for Docker container orchestration and monitoring. +""" + +from fastapi import APIRouter, status +from fastapi.responses import JSONResponse +from sqlalchemy import text +from datetime import datetime +import redis.asyncio as redis + +from src.database import AsyncSessionLocal +from src.config import settings + + +router = APIRouter() + + +@router.get("/health", status_code=status.HTTP_200_OK) +async def health_check(): + """ + Health check endpoint for container orchestration. + + Returns: + JSON response with health status and component checks + """ + health_status = { + "status": "healthy", + "timestamp": datetime.utcnow().isoformat(), + "service": "marketing-automation-backend", + "version": "1.0.0", + "components": {} + } + + # Check database connection + try: + async with AsyncSessionLocal() as session: + await session.execute(text("SELECT 1")) + health_status["components"]["database"] = "healthy" + except Exception as e: + health_status["components"]["database"] = "unhealthy" + health_status["status"] = "degraded" + + # Check Redis connection + try: + redis_client = redis.from_url(settings.REDIS_URL, decode_responses=True) + await redis_client.ping() + await redis_client.close() + health_status["components"]["redis"] = "healthy" + except Exception as e: + health_status["components"]["redis"] = "unhealthy" + health_status["status"] = "degraded" + + # Return appropriate status code + if health_status["status"] == "healthy": + return JSONResponse(content=health_status, status_code=status.HTTP_200_OK) + else: + return JSONResponse(content=health_status, status_code=status.HTTP_503_SERVICE_UNAVAILABLE) diff --git a/phase-1-core-infra/backend/src/api/v1/__init__.py b/phase-1-core-infra/backend/src/api/v1/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/phase-1-core-infra/backend/src/api/v1/analytics.py b/phase-1-core-infra/backend/src/api/v1/analytics.py new file mode 100644 index 0000000000000000000000000000000000000000..73afefa4928f406c5c93727b46eb32775ee8d0da --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/analytics.py @@ -0,0 +1,391 @@ +""" +Analytics & Insights endpoints. +Returns real data from draft_posts and post_logs tables. +LinkedIn engagement data (likes/shares) requires Phase 4 LinkedIn API polling. +""" +from fastapi import APIRouter, Depends, Query +from sqlalchemy.orm import Session +from sqlalchemy import func, case +from typing import Optional +from datetime import datetime, timedelta +import uuid + +from src.auth.middleware import get_current_user +from src.database import get_db +from src.models.user import User +from src.models.draft_post import DraftPost, PostStatus +from src.models.post_log import PostLog, LogStatus + +router = APIRouter(tags=["analytics"]) + + +def _date_range_delta(date_range: str) -> timedelta: + return {"7d": timedelta(days=7), "30d": timedelta(days=30), "90d": timedelta(days=90)}.get(date_range, timedelta(days=30)) + + +@router.get("/analytics/aggregated") +async def get_aggregated_metrics( + platform: Optional[str] = Query(None), + date_range: Optional[str] = Query("30d"), + group_by: Optional[str] = Query("day"), + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """Aggregated post activity grouped by day/week/month.""" + since = datetime.utcnow() - _date_range_delta(date_range or "30d") + user_uuid = uuid.UUID(str(current_user.id)) + + posts = db.query(DraftPost).filter( + DraftPost.user_id == user_uuid, + DraftPost.created_at >= since, + ).all() + + # Group posts by date bucket + buckets: dict = {} + for post in posts: + dt = post.created_at + if group_by == "week": + # Monday of the week + key = (dt - timedelta(days=dt.weekday())).strftime("%Y-%m-%d") + elif group_by == "month": + key = dt.strftime("%Y-%m-01") + else: + key = dt.strftime("%Y-%m-%d") + + plat = post.target_platform.value.lower() if post.target_platform else "linkedin" + bucket_key = f"{key}|{plat}" + if bucket_key not in buckets: + buckets[bucket_key] = { + "date": key, + "platform": plat, + "total_likes": 0, + "total_shares": 0, + "total_views": 0, + "total_comments": 0, + "avg_engagement_rate": 0.0, + "post_count": 0, + "published_count": 0, + "failed_count": 0, + "scheduled_count": 0, + } + b = buckets[bucket_key] + b["post_count"] += 1 + if post.status == PostStatus.PUBLISHED: + b["published_count"] += 1 + elif post.status == PostStatus.FAILED: + b["failed_count"] += 1 + elif post.status == PostStatus.SCHEDULED: + b["scheduled_count"] += 1 + + data = sorted(buckets.values(), key=lambda x: x["date"]) + return {"data": data} + + +@router.get("/analytics/metrics") +async def get_metrics( + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + user_uuid = uuid.UUID(str(current_user.id)) + total = db.query(DraftPost).filter(DraftPost.user_id == user_uuid).count() + return {"data": [], "total": total, "limit": 20, "offset": 0} + + +@router.get("/analytics/collection-status") +async def get_collection_status( + current_user: User = Depends(get_current_user), +): + return {"status": "active", "message": "Post activity tracking active. LinkedIn engagement sync coming in Phase 4."} + + +@router.get("/analytics/summary") +async def get_summary( + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """Overall stats for the current user.""" + user_uuid = uuid.UUID(str(current_user.id)) + since_30d = datetime.utcnow() - timedelta(days=30) + + total_posts = db.query(DraftPost).filter(DraftPost.user_id == user_uuid).count() + published = db.query(DraftPost).filter( + DraftPost.user_id == user_uuid, + DraftPost.status == PostStatus.PUBLISHED, + ).count() + scheduled = db.query(DraftPost).filter( + DraftPost.user_id == user_uuid, + DraftPost.status == PostStatus.SCHEDULED, + ).count() + failed = db.query(DraftPost).filter( + DraftPost.user_id == user_uuid, + DraftPost.status == PostStatus.FAILED, + ).count() + drafts = db.query(DraftPost).filter( + DraftPost.user_id == user_uuid, + DraftPost.status == PostStatus.DRAFT, + ).count() + posts_30d = db.query(DraftPost).filter( + DraftPost.user_id == user_uuid, + DraftPost.created_at >= since_30d, + ).count() + published_30d = db.query(DraftPost).filter( + DraftPost.user_id == user_uuid, + DraftPost.status == PostStatus.PUBLISHED, + DraftPost.published_at >= since_30d, + ).count() + + success_rate = round((published / total_posts * 100) if total_posts > 0 else 0, 1) + + return { + "total_posts": total_posts, + "published": published, + "scheduled": scheduled, + "failed": failed, + "drafts": drafts, + "posts_last_30d": posts_30d, + "published_last_30d": published_30d, + "success_rate": success_rate, + } + + +@router.get("/insights") +async def get_insights( + platform: Optional[str] = Query(None), + is_active: Optional[bool] = Query(None), + min_confidence: Optional[float] = Query(None), + limit: int = Query(10), + offset: int = Query(0), + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """Generate insights from post history patterns.""" + user_uuid = uuid.UUID(str(current_user.id)) + insights = _generate_insights(db, user_uuid) + return {"data": insights[offset:offset + limit], "total": len(insights), "limit": limit, "offset": offset} + + +@router.get("/insights/active") +async def get_active_insights( + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + user_uuid = uuid.UUID(str(current_user.id)) + insights = _generate_insights(db, user_uuid) + return {"data": [i for i in insights if i["is_active"]]} + + +@router.get("/insights/summary") +async def get_insights_summary( + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + user_uuid = uuid.UUID(str(current_user.id)) + insights = _generate_insights(db, user_uuid) + active = [i for i in insights if i["is_active"]] + return { + "total_insights": len(insights), + "active_insights": len(active), + "platform_breakdown": {"linkedin": len(active)}, + "top_insights": active[:3], + } + + +@router.get("/insights/lessons") +async def get_lessons( + limit: int = Query(10), + offset: int = Query(0), + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + user_uuid = uuid.UUID(str(current_user.id)) + lessons = _generate_lessons(db, user_uuid) + return {"data": lessons[offset:offset + limit], "total": len(lessons)} + + +# ── Insight / Lesson generators ─────────────────────────────────────────────── + +def _generate_insights(db: Session, user_uuid: uuid.UUID) -> list: + """Generate pattern-based insights from post history.""" + posts = db.query(DraftPost).filter(DraftPost.user_id == user_uuid).all() + if not posts: + return [] + + insights = [] + total = len(posts) + published = [p for p in posts if p.status == PostStatus.PUBLISHED] + failed = [p for p in posts if p.status == PostStatus.FAILED] + scheduled = [p for p in posts if p.status == PostStatus.SCHEDULED] + + now = datetime.utcnow() + idx = 0 + + # Insight 1: Publish success rate + if total >= 1: + rate = len(published) / total * 100 + insights.append({ + "id": f"ins-{idx}", "characteristic": "publish_success_rate", + "insight_text": f"Tumhare {len(published)} posts publish hue hain {total} total posts mein se — {rate:.0f}% success rate.", + "impact_percentage": rate, + "confidence_score": 0.9, + "correlation_coefficient": 0.85, + "sample_size": total, + "platform": "linkedin", + "is_active": True, + "generated_at": now.isoformat(), + "created_at": now.isoformat(), + }) + idx += 1 + + # Insight 2: Posting frequency + if len(posts) >= 2: + days_span = max((now - min(p.created_at.replace(tzinfo=None) for p in posts)).days, 1) + freq = round(len(posts) / days_span * 7, 1) + label = "acchi posting frequency hai" if freq >= 3 else "posting frequency kam hai — zyada post karo" + insights.append({ + "id": f"ins-{idx}", "characteristic": "posting_frequency", + "insight_text": f"Tum average {freq} posts per week karte ho. LinkedIn pe {label}.", + "impact_percentage": min(freq * 15, 90), + "confidence_score": 0.8, + "correlation_coefficient": 0.7, + "sample_size": len(posts), + "platform": "linkedin", + "is_active": True, + "generated_at": now.isoformat(), + "created_at": now.isoformat(), + }) + idx += 1 + + # Insight 3: Best posting day + if len(published) >= 3: + from collections import Counter + day_counts = Counter(p.published_at.strftime("%A") for p in published if p.published_at) + if day_counts: + best_day, best_count = day_counts.most_common(1)[0] + insights.append({ + "id": f"ins-{idx}", "characteristic": "best_posting_day", + "insight_text": f"Tumhara best posting day {best_day} hai — {best_count} posts is din publish hue hain.", + "impact_percentage": 65, + "confidence_score": 0.75, + "correlation_coefficient": 0.6, + "sample_size": len(published), + "platform": "linkedin", + "is_active": True, + "generated_at": now.isoformat(), + "created_at": now.isoformat(), + }) + idx += 1 + + # Insight 4: Scheduled posts + if len(scheduled) > 0: + insights.append({ + "id": f"ins-{idx}", "characteristic": "scheduled_posts", + "insight_text": f"{len(scheduled)} posts scheduled hain. Scheduled posts LinkedIn engagement 20% badhate hain.", + "impact_percentage": 20, + "confidence_score": 0.85, + "correlation_coefficient": 0.55, + "sample_size": len(scheduled), + "platform": "linkedin", + "is_active": True, + "generated_at": now.isoformat(), + "created_at": now.isoformat(), + }) + idx += 1 + + # Insight 5: Failure rate + if len(failed) > 0 and total >= 3: + fail_rate = len(failed) / total * 100 + insights.append({ + "id": f"ins-{idx}", "characteristic": "failure_rate", + "insight_text": f"{len(failed)} posts fail hue hain ({fail_rate:.0f}%). Wajah usually LinkedIn account disconnect hona hoti hai.", + "impact_percentage": fail_rate, + "confidence_score": 0.95, + "correlation_coefficient": -0.8, + "sample_size": total, + "platform": "linkedin", + "is_active": fail_rate > 10, + "generated_at": now.isoformat(), + "created_at": now.isoformat(), + }) + idx += 1 + + # Insight 6: Content with media + posts_with_media = [p for p in posts if p.media_urls and p.media_urls.get("urls")] + if len(posts_with_media) > 0: + media_pct = len(posts_with_media) / total * 100 + insights.append({ + "id": f"ins-{idx}", "characteristic": "media_usage", + "insight_text": f"Tumhare {media_pct:.0f}% posts mein image/video hai. Media posts LinkedIn pe 3x zyada reach paate hain.", + "impact_percentage": 75, + "confidence_score": 0.9, + "correlation_coefficient": 0.78, + "sample_size": total, + "platform": "linkedin", + "is_active": True, + "generated_at": now.isoformat(), + "created_at": now.isoformat(), + }) + idx += 1 + + return insights + + +def _generate_lessons(db: Session, user_uuid: uuid.UUID) -> list: + """Generate AI lessons from post patterns.""" + posts = db.query(DraftPost).filter(DraftPost.user_id == user_uuid).all() + now = datetime.utcnow() + lessons = [] + + if not posts: + return [] + + published = [p for p in posts if p.status == PostStatus.PUBLISHED] + + lessons.append({ + "id": "lesson-0", + "lesson_text": "LinkedIn posts 150-300 words ke darmiyan best perform karte hain. Zyada lamba post skip ho jata hai.", + "source_insight_id": "ins-0", + "prompt_template_id": "linkedin-professional", + "applied_at": now.isoformat(), + "effectiveness_score": 0.82, + "created_at": now.isoformat(), + }) + lessons.append({ + "id": "lesson-1", + "lesson_text": "Hamesha pehli line powerful hook banao — pehle 3 words mein reader ko rok lo.", + "source_insight_id": "ins-1", + "prompt_template_id": "linkedin-hook", + "applied_at": now.isoformat(), + "effectiveness_score": 0.91, + "created_at": now.isoformat(), + }) + lessons.append({ + "id": "lesson-2", + "lesson_text": "Post ke end mein ek targeted question zaroor likho — comments engagement badhata hai reach ko.", + "source_insight_id": "ins-1", + "prompt_template_id": "linkedin-cta", + "applied_at": now.isoformat(), + "effectiveness_score": 0.78, + "created_at": now.isoformat(), + }) + lessons.append({ + "id": "lesson-3", + "lesson_text": "4-6 niche hashtags use karo (#AIMarketing, #LinkedInTips) + 2 broad ones (#LinkedIn, #Marketing). Generic-only hashtags reach limit karti hain.", + "source_insight_id": "ins-2", + "prompt_template_id": "linkedin-hashtags", + "applied_at": now.isoformat(), + "effectiveness_score": 0.74, + "created_at": now.isoformat(), + }) + + if len(published) >= 3: + lessons.append({ + "id": "lesson-4", + "lesson_text": f"Tumne {len(published)} posts successfully publish kiye hain. Consistency LinkedIn algorithm ke liye sabse important signal hai.", + "source_insight_id": "ins-0", + "prompt_template_id": "consistency", + "applied_at": now.isoformat(), + "effectiveness_score": 0.88, + "created_at": now.isoformat(), + }) + + return lessons diff --git a/phase-1-core-infra/backend/src/api/v1/auth.py b/phase-1-core-infra/backend/src/api/v1/auth.py new file mode 100644 index 0000000000000000000000000000000000000000..d5d8857591bfb8620bf348cc8521888483141d31 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/auth.py @@ -0,0 +1,230 @@ +""" +Authentication API endpoints for Better Auth. +""" +from fastapi import APIRouter, Depends, HTTPException, status, Request, Response +from sqlalchemy.orm import Session +from slowapi import Limiter +from slowapi.util import get_remote_address + +from src.database import get_db +from src.schemas.auth import ( + RegisterRequest, + LoginRequest, + AuthResponse, + LogoutResponse, + UserResponse, + SessionResponse +) +from src.services.auth_service import AuthService +from src.auth.middleware import get_current_user +from src.models.user import User +from src.config import settings + + +router = APIRouter(prefix="/auth", tags=["authentication"]) +limiter = Limiter(key_func=get_remote_address) + + +def get_client_info(request: Request) -> tuple[str, str]: + """ + Extract client IP address and user agent from request. + + Args: + request: FastAPI request object + + Returns: + Tuple of (ip_address, user_agent) + """ + # Get IP address (handle proxy headers) + ip_address = request.headers.get("X-Forwarded-For", "").split(",")[0].strip() + if not ip_address: + ip_address = request.headers.get("X-Real-IP", "") + if not ip_address: + ip_address = request.client.host if request.client else "unknown" + + # Get user agent + user_agent = request.headers.get("User-Agent", "unknown") + + return ip_address, user_agent + + +def set_session_cookie(response: Response, token: str, max_age: int = 30 * 24 * 60 * 60): + """ + Set session cookie in response. + + Args: + response: FastAPI response object + token: Session token + max_age: Cookie max age in seconds (default 30 days) + """ + is_production = settings.environment == "production" + response.set_cookie( + key="better-auth.session_token", + value=token, + max_age=max_age, + httponly=True, + secure=is_production, + samesite="lax", + path="/" + ) + + +@router.post("/register", response_model=AuthResponse, status_code=status.HTTP_201_CREATED) +@limiter.limit("5/15minutes") +async def register( + register_request: RegisterRequest, + request: Request, + response: Response, + db: Session = Depends(get_db) +): + """ + Register a new user account. + + Creates a new user and returns user data with session token in HTTP-only cookie. + """ + try: + # Get client info + ip_address, user_agent = get_client_info(request) + + # Create user and session + user, session = AuthService.signup( + db=db, + email=register_request.email, + password=register_request.password, + name=register_request.name, + ip_address=ip_address, + user_agent=user_agent + ) + + # Set session cookie + set_session_cookie(response, session.token) + + # Return user and session data + return AuthResponse( + user=UserResponse(**user.to_dict()), + session=SessionResponse(**session.to_dict()) + ) + + except ValueError as e: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=str(e) + ) + + +@router.post("/login", response_model=AuthResponse) +@limiter.limit("5/15minutes") +async def login( + login_request: LoginRequest, + request: Request, + response: Response, + db: Session = Depends(get_db) +): + """ + Authenticate user and create session. + + Returns user data with session token in HTTP-only cookie. + """ + try: + # Get client info + ip_address, user_agent = get_client_info(request) + + # Authenticate user + user, session = AuthService.login( + db=db, + email=login_request.email, + password=login_request.password, + ip_address=ip_address, + user_agent=user_agent + ) + + # Set session cookie + set_session_cookie(response, session.token) + + # Return user and session data + return AuthResponse( + user=UserResponse(**user.to_dict()), + session=SessionResponse(**session.to_dict()) + ) + + except ValueError as e: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=str(e) + ) + + +@router.post("/logout", response_model=LogoutResponse) +async def logout( + request: Request, + response: Response, + db: Session = Depends(get_db) +): + """ + End current session (logout). + + Invalidates the session and clears the session cookie. + """ + # Get session token from cookie + token = request.cookies.get("better-auth.session_token") + + if token: + # Delete session from database + AuthService.logout(db, token) + + # Clear session cookie + response.delete_cookie( + key="better-auth.session_token", + path="/", + samesite="lax" + ) + + return LogoutResponse(success=True) + + +@router.get("/session", response_model=AuthResponse) +async def get_session( + current_user: User = Depends(get_current_user), + request: Request = None, + db: Session = Depends(get_db) +): + """ + Get current authenticated user and session. + + Requires valid session cookie. + """ + # Get session token from cookie + token = request.cookies.get("better-auth.session_token") + + if not token: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="No session found" + ) + + # Get session from database + from src.auth.better_auth import BetterAuthVerifier + session = BetterAuthVerifier.get_session(db, token) + + if not session: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid or expired session" + ) + + return AuthResponse( + user=UserResponse(**current_user.to_dict()), + session=SessionResponse(**session.to_dict()) + ) + + +@router.get("/me", response_model=UserResponse) +async def get_current_user_info( + current_user: User = Depends(get_current_user) +): + """ + Get current authenticated user information. + + Requires valid session cookie. + """ + return UserResponse(**current_user.to_dict()) diff --git a/phase-1-core-infra/backend/src/api/v1/better_auth_oauth.py b/phase-1-core-infra/backend/src/api/v1/better_auth_oauth.py new file mode 100644 index 0000000000000000000000000000000000000000..65065370dcc046e119633de58dc41de16857822c --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/better_auth_oauth.py @@ -0,0 +1,212 @@ +""" +Better Auth OAuth endpoints for Google and GitHub authentication. +""" +from fastapi import APIRouter, Depends, HTTPException, status, Request, Response, Query +from sqlalchemy.orm import Session + +from src.database import get_db +from src.services.better_auth_oauth_service import BetterAuthOAuthService +from src.auth.middleware import get_current_user +from src.models.user import User +from src.api.v1.auth import get_client_info, set_session_cookie + +router = APIRouter(prefix="/auth/oauth", tags=["oauth-auth"]) + + +@router.get("/{provider}/authorize") +async def oauth_authorize( + provider: str, + request: Request, + redirect_uri: str = Query(..., description="Callback URL after OAuth") +): + """ + Get OAuth authorization URL for provider. + + Supports: google, github + + Args: + provider: OAuth provider (google, github) + redirect_uri: Callback URL + + Returns: + Authorization URL and state + """ + if provider not in ["google", "github"]: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Unsupported OAuth provider" + ) + + # Generate state for CSRF protection + state = BetterAuthOAuthService.generate_oauth_state() + + # Store state in session (in production, use Redis or database) + # For now, we'll return it and expect frontend to pass it back + + if provider == "google": + auth_url = BetterAuthOAuthService.get_google_auth_url(state, redirect_uri) + else: # github + auth_url = BetterAuthOAuthService.get_github_auth_url(state, redirect_uri) + + return { + "authUrl": auth_url, + "state": state, + "provider": provider + } + + +@router.get("/{provider}/callback") +async def oauth_callback( + provider: str, + code: str = Query(..., description="Authorization code"), + state: str = Query(..., description="CSRF state"), + request: Request = None, + response: Response = None, + db: Session = Depends(get_db) +): + """ + Handle OAuth callback from provider. + + Exchanges code for tokens and creates/logs in user. + + Args: + provider: OAuth provider (google, github) + code: Authorization code + state: CSRF state + request: FastAPI request + response: FastAPI response + db: Database session + + Returns: + User and session data + """ + if provider not in ["google", "github"]: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Unsupported OAuth provider" + ) + + # TODO: Verify state matches stored state (CSRF protection) + # In production, retrieve stored state from Redis/database and compare + + # Build redirect URI + redirect_uri = f"{request.base_url}api/v1/auth/oauth/{provider}/callback" + + try: + # Exchange code for tokens + if provider == "google": + token_data = await BetterAuthOAuthService.exchange_google_code(code, redirect_uri) + access_token = token_data.get("access_token") + refresh_token = token_data.get("refresh_token") + expires_in = token_data.get("expires_in") + + # Get user info + user_info = await BetterAuthOAuthService.get_google_user_info(access_token) + provider_account_id = user_info.get("id") + email = user_info.get("email") + name = user_info.get("name") + image = user_info.get("picture") + + else: # github + token_data = await BetterAuthOAuthService.exchange_github_code(code, redirect_uri) + access_token = token_data.get("access_token") + refresh_token = None + expires_in = None + + # Get user info + user_info = await BetterAuthOAuthService.get_github_user_info(access_token) + provider_account_id = str(user_info.get("id")) + email = user_info.get("email") + name = user_info.get("name") or user_info.get("login") + image = user_info.get("avatar_url") + + if not email: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Email not provided by OAuth provider" + ) + + # Get client info + ip_address, user_agent = get_client_info(request) + + # Login or signup user + user, session, is_new_user = BetterAuthOAuthService.oauth_login_or_signup( + db=db, + provider=provider, + provider_account_id=provider_account_id, + email=email, + name=name, + image=image, + access_token=access_token, + refresh_token=refresh_token, + expires_in=expires_in, + ip_address=ip_address, + user_agent=user_agent + ) + + # Set session cookie + set_session_cookie(response, session.token) + + return { + "user": user.to_dict(), + "session": session.to_dict(), + "isNewUser": is_new_user + } + + except HTTPException: + raise + except Exception as e: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=f"OAuth authentication failed: {str(e)}" + ) + + +@router.get("/accounts") +async def get_oauth_accounts( + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db) +): + """ + Get all OAuth accounts linked to current user. + + Returns: + List of linked OAuth providers + """ + accounts = BetterAuthOAuthService.get_user_oauth_accounts(db, current_user.id) + + return { + "accounts": [account.to_dict() for account in accounts] + } + + +@router.delete("/accounts/{provider}") +async def unlink_oauth_account( + provider: str, + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db) +): + """ + Unlink an OAuth account from current user. + + Args: + provider: OAuth provider to unlink (google, github) + + Returns: + Success message + """ + if provider not in ["google", "github"]: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Unsupported OAuth provider" + ) + + success = BetterAuthOAuthService.unlink_oauth_account(db, current_user.id, provider) + + if not success: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"{provider} account not linked" + ) + + return {"success": True, "message": f"{provider} account unlinked"} diff --git a/phase-1-core-infra/backend/src/api/v1/oauth.py b/phase-1-core-infra/backend/src/api/v1/oauth.py new file mode 100644 index 0000000000000000000000000000000000000000..b0dba3bcfaaf800b740b8cc6e04a5cea31724ab0 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/oauth.py @@ -0,0 +1,196 @@ +""" +OAuth API endpoints for social media account connections. +""" +import secrets +import urllib.parse +from typing import List, Optional +from uuid import UUID +from datetime import datetime, timedelta +from fastapi import APIRouter, Depends, HTTPException, status, Query +from sqlalchemy.ext.asyncio import AsyncSession +import httpx +from src.database import get_async_db +from src.auth.middleware import get_current_user +from src.models.user import User +from src.models.social_account import Platform +from src.schemas.social_account import ConnectAccountRequest, SocialAccountResponse +from src.services.oauth_service import OAuthService +from src.config import get_settings + +router = APIRouter(prefix="/oauth", tags=["oauth"]) + + +def _generate_state() -> str: + return secrets.token_urlsafe(16) + + +@router.get("/authorize/{platform}") +async def authorize_platform( + platform: Platform, + redirect_uri: Optional[str] = Query(None, description="Redirect URI — defaults to configured value") +): + """ + Generate OAuth authorization URL for a social media platform. + + Returns authorization_url to redirect the user to, plus state and redirect_uri used. + """ + settings = get_settings() + state = _generate_state() + + if platform == Platform.LINKEDIN: + if not settings.linkedin_client_id: + raise HTTPException( + status_code=status.HTTP_503_SERVICE_UNAVAILABLE, + detail="LinkedIn OAuth is not configured. Add LINKEDIN_CLIENT_ID to environment." + ) + # Use configured redirect_uri if not provided — must match LinkedIn Developer Console + final_redirect_uri = redirect_uri or settings.linkedin_redirect_uri + params = { + "response_type": "code", + "client_id": settings.linkedin_client_id, + "redirect_uri": final_redirect_uri, + "scope": "openid profile w_member_social", + "state": state, + } + auth_url = "https://www.linkedin.com/oauth/v2/authorization?" + urllib.parse.urlencode(params) + return { + "platform": platform.value, + "authorization_url": auth_url, + "state": state, + "redirect_uri": final_redirect_uri, + } + + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=f"Unsupported platform: {platform.value}" + ) + + +@router.get("/callback/{platform}") +async def oauth_callback( + platform: Platform, + code: str = Query(..., description="Authorization code from OAuth provider"), + state: str = Query(None, description="State parameter for CSRF protection") +): + """ + OAuth callback stub — code exchange is handled by the frontend callback page + which calls /oauth/connect with the obtained tokens. + """ + return { + "platform": platform.value, + "code": code, + "state": state, + "message": "Pass code to /api/v1/oauth/exchange to get tokens" + } + + +@router.get("/exchange/{platform}", response_model=SocialAccountResponse, status_code=status.HTTP_201_CREATED) +async def exchange_oauth_code( + platform: Platform, + code: str = Query(...), + state: str = Query(None), + redirect_uri: str = Query(...), + code_verifier: Optional[str] = Query(None), + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_async_db), +): + """ + Exchange an OAuth authorization code for tokens and connect the social account. + Supports LinkedIn only. + """ + settings = get_settings() + + async with httpx.AsyncClient(timeout=15.0) as client: + + if platform == Platform.LINKEDIN: + if not settings.linkedin_client_id or not settings.linkedin_client_secret: + raise HTTPException(status_code=503, detail="LinkedIn OAuth not configured") + + # Exchange code for token + token_resp = await client.post( + "https://www.linkedin.com/oauth/v2/accessToken", + data={ + "grant_type": "authorization_code", + "code": code, + "redirect_uri": redirect_uri, + "client_id": settings.linkedin_client_id, + "client_secret": settings.linkedin_client_secret, + }, + headers={"Content-Type": "application/x-www-form-urlencoded"}, + ) + if token_resp.status_code != 200: + raise HTTPException(status_code=400, detail=f"LinkedIn token exchange failed: {token_resp.text}") + token_data = token_resp.json() + access_token = token_data["access_token"] + expires_in = token_data.get("expires_in", 5183944) + + # Get user info — try OpenID Connect /userinfo first, + # fall back to /v2/me (works with basic profile access) + platform_user_id = None + try: + user_resp = await client.get( + "https://api.linkedin.com/v2/userinfo", + headers={"Authorization": f"Bearer {access_token}"}, + ) + if user_resp.status_code == 200: + user_data = user_resp.json() + platform_user_id = user_data.get("sub") or user_data.get("id") or "" + except Exception: + pass + + if not platform_user_id: + try: + me_resp = await client.get( + "https://api.linkedin.com/v2/me?projection=(id)", + headers={"Authorization": f"Bearer {access_token}"}, + ) + if me_resp.status_code == 200: + platform_user_id = me_resp.json().get("id", "") + except Exception: + pass + + if not platform_user_id: + # Last resort: derive a stable ID from the token + import hashlib + platform_user_id = "li_" + hashlib.sha256(access_token.encode()).hexdigest()[:20] + + return await OAuthService.connect_account(db, current_user.id, ConnectAccountRequest( + platform=platform, + platform_user_id=platform_user_id, + access_token=access_token, + token_expires_at=datetime.utcnow() + timedelta(seconds=expires_in), + )) + + raise HTTPException(status_code=400, detail=f"Unsupported platform: {platform.value}") + + +@router.post("/connect", response_model=SocialAccountResponse, status_code=status.HTTP_201_CREATED) +async def connect_account( + request: ConnectAccountRequest, + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_async_db) +): + """Connect a social media account (store OAuth tokens) for the current user.""" + social_account = await OAuthService.connect_account(db, current_user.id, request) + return social_account + + +@router.delete("/disconnect/{account_id}", status_code=status.HTTP_204_NO_CONTENT) +async def disconnect_account( + account_id: UUID, + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_async_db) +): + """Disconnect (remove) a connected social media account.""" + await OAuthService.disconnect_account(db, current_user.id, account_id) + return None + + +@router.get("/accounts", response_model=List[SocialAccountResponse]) +async def get_connected_accounts( + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_async_db) +): + """Get all connected social media accounts for the current user.""" + accounts = await OAuthService.get_user_accounts(db, current_user.id) + return accounts diff --git a/phase-1-core-infra/backend/src/api/v1/posts.py b/phase-1-core-infra/backend/src/api/v1/posts.py new file mode 100644 index 0000000000000000000000000000000000000000..1250d2ce4500e86018886afac4aeae1211bad63a --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/posts.py @@ -0,0 +1,254 @@ +""" +Posts API endpoints: + POST /api/v1/posts/generate - AI caption + hashtag generation + POST /api/v1/posts/publish - Publish post to social platforms + POST /api/v1/posts/schedule - Schedule post for future publishing + GET /api/v1/posts/history - Post history and logs +""" +from fastapi import APIRouter, Depends, HTTPException, status, Query +from fastapi.responses import StreamingResponse +from sqlalchemy.orm import Session +from pydantic import BaseModel +import httpx +import uuid +import os +from pathlib import Path +from urllib.parse import quote + +from src.database import get_db +from src.auth.middleware import get_current_user +from src.models.user import User +from src.schemas.posts import ( + GeneratePostRequest, + GeneratePostResponse, + PublishPostRequest, + PublishPostResponse, + SchedulePostRequest, + SchedulePostResponse, + HistoryResponse, +) +from src.services.posts_service import posts_service +import logging + +logger = logging.getLogger(__name__) + +router = APIRouter(prefix="/posts", tags=["posts"]) + + +@router.post("/generate", response_model=GeneratePostResponse, status_code=status.HTTP_201_CREATED) +async def generate_post( + request: GeneratePostRequest, + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """ + Generate AI caption and hashtags for the given topic. + Saves the result as a draft post ready for publishing or scheduling. + """ + try: + post = posts_service.create_post( + db=db, + user_id=str(current_user.id), + topic=request.topic, + platforms=request.platforms, + tone=request.tone, + media_urls=request.media_urls, + ) + content = post.content + hashtags = [w for w in content.split() if w.startswith("#")] + return GeneratePostResponse( + post_id=str(post.id), + topic=request.topic, + content=content, + hashtags=hashtags, + platforms=request.platforms, + status=post.status.value, + created_at=post.created_at.isoformat(), + ) + except Exception as e: + logger.error(f"Generate post failed: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +@router.post("/publish", response_model=PublishPostResponse) +async def publish_post( + request: PublishPostRequest, + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """ + Publish a draft post to the selected social media platforms. + Requires connected social accounts for each platform. + """ + try: + results = posts_service.publish_post( + db=db, + user_id=str(current_user.id), + post_id=request.post_id, + platforms=request.platforms, + media_urls=request.media_urls or [], + ) + return PublishPostResponse( + post_id=request.post_id, + results=results, + published_count=sum(1 for r in results if r.success), + failed_count=sum(1 for r in results if not r.success), + ) + except ValueError as e: + raise HTTPException(status_code=404, detail=str(e)) + except Exception as e: + logger.error(f"Publish post failed: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +@router.post("/schedule", response_model=SchedulePostResponse) +async def schedule_post( + request: SchedulePostRequest, + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """ + Schedule a draft post for automatic publishing at a future time (UTC). + """ + try: + post = posts_service.schedule_post( + db=db, + user_id=str(current_user.id), + post_id=request.post_id, + scheduled_at=request.scheduled_at, + platforms=request.platforms, + ) + return SchedulePostResponse( + post_id=str(post.id), + scheduled_at=post.scheduled_at.isoformat(), + platforms=request.platforms, + status=post.status.value, + ) + except ValueError as e: + raise HTTPException(status_code=404, detail=str(e)) + except Exception as e: + logger.error(f"Schedule post failed: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/history", response_model=HistoryResponse) +async def get_history( + page: int = Query(1, ge=1, description="Page number"), + per_page: int = Query(20, ge=1, le=100, description="Items per page"), + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """ + Get paginated post history and publishing logs for the current user. + """ + try: + result = posts_service.get_history( + db=db, + user_id=str(current_user.id), + page=page, + per_page=per_page, + ) + return HistoryResponse(**result) + except Exception as e: + logger.error(f"Get history failed: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +class SaveDraftRequest(BaseModel): + content: str + platforms: list[str] = ["linkedin"] + + +@router.post("/save-draft", response_model=GeneratePostResponse, status_code=status.HTTP_201_CREATED) +async def save_draft( + request: SaveDraftRequest, + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """Save manually written post content as a draft (no AI generation).""" + try: + post = posts_service.save_draft( + db=db, + user_id=str(current_user.id), + content=request.content, + platforms=request.platforms, + ) + hashtags = [w for w in post.content.split() if w.startswith("#")] + return GeneratePostResponse( + post_id=str(post.id), + topic=request.content[:80], + content=post.content, + hashtags=hashtags, + platforms=request.platforms, + status=post.status.value, + created_at=post.created_at.isoformat(), + ) + except Exception as e: + logger.error(f"Save draft failed: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +class GenerateImageRequest(BaseModel): + content: str # post content — used as image prompt + + +@router.post("/generate-image") +async def generate_image_from_post( + request: GenerateImageRequest, + current_user: User = Depends(get_current_user), +): + """ + Generate an AI image from post content using Pollinations.ai (free, no API key). + Downloads the image, saves it locally, returns a hosted URL. + """ + if not request.content or len(request.content.strip()) < 5: + raise HTTPException(status_code=400, detail="Post content too short to generate image") + + from src.config import settings as app_settings + + if not app_settings.huggingface_api_key or app_settings.huggingface_api_key == "your_hf_token_here": + raise HTTPException(status_code=500, detail="HuggingFace API key not configured. .env mein HUGGINGFACE_API_KEY set karo.") + + raw_prompt = request.content.strip()[:200] + prompt = f"professional business linkedin post image, {raw_prompt}, clean modern design, high quality" + + logger.info(f"Generating image via HuggingFace FLUX for user {current_user.id}") + + try: + async with httpx.AsyncClient(timeout=120) as client: + resp = await client.post( + "https://router.huggingface.co/hf-inference/models/black-forest-labs/FLUX.1-schnell", + headers={ + "Authorization": f"Bearer {app_settings.huggingface_api_key}", + "Content-Type": "application/json", + }, + json={"inputs": prompt}, + ) + logger.info(f"HF image response: {resp.status_code}, size: {len(resp.content)} bytes") + + if resp.status_code == 503: + raise HTTPException(status_code=503, detail="Model loading hai, 20 seconds baad dobara try karo.") + if resp.status_code == 401: + raise HTTPException(status_code=401, detail="HuggingFace API key invalid hai. .env check karo.") + if resp.status_code != 200: + logger.error(f"HF error: {resp.status_code} — {resp.text[:300]}") + raise HTTPException(status_code=502, detail=f"Image generation failed ({resp.status_code})") + + image_bytes = resp.content + + uploads_dir = Path("uploads") + uploads_dir.mkdir(exist_ok=True) + filename = f"ai-{uuid.uuid4()}.png" + with open(uploads_dir / filename, "wb") as f: + f.write(image_bytes) + + hosted_url = f"http://localhost:{app_settings.backend_port}/uploads/{filename}" + return {"url": hosted_url, "filename": filename} + + except HTTPException: + raise + except httpx.TimeoutException: + raise HTTPException(status_code=504, detail="Image generation timed out. Dobara try karo.") + except Exception as e: + logger.error(f"Image generation failed: {e}") + raise HTTPException(status_code=500, detail=f"Image generation failed: {str(e)}") diff --git a/phase-1-core-infra/backend/src/api/v1/profile.py b/phase-1-core-infra/backend/src/api/v1/profile.py new file mode 100644 index 0000000000000000000000000000000000000000..14070bc6f3c5f4c9642dbd896c32d165790ca450 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/profile.py @@ -0,0 +1,111 @@ +""" +User profile API endpoints. +""" +from fastapi import APIRouter, Depends, HTTPException, status, Request, Response +from sqlalchemy.ext.asyncio import AsyncSession +from pydantic import BaseModel, Field +from typing import List, Optional +from src.database import get_async_db +from src.auth.middleware import get_current_user +from src.models.user import User +from src.schemas.user import UserResponse +from src.schemas.social_account import SocialAccountResponse +from src.services.oauth_service import OAuthService +from src.security.rate_limiter import limiter + +router = APIRouter(prefix="/profile", tags=["profile"]) + + +class UpdateProfileRequest(BaseModel): + """Schema for updating user profile.""" + name: Optional[str] = Field(None, min_length=1, max_length=255) + + +class ProfileResponse(BaseModel): + """Schema for complete profile response.""" + user: UserResponse + connected_accounts: List[SocialAccountResponse] + + class Config: + from_attributes = True + + +@router.get("", response_model=ProfileResponse) +@limiter.limit("30/minute") +async def get_profile( + request: Request, + response: Response, + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_async_db) +): + """ + Get current user's complete profile including connected accounts. + + Rate limit: 30 requests per minute + + Args: + request: FastAPI request object + current_user: Current authenticated user + db: Database session + + Returns: + User profile with connected social accounts + """ + accounts = await OAuthService.get_user_accounts(db, current_user.id) + + return ProfileResponse( + user=UserResponse.model_validate(current_user), + connected_accounts=[ + SocialAccountResponse.model_validate(account) + for account in accounts + ] + ) + + +@router.patch("", response_model=UserResponse) +async def update_profile( + request: UpdateProfileRequest, + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_async_db) +): + """ + Update current user's profile. + + Args: + request: Profile update request + current_user: Current authenticated user + db: Database session + + Returns: + Updated user information + """ + # Update name if provided + if request.name is not None: + current_user.name = request.name + + await db.commit() + await db.refresh(current_user) + + return current_user + + +@router.get("/accounts", response_model=List[SocialAccountResponse]) +async def get_profile_accounts( + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_async_db) +): + """ + Get all connected social accounts for current user. + + This is a convenience endpoint that duplicates /oauth/accounts + but is namespaced under /profile for frontend convenience. + + Args: + current_user: Current authenticated user + db: Database session + + Returns: + List of connected social accounts + """ + accounts = await OAuthService.get_user_accounts(db, current_user.id) + return accounts diff --git a/phase-1-core-infra/backend/src/api/v1/session.py b/phase-1-core-infra/backend/src/api/v1/session.py new file mode 100644 index 0000000000000000000000000000000000000000..57ffa237d0d93a8445c1307deadde22f73fff570 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/session.py @@ -0,0 +1,184 @@ +""" +Session management API endpoints. + +Provides endpoints for session verification, refresh, listing, and revocation. +""" +from fastapi import APIRouter, Depends, HTTPException, status, Request +from sqlalchemy.orm import Session +from typing import List +import uuid + +from src.database import get_db +from src.auth.middleware import get_current_user +from src.models.user import User +from src.models.session import Session as SessionModel +from src.services.session_service import SessionService +from src.services.auth_service import AuthService +from pydantic import BaseModel + + +router = APIRouter(prefix="/session", tags=["Session Management"]) + + +class SessionListResponse(BaseModel): + """Response model for session list.""" + sessions: List[dict] + + +class RevokeSessionRequest(BaseModel): + """Request model for revoking a session.""" + session_id: str + + +class RevokeAllResponse(BaseModel): + """Response model for revoke all sessions.""" + revoked_count: int + message: str + + +@router.get("/verify") +async def verify_session( + current_user: User = Depends(get_current_user), + request: Request = None, + db: Session = Depends(get_db) +): + """ + Verify current session is valid. + + Returns current user and session information. + """ + # Get session token from cookie + token = request.cookies.get("better-auth.session_token") + + if not token: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="No session found" + ) + + # Get session from database + from src.auth.better_auth import BetterAuthVerifier + session = BetterAuthVerifier.get_session(db, token) + + if not session: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid or expired session" + ) + + return { + "valid": True, + "user": current_user.to_dict(), + "session": session.to_dict() + } + + +@router.post("/refresh") +async def refresh_session( + request: Request, + db: Session = Depends(get_db) +): + """ + Refresh current session expiration time. + + Extends the session by 30 days from now. + """ + # Get session token from cookie + token = request.cookies.get("better-auth.session_token") + + if not token: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="No session found" + ) + + # Refresh session + session = AuthService.refresh_session(db, token) + + if not session: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid or expired session" + ) + + return { + "success": True, + "session": session.to_dict() + } + + +@router.get("/list", response_model=SessionListResponse) +async def list_sessions( + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db) +): + """ + List all active sessions for current user. + + Returns list of sessions with metadata (IP, user agent, created date). + """ + sessions = SessionService.get_user_sessions(db, current_user.id) + + return SessionListResponse( + sessions=[session.to_detail_dict() for session in sessions] + ) + + +@router.delete("/revoke/{session_id}") +async def revoke_session( + session_id: str, + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db) +): + """ + Revoke a specific session by ID. + + User can only revoke their own sessions. + """ + try: + session_uuid = uuid.UUID(session_id) + except ValueError: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Invalid session ID format" + ) + + success = SessionService.revoke_session(db, session_uuid, current_user.id) + + if not success: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="Session not found or already revoked" + ) + + return { + "success": True, + "message": "Session revoked successfully" + } + + +@router.post("/revoke-all", response_model=RevokeAllResponse) +async def revoke_all_sessions( + request: Request, + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db) +): + """ + Revoke all sessions for current user except the current one. + + Useful for "log out from all devices" functionality. + """ + # Get current session token to keep it active + current_token = request.cookies.get("better-auth.session_token") + + # Revoke all sessions except current + count = SessionService.revoke_all_sessions( + db, + current_user.id, + except_token=current_token + ) + + return RevokeAllResponse( + revoked_count=count, + message=f"Revoked {count} session(s) successfully" + ) diff --git a/phase-1-core-infra/backend/src/api/v1/upload.py b/phase-1-core-infra/backend/src/api/v1/upload.py new file mode 100644 index 0000000000000000000000000000000000000000..8e16bdbc969f8c3a6a71b1a591827d00e429d7c7 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/upload.py @@ -0,0 +1,197 @@ +""" +File upload endpoint for images and videos. +POST /api/v1/upload/media +""" +import os +import uuid +import shutil +from pathlib import Path +from typing import List +from datetime import datetime, timezone + +from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, status +from sqlalchemy.orm import Session +from sqlalchemy import func + +from src.database import get_db +from src.auth.middleware import get_current_user +from src.models.user import User +from src.models.media_upload import MediaUpload +from src.schemas.posts import UploadResponse +from src.config import settings +import logging + +logger = logging.getLogger(__name__) + +router = APIRouter(prefix="/upload", tags=["upload"]) + +ALLOWED_IMAGE_TYPES = {"image/jpeg", "image/png", "image/gif", "image/webp"} +ALLOWED_VIDEO_TYPES = {"video/mp4", "video/quicktime", "video/x-msvideo", "video/webm"} +ALLOWED_TYPES = ALLOWED_IMAGE_TYPES | ALLOWED_VIDEO_TYPES +MAX_SIZE_BYTES = settings.max_upload_size_mb * 1024 * 1024 + +# Free plan limits (per month) +FREE_IMAGE_LIMIT = 3 +FREE_VIDEO_LIMIT = 1 + + +def check_upload_quota(db: Session, user: User, media_type: str) -> None: + """Raise 429 if free-plan user has exceeded their monthly upload quota.""" + if user.plan != "free": + return + + now = datetime.now(timezone.utc) + month_start = now.replace(day=1, hour=0, minute=0, second=0, microsecond=0) + + count = ( + db.query(func.count(MediaUpload.id)) + .filter( + MediaUpload.user_id == user.id, + MediaUpload.media_type == media_type, + MediaUpload.created_at >= month_start, + ) + .scalar() + ) + + if media_type == "image" and count >= FREE_IMAGE_LIMIT: + raise HTTPException( + status_code=429, + detail=f"Free plan limit reached: {FREE_IMAGE_LIMIT} images per month. Upgrade to Pro for unlimited uploads.", + ) + if media_type == "video" and count >= FREE_VIDEO_LIMIT: + raise HTTPException( + status_code=429, + detail=f"Free plan limit reached: {FREE_VIDEO_LIMIT} video per month. Upgrade to Pro for unlimited uploads.", + ) + + +def get_upload_dir() -> Path: + """Return and ensure upload directory exists.""" + upload_path = Path(settings.upload_dir) + upload_path.mkdir(parents=True, exist_ok=True) + return upload_path + + +@router.post("/media", response_model=UploadResponse, status_code=status.HTTP_201_CREATED) +async def upload_media( + file: UploadFile = File(..., description="Image or video file"), + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """ + Upload an image or video for use in social media posts. + + Supported formats: + - Images: JPEG, PNG, GIF, WebP + - Videos: MP4, MOV, AVI, WebM + + Max file size: configured by MAX_UPLOAD_SIZE_MB (default 50MB) + """ + # Validate content type + if file.content_type not in ALLOWED_TYPES: + raise HTTPException( + status_code=400, + detail=f"Unsupported file type: {file.content_type}. Allowed: images and videos." + ) + + # Determine media type early (needed for quota check) + media_type = "image" if file.content_type in ALLOWED_IMAGE_TYPES else "video" + + # Enforce free-plan quota before reading file + check_upload_quota(db, current_user, media_type) + + # Read file content with size check + content = await file.read() + size = len(content) + + if size > MAX_SIZE_BYTES: + raise HTTPException( + status_code=413, + detail=f"File too large: {size / 1024 / 1024:.1f}MB. Max allowed: {settings.max_upload_size_mb}MB" + ) + + # Generate unique filename preserving extension + ext = Path(file.filename).suffix.lower() if file.filename else ".bin" + unique_name = f"{uuid.uuid4()}{ext}" + + # Save to upload directory + upload_dir = get_upload_dir() + file_path = upload_dir / unique_name + + try: + with open(file_path, "wb") as f: + f.write(content) + except Exception as e: + logger.error(f"File save error: {e}") + raise HTTPException(status_code=500, detail="Failed to save file") + + # Track upload for quota enforcement + db.add(MediaUpload( + user_id=current_user.id, + media_type=media_type, + filename=unique_name, + size_bytes=size, + )) + db.commit() + + # Build URL (adjust base URL for production) + base_url = f"http://localhost:{settings.backend_port}" + file_url = f"{base_url}/uploads/{unique_name}" + + logger.info(f"File uploaded by user {current_user.id}: {unique_name} ({size} bytes)") + + return UploadResponse( + filename=unique_name, + url=file_url, + media_type=media_type, + size_bytes=size, + ) + + +@router.post("/media/multiple", response_model=List[UploadResponse], status_code=status.HTTP_201_CREATED) +async def upload_multiple_media( + files: List[UploadFile] = File(..., description="Multiple image or video files (max 10)"), + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + """Upload multiple media files at once (max 10 files).""" + if len(files) > 10: + raise HTTPException(status_code=400, detail="Max 10 files allowed per upload") + + results = [] + upload_dir = get_upload_dir() + + for file in files: + if file.content_type not in ALLOWED_TYPES: + raise HTTPException( + status_code=400, + detail=f"Unsupported file type: {file.content_type} for file {file.filename}" + ) + + content = await file.read() + size = len(content) + + if size > MAX_SIZE_BYTES: + raise HTTPException( + status_code=413, + detail=f"File {file.filename} too large: {size / 1024 / 1024:.1f}MB" + ) + + ext = Path(file.filename).suffix.lower() if file.filename else ".bin" + unique_name = f"{uuid.uuid4()}{ext}" + file_path = upload_dir / unique_name + + with open(file_path, "wb") as f: + f.write(content) + + media_type = "image" if file.content_type in ALLOWED_IMAGE_TYPES else "video" + base_url = f"http://localhost:{settings.backend_port}" + + results.append(UploadResponse( + filename=unique_name, + url=f"{base_url}/uploads/{unique_name}", + media_type=media_type, + size_bytes=size, + )) + + return results diff --git a/phase-1-core-infra/backend/src/api/v1/verification.py b/phase-1-core-infra/backend/src/api/v1/verification.py new file mode 100644 index 0000000000000000000000000000000000000000..b2576307746e2f17b2a487757412f0c69ea3f592 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/verification.py @@ -0,0 +1,150 @@ +""" +Password reset and email verification endpoints. +""" +from fastapi import APIRouter, Depends, HTTPException, status, Request +from sqlalchemy.orm import Session +from pydantic import BaseModel, EmailStr +from slowapi import Limiter +from slowapi.util import get_remote_address + +from src.database import get_db +from src.services.verification_service import VerificationService +from src.auth.middleware import get_current_user +from src.models.user import User + +router = APIRouter(prefix="/auth", tags=["verification"]) +limiter = Limiter(key_func=get_remote_address) + + +# Request/Response schemas +class PasswordResetRequestSchema(BaseModel): + """Request schema for password reset.""" + email: EmailStr + + +class PasswordResetSchema(BaseModel): + """Request schema for password reset confirmation.""" + token: str + password: str + + +class EmailVerificationSchema(BaseModel): + """Request schema for email verification.""" + token: str + + +class SuccessResponse(BaseModel): + """Generic success response.""" + success: bool + message: str + + +@router.post("/password/reset-request", response_model=SuccessResponse) +@limiter.limit("3/hour") +async def request_password_reset( + request_data: PasswordResetRequestSchema, + request: Request, + db: Session = Depends(get_db) +): + """ + Request password reset email. + + Sends password reset email if account exists. + Always returns success to prevent email enumeration. + + Rate limited to 3 requests per hour per IP. + """ + try: + VerificationService.send_password_reset_email(db, request_data.email) + + return SuccessResponse( + success=True, + message="If an account exists with this email, a password reset link has been sent." + ) + + except HTTPException as e: + # Return generic message for OAuth-only accounts + if "OAuth" in str(e.detail): + return SuccessResponse( + success=True, + message="If an account exists with this email, a password reset link has been sent." + ) + raise + + +@router.post("/password/reset", response_model=SuccessResponse) +@limiter.limit("5/hour") +async def reset_password( + request_data: PasswordResetSchema, + request: Request, + db: Session = Depends(get_db) +): + """ + Reset password using token. + + Validates token and updates user password. + Invalidates all existing sessions. + + Rate limited to 5 attempts per hour per IP. + """ + VerificationService.reset_password( + db=db, + token=request_data.token, + new_password=request_data.password + ) + + return SuccessResponse( + success=True, + message="Password reset successfully. Please log in with your new password." + ) + + +@router.post("/email/verify", response_model=SuccessResponse) +async def verify_email( + request_data: EmailVerificationSchema, + db: Session = Depends(get_db) +): + """ + Verify email address using token. + + Marks user email as verified. + """ + VerificationService.verify_email(db, request_data.token) + + return SuccessResponse( + success=True, + message="Email verified successfully!" + ) + + +@router.post("/email/resend-verification", response_model=SuccessResponse) +@limiter.limit("3/hour") +async def resend_verification_email( + request: Request, + current_user: User = Depends(get_current_user), + db: Session = Depends(get_db) +): + """ + Resend email verification email. + + Requires authentication. + Rate limited to 3 requests per hour per user. + """ + # Check if already verified + if current_user.email_verified: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Email already verified" + ) + + # Send verification email + VerificationService.send_verification_email( + db=db, + user_id=current_user.id, + email=current_user.email + ) + + return SuccessResponse( + success=True, + message="Verification email sent. Please check your inbox." + ) diff --git a/phase-1-core-infra/backend/src/api/v1/video.py b/phase-1-core-infra/backend/src/api/v1/video.py new file mode 100644 index 0000000000000000000000000000000000000000..69a7621c4369131c5506a9b371117b0244db36e3 --- /dev/null +++ b/phase-1-core-infra/backend/src/api/v1/video.py @@ -0,0 +1,189 @@ +""" +Video generation endpoints using HuggingFace Inference API. +""" +from fastapi import APIRouter, Depends, HTTPException +from typing import Optional +from pydantic import BaseModel +from pathlib import Path +import httpx +import uuid +import logging +import asyncio + +from src.auth.middleware import get_current_user +from src.models.user import User + +router = APIRouter(prefix="/video", tags=["video"]) +logger = logging.getLogger(__name__) + + +class VideoGenerateRequest(BaseModel): + content: str # post content — used as video prompt + + +@router.post("/generate") +async def generate_video( + request: VideoGenerateRequest, + current_user: User = Depends(get_current_user), +): + """Generate a short video from post content using HuggingFace.""" + from src.config import get_settings + settings = get_settings() + + if not settings.veo_api_key: + raise HTTPException(status_code=500, detail="VEO_API_KEY not configured in .env") + + if not request.content or len(request.content.strip()) < 5: + raise HTTPException(status_code=400, detail="Post content too short") + + prompt = request.content.strip()[:300] + logger.info(f"Generating video via Google Veo for user {current_user.id}") + + api_key = settings.veo_api_key + base_url = "https://generativelanguage.googleapis.com/v1beta" + + try: + async with httpx.AsyncClient(timeout=60) as client: + # Submit Veo video generation job + submit = await client.post( + f"{base_url}/models/veo-2.0-generate-001:predictLongRunning", + params={"key": api_key}, + headers={"Content-Type": "application/json"}, + json={ + "instances": [{"prompt": prompt}], + "parameters": { + "aspectRatio": "16:9", + "sampleCount": 1, + "durationSeconds": 5, + }, + }, + ) + logger.info(f"Veo submit response: {submit.status_code}") + + if submit.status_code not in (200, 201): + logger.error(f"Veo submit error: {submit.status_code} — {submit.text[:400]}") + raise HTTPException(status_code=502, detail=f"Video generation failed: {submit.text[:200]}") + + operation = submit.json() + operation_name = operation.get("name") + if not operation_name: + raise HTTPException(status_code=502, detail="No operation name returned from Veo") + logger.info(f"Veo operation: {operation_name}") + + # Poll operation until done (max 3 minutes) + for attempt in range(36): + await asyncio.sleep(5) + async with httpx.AsyncClient(timeout=15) as client: + poll = await client.get( + f"{base_url}/{operation_name}", + params={"key": api_key}, + ) + data = poll.json() + done = data.get("done", False) + logger.info(f"Veo poll {attempt+1}: done={done}") + + if done: + response = data.get("response", {}) + predictions = response.get("predictions", []) + if not predictions: + raise HTTPException(status_code=502, detail="Veo returned no video output") + video_b64 = predictions[0].get("bytesBase64Encoded") + mime_type = predictions[0].get("mimeType", "video/mp4") + if not video_b64: + raise HTTPException(status_code=502, detail="No video data in Veo response") + break + if data.get("error"): + raise HTTPException(status_code=502, detail=f"Veo error: {data['error'].get('message', 'Unknown')}") + else: + raise HTTPException(status_code=504, detail="Video generation timed out. Dobara try karo.") + + import base64 + video_bytes = base64.b64decode(video_b64) + + uploads_dir = Path("uploads") + uploads_dir.mkdir(exist_ok=True) + ext = mime_type.split("/")[-1] if "/" in mime_type else "mp4" + filename = f"ai-video-{uuid.uuid4()}.{ext}" + with open(uploads_dir / filename, "wb") as f: + f.write(video_bytes) + + hosted_url = f"http://localhost:{settings.backend_port}/uploads/{filename}" + return {"url": hosted_url, "filename": filename, "status": "completed"} + + except HTTPException: + raise + except httpx.TimeoutException: + raise HTTPException(status_code=504, detail="Video generation timed out. Dobara try karo.") + except Exception as e: + logger.error(f"Video generation failed: {e}") + raise HTTPException(status_code=500, detail=f"Video generation failed: {str(e)}") + + +@router.get("/status/{job_id}") +async def get_video_status( + job_id: str, + current_user: User = Depends(get_current_user), +): + return { + "job_id": job_id, + "status": "failed", + "progress_percentage": 0, + "current_step": None, + "video_url": None, + "thumbnail_url": None, + "duration": None, + "error_message": "Video generation is a Phase 5 feature and is not yet active.", + } + + +@router.post("/regenerate/{generation_request_id}") +async def regenerate_video( + generation_request_id: str, + current_user: User = Depends(get_current_user), +): + return { + "generation_request_id": generation_request_id, + "job_id": "phase5-not-active", + "status": "unavailable", + "estimated_time": 0, + "message": "Video generation is a Phase 5 feature and is not yet active.", + } + + +@router.get("/preview/{video_asset_id}") +async def get_video_preview( + video_asset_id: str, + current_user: User = Depends(get_current_user), +): + return { + "video_asset_id": video_asset_id, + "signed_url": None, + "thumbnail_url": None, + "duration": 0, + "resolution": "N/A", + "file_size": 0, + "expires_at": None, + } + + +@router.delete("/{video_asset_id}") +async def delete_video( + video_asset_id: str, + current_user: User = Depends(get_current_user), +): + return {"deleted": True} + + +@router.get("/library") +async def get_video_library( + page: int = 1, + page_size: int = 20, + current_user: User = Depends(get_current_user), +): + return { + "videos": [], + "total": 0, + "page": page, + "page_size": page_size, + "has_next": False, + } diff --git a/phase-1-core-infra/backend/src/auth/__init__.py b/phase-1-core-infra/backend/src/auth/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..4a5deb69f4fc8b4e97947dceadacbcaa16b17b3b --- /dev/null +++ b/phase-1-core-infra/backend/src/auth/__init__.py @@ -0,0 +1,16 @@ +""" +Authentication module for Better Auth. + +Provides password hashing, session verification, and middleware. +""" +from src.auth.password import PasswordHasher +from src.auth.better_auth import BetterAuthVerifier +from src.auth.middleware import get_current_user, get_current_admin_user, get_optional_user + +__all__ = [ + "PasswordHasher", + "BetterAuthVerifier", + "get_current_user", + "get_current_admin_user", + "get_optional_user", +] diff --git a/phase-1-core-infra/backend/src/auth/better_auth.py b/phase-1-core-infra/backend/src/auth/better_auth.py new file mode 100644 index 0000000000000000000000000000000000000000..cabea6f1c281277c7804084f2ee6737538073b5a --- /dev/null +++ b/phase-1-core-infra/backend/src/auth/better_auth.py @@ -0,0 +1,97 @@ +""" +Better Auth session verification for FastAPI. + +Handles JWT token verification and session lookup. +""" +import jwt +from datetime import datetime, timezone +from typing import Optional +from sqlalchemy.orm import Session + +from src.models.user import User +from src.models.session import Session as SessionModel +from src.config import settings + + +class BetterAuthVerifier: + """ + Verify Better Auth JWT tokens and sessions. + """ + + @staticmethod + def verify_token(token: str) -> Optional[dict]: + """ + Verify and decode a Better Auth JWT token. + + Args: + token: JWT token string + + Returns: + Decoded token payload if valid, None otherwise + """ + try: + payload = jwt.decode( + token, + settings.BETTER_AUTH_SECRET, + algorithms=["HS256"] + ) + return payload + except jwt.ExpiredSignatureError: + return None + except jwt.InvalidTokenError: + return None + + @staticmethod + def get_session(db: Session, token: str) -> Optional[SessionModel]: + """ + Get session from database by token. + + Args: + db: Database session + token: Session token + + Returns: + Session model if found and valid, None otherwise + """ + session = db.query(SessionModel).filter( + SessionModel.token == token + ).first() + + if not session: + return None + + # Check if session is expired (handle both naive and aware datetimes) + now = datetime.now(timezone.utc) + expires_at = session.expires_at + if expires_at.tzinfo is None: + expires_at = expires_at.replace(tzinfo=timezone.utc) + if expires_at < now: + return None + + return session + + @staticmethod + def get_user_from_token(db: Session, token: str) -> Optional[User]: + """ + Get user from session token. + + Args: + db: Database session + token: Session token + + Returns: + User model if session is valid, None otherwise + """ + # Verify JWT token + payload = BetterAuthVerifier.verify_token(token) + if not payload: + return None + + # Get session from database + session = BetterAuthVerifier.get_session(db, token) + if not session: + return None + + # Get user + user = db.query(User).filter(User.id == session.user_id).first() + return user diff --git a/phase-1-core-infra/backend/src/auth/middleware.py b/phase-1-core-infra/backend/src/auth/middleware.py new file mode 100644 index 0000000000000000000000000000000000000000..50200906374f53fe7d679e6a3e3fceef3388ac7d --- /dev/null +++ b/phase-1-core-infra/backend/src/auth/middleware.py @@ -0,0 +1,100 @@ +""" +Authentication middleware for FastAPI. + +Provides dependency injection for protected routes. +""" +from fastapi import Depends, HTTPException, status, Request +from sqlalchemy.orm import Session + +from src.database import get_db +from src.models.user import User +from src.auth.better_auth import BetterAuthVerifier + + +async def get_current_user( + request: Request, + db: Session = Depends(get_db) +) -> User: + """ + Get current authenticated user from session token. + + Extracts session token from cookies and verifies it. + + Args: + request: FastAPI request object + db: Database session + + Returns: + User model if authenticated + + Raises: + HTTPException: 401 if not authenticated or session invalid + """ + # Extract session token from cookies + token = request.cookies.get("better-auth.session_token") + + if not token: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Not authenticated" + ) + + # Verify token and get user + user = BetterAuthVerifier.get_user_from_token(db, token) + + if not user: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid or expired session" + ) + + return user + + +async def get_current_admin_user( + current_user: User = Depends(get_current_user) +) -> User: + """ + Get current authenticated admin user. + + Args: + current_user: Current authenticated user + + Returns: + User model if user is admin + + Raises: + HTTPException: 403 if user is not admin + """ + if not current_user.is_admin: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail="Admin access required" + ) + + return current_user + + +async def get_optional_user( + request: Request, + db: Session = Depends(get_db) +) -> User | None: + """ + Get current user if authenticated, None otherwise. + + Useful for routes that work with or without authentication. + + Args: + request: FastAPI request object + db: Database session + + Returns: + User model if authenticated, None otherwise + """ + token = request.cookies.get("better-auth.session_token") + + if not token: + return None + + user = BetterAuthVerifier.get_user_from_token(db, token) + return user diff --git a/phase-1-core-infra/backend/src/auth/password.py b/phase-1-core-infra/backend/src/auth/password.py new file mode 100644 index 0000000000000000000000000000000000000000..c7370a9552273ce67d4c302d56b6ce7dc53a86cc --- /dev/null +++ b/phase-1-core-infra/backend/src/auth/password.py @@ -0,0 +1,46 @@ +""" +Password hashing utilities using bcrypt. +""" +import bcrypt + + +class PasswordHasher: + """ + Password hashing and verification using bcrypt. + + Uses cost factor 12 for security (2^12 iterations). + """ + + COST_FACTOR = 12 + + @staticmethod + def hash_password(password: str) -> str: + """ + Hash a password using bcrypt. + + Args: + password: Plain text password to hash + + Returns: + Hashed password as string + """ + password_bytes = password.encode('utf-8') + salt = bcrypt.gensalt(rounds=PasswordHasher.COST_FACTOR) + hashed = bcrypt.hashpw(password_bytes, salt) + return hashed.decode('utf-8') + + @staticmethod + def verify_password(password: str, hashed_password: str) -> bool: + """ + Verify a password against a hash. + + Args: + password: Plain text password to verify + hashed_password: Hashed password to check against + + Returns: + True if password matches, False otherwise + """ + password_bytes = password.encode('utf-8') + hashed_bytes = hashed_password.encode('utf-8') + return bcrypt.checkpw(password_bytes, hashed_bytes) diff --git a/phase-1-core-infra/backend/src/config.py b/phase-1-core-infra/backend/src/config.py new file mode 100644 index 0000000000000000000000000000000000000000..18fad144baaf04fa3ce1c3732a8b30f711252f2f --- /dev/null +++ b/phase-1-core-infra/backend/src/config.py @@ -0,0 +1,122 @@ +""" +Configuration management for Phase 1 Core Infrastructure. +Loads environment variables and provides application settings. +""" +import os +from pathlib import Path +from pydantic_settings import BaseSettings +from functools import lru_cache +from dotenv import load_dotenv + + +# Load environment variables from .env files only if DATABASE_URL is not already set +# This ensures Docker environment variables take precedence over .env files +if not os.getenv("DATABASE_URL"): + # Load environment variables from multiple possible locations + # First try to load from the backend directory, then from the project root + backend_dir = Path(__file__).parent.parent # src directory -> backend directory + root_dir = backend_dir.parent.parent # backend directory -> root directory + + # Try loading .env in order: backend dir → phase-1-core-infra dir → project root + backend_env = backend_dir / ".env" + phase_env = backend_dir.parent / ".env" # phase-1-core-infra/.env + root_env = root_dir / ".env" # project root .env + + if backend_env.exists(): + load_dotenv(backend_env) + elif phase_env.exists(): + load_dotenv(phase_env) + elif root_env.exists(): + load_dotenv(root_env) + else: + load_dotenv() + + +class Settings(BaseSettings): + """Application settings loaded from environment variables.""" + + # Database + database_url: str + + # Encryption + encryption_key: str + + # Backend + backend_host: str = "0.0.0.0" + backend_port: int = 8000 + backend_reload: bool = True + + # JWT (legacy - kept for backward compatibility) + jwt_secret: str + jwt_algorithm: str = "HS256" + jwt_expiration_days: int = 30 + + # Better Auth + better_auth_secret: str = "" # Defaults to jwt_secret if not set + better_auth_url: str = "http://localhost:3000" + + # OAuth - Google (Better Auth) + google_client_id: str = "" + google_client_secret: str = "" + + # OAuth - GitHub (Better Auth) + github_client_id: str = "" + github_client_secret: str = "" + + # CORS + cors_origins: str = "http://localhost:3000,http://localhost:3001,http://localhost:3002,http://localhost:3003,http://127.0.0.1:3000,http://127.0.0.1:3001,http://127.0.0.1:3002,http://127.0.0.1:3003" + + # Environment + environment: str = "development" + debug: bool = True + log_level: str = "INFO" + + # OAuth - LinkedIn + linkedin_client_id: str = "" + linkedin_client_secret: str = "" + linkedin_redirect_uri: str = "http://localhost:3000/api/auth/callback/linkedin" + + # AI - OpenAI / Gemini (for content generation) + openai_api_key: str = "" + gemini_api_key: str = "" + ai_model: str = "gpt-4o-mini" # or "gemini-1.5-flash" + + # HuggingFace (for image generation) + huggingface_api_key: str = "" + + # Replicate (for video generation) + replicate_api_key: str = "" + + # Google Veo (for video generation) + veo_api_key: str = "" + + # File Upload + upload_dir: str = "uploads" + max_upload_size_mb: int = 50 + + # Email (SMTP) + smtp_host: str = "smtp.gmail.com" + smtp_port: int = 587 + smtp_user: str = "" + smtp_password: str = "" + smtp_from_email: str = "noreply@yourapp.com" + smtp_from_name: str = "AI Marketing Agency" + + @property + def BETTER_AUTH_SECRET(self) -> str: + """Get Better Auth secret, fallback to JWT secret.""" + return self.better_auth_secret or self.jwt_secret + + class Config: + env_file = ".env" # This will use the already loaded env vars + case_sensitive = False + + +@lru_cache() +def get_settings() -> Settings: + """Get cached settings instance.""" + return Settings() + + +# Create singleton settings instance +settings = get_settings() diff --git a/phase-1-core-infra/backend/src/database.py b/phase-1-core-infra/backend/src/database.py new file mode 100644 index 0000000000000000000000000000000000000000..64506978477d197f1565d92d0732add9e8567c0a --- /dev/null +++ b/phase-1-core-infra/backend/src/database.py @@ -0,0 +1,101 @@ +""" +Database connection and session management. +Provides both sync and async SQLAlchemy engines with connection pooling. +""" +import re +from sqlalchemy import create_engine +from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker +from sqlalchemy.orm import declarative_base, sessionmaker, Session +from src.config import get_settings + +settings = get_settings() + + +def _make_sync_url(url: str) -> str: + """Convert any postgres URL to psycopg2 format, stripping asyncpg prefix.""" + return url.replace("postgresql+asyncpg://", "postgresql://") + + +def _make_async_url(url: str) -> tuple[str, dict]: + """ + Convert any postgres URL to asyncpg format. + asyncpg does not accept sslmode/channel_binding as query params — + remove them and return ssl=True in connect_args instead. + """ + # Ensure asyncpg scheme + clean = re.sub(r"^postgresql(\+asyncpg)?://", "postgresql+asyncpg://", url) + # Strip unsupported query params + needs_ssl = "sslmode=require" in clean or "sslmode=verify" in clean + clean = re.sub(r"[?&](sslmode|channel_binding|sslrootcert|sslcert|sslkey)=[^&]*", "", clean) + clean = re.sub(r"[?&]$", "", clean) # trailing ? or & + clean = re.sub(r"\?&", "?", clean) # ?& → ? + connect_args = {"ssl": True} if needs_ssl else {} + return clean, connect_args + + +# Synchronous engine (psycopg2) — used by Better Auth routes +SYNC_DATABASE_URL = _make_sync_url(settings.database_url) +sync_engine = create_engine( + SYNC_DATABASE_URL, + echo=settings.debug, + pool_size=10, + max_overflow=20, + pool_pre_ping=True, + pool_recycle=3600, +) + +# Synchronous session factory +SessionLocal = sessionmaker( + bind=sync_engine, + autocommit=False, + autoflush=False, + expire_on_commit=False, +) + +# Async engine (asyncpg) — used by async routes +ASYNC_DATABASE_URL, _async_connect_args = _make_async_url(settings.database_url) +async_engine = create_async_engine( + ASYNC_DATABASE_URL, + echo=settings.debug, + pool_size=10, + max_overflow=20, + pool_pre_ping=True, + pool_recycle=3600, + connect_args=_async_connect_args, +) + +# Async session factory +AsyncSessionLocal = async_sessionmaker( + async_engine, + class_=AsyncSession, + expire_on_commit=False, + autocommit=False, + autoflush=False, +) + +# Base class for SQLAlchemy models +Base = declarative_base() + + +def get_db() -> Session: + """ + Dependency for getting synchronous database sessions (Better Auth). + Yields a session and ensures it's closed after use. + """ + db = SessionLocal() + try: + yield db + finally: + db.close() + + +async def get_async_db() -> AsyncSession: + """ + Dependency for getting async database sessions (legacy endpoints). + Yields an async session and ensures it's closed after use. + """ + async with AsyncSessionLocal() as session: + try: + yield session + finally: + await session.close() diff --git a/phase-1-core-infra/backend/src/main.py b/phase-1-core-infra/backend/src/main.py new file mode 100644 index 0000000000000000000000000000000000000000..424aa3f0ce0b29e022795150c47dd900fac44352 --- /dev/null +++ b/phase-1-core-infra/backend/src/main.py @@ -0,0 +1,89 @@ +""" +FastAPI application entry point. +Configures CORS, middleware, and routes. +""" +from fastapi import FastAPI, Request +from fastapi.middleware.cors import CORSMiddleware +from fastapi.staticfiles import StaticFiles +from pathlib import Path +from slowapi.errors import RateLimitExceeded +from src.config import get_settings +from src.security.rate_limiter import limiter, rate_limit_exceeded_handler + +settings = get_settings() + +app = FastAPI( + title="AI Marketing Automation API", + description="Authentication, OAuth integration, and admin dashboard for Autonomous AI Marketing Agency", + version="1.0.0", + docs_url="/docs", + redoc_url="/redoc", +) + +# Configure CORS +origins = settings.cors_origins.split(",") +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +# Add rate limiting +app.state.limiter = limiter +app.add_exception_handler(RateLimitExceeded, rate_limit_exceeded_handler) + + +@app.get("/") +async def root(): + """Root endpoint.""" + return { + "message": "AI Marketing Automation API", + "docs": "/docs", + "health": "/health", + "admin": "/api/v1/admin/metrics/summary" + } + + +# Ensure all new tables exist and run safe column migrations +from src.database import Base, sync_engine +from src.models import User, MediaUpload # noqa: F401 — ensures models are registered +from sqlalchemy import text + +Base.metadata.create_all(bind=sync_engine, checkfirst=True) + +# Safe column migrations (idempotent — IF NOT EXISTS) +with sync_engine.connect() as conn: + conn.execute(text( + "ALTER TABLE users ADD COLUMN IF NOT EXISTS plan VARCHAR(20) NOT NULL DEFAULT 'free';" + )) + conn.commit() + +# Import and include routers +from src.api.v1 import auth, oauth, profile, session, better_auth_oauth, verification, posts, upload, analytics, video +from src.api import health +from src.api.admin import routes as admin_routes + +# Health check (no prefix for Docker compatibility) +app.include_router(health.router) + +# API v1 routes +app.include_router(auth.router, prefix="/api/v1") +app.include_router(session.router, prefix="/api/v1") +app.include_router(oauth.router, prefix="/api/v1") +app.include_router(profile.router, prefix="/api/v1") +app.include_router(better_auth_oauth.router, prefix="/api/v1") +app.include_router(verification.router, prefix="/api/v1") +app.include_router(posts.router, prefix="/api/v1") +app.include_router(upload.router, prefix="/api/v1") +app.include_router(analytics.router, prefix="/api/v1") +app.include_router(video.router, prefix="/api/v1") + +# Serve uploaded files as static files +uploads_dir = Path("uploads") +uploads_dir.mkdir(exist_ok=True) +app.mount("/uploads", StaticFiles(directory="uploads"), name="uploads") + +# Admin routes +app.include_router(admin_routes.router, prefix="/api/v1") diff --git a/phase-1-core-infra/backend/src/models/__init__.py b/phase-1-core-infra/backend/src/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..efb2cda7c6faccd034569beeadc3143b14dbcb73 --- /dev/null +++ b/phase-1-core-infra/backend/src/models/__init__.py @@ -0,0 +1,24 @@ +"""Models package.""" +from src.models.user import User +from src.models.session import Session +from src.models.account import Account +from src.models.verification_token import VerificationToken +from src.models.social_account import SocialAccount, Platform, ConnectionStatus +from src.models.draft_post import DraftPost, PostStatus +from src.models.post_log import PostLog, LogStatus +from src.models.media_upload import MediaUpload + +__all__ = [ + "User", + "Session", + "Account", + "VerificationToken", + "SocialAccount", + "Platform", + "ConnectionStatus", + "DraftPost", + "PostStatus", + "PostLog", + "LogStatus", + "MediaUpload", +] diff --git a/phase-1-core-infra/backend/src/models/account.py b/phase-1-core-infra/backend/src/models/account.py new file mode 100644 index 0000000000000000000000000000000000000000..d7352a5f1779fa5551f041f8ba25a29502a2d463 --- /dev/null +++ b/phase-1-core-infra/backend/src/models/account.py @@ -0,0 +1,51 @@ +""" +Account model for OAuth provider connections. +""" +from sqlalchemy import Column, String, DateTime, Text, ForeignKey, UniqueConstraint +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import relationship +from sqlalchemy.sql import func +import uuid + +from src.database import Base + + +class Account(Base): + """ + OAuth account model for Better Auth. + + Represents a linked OAuth provider (Google, GitHub) for a user. + """ + __tablename__ = 'accounts' + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + user_id = Column(UUID(as_uuid=True), ForeignKey('users.id', ondelete='CASCADE'), nullable=False, index=True) + provider = Column(String(50), nullable=False) # 'google', 'github' + provider_account_id = Column(String(255), nullable=False) + access_token = Column(Text, nullable=True) # Should be encrypted + refresh_token = Column(Text, nullable=True) # Should be encrypted + expires_at = Column(DateTime(timezone=True), nullable=True) + token_type = Column(String(50), nullable=True) + scope = Column(Text, nullable=True) + id_token = Column(Text, nullable=True) + created_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now()) + updated_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now()) + + # Relationships + user = relationship("User", back_populates="accounts") + + # Constraints + __table_args__ = ( + UniqueConstraint('provider', 'provider_account_id', name='uq_provider_account'), + ) + + def __repr__(self): + return f"<Account(id={self.id}, provider='{self.provider}', user_id={self.user_id})>" + + def to_dict(self): + """Convert account to dictionary for API responses (without tokens).""" + return { + "provider": self.provider, + "providerAccountId": self.provider_account_id, + "createdAt": self.created_at.isoformat() if self.created_at else None, + } diff --git a/phase-1-core-infra/backend/src/models/draft_post.py b/phase-1-core-infra/backend/src/models/draft_post.py new file mode 100644 index 0000000000000000000000000000000000000000..5e8cdd51f9fe9be6e3415a810a1e61118533179e --- /dev/null +++ b/phase-1-core-infra/backend/src/models/draft_post.py @@ -0,0 +1,51 @@ +""" +DraftPost model for content prepared for posting. +""" +from sqlalchemy import Column, String, Text, DateTime, ForeignKey, Enum +from sqlalchemy.dialects.postgresql import UUID, JSONB +from sqlalchemy.orm import relationship +from datetime import datetime +import uuid +import enum +from src.database import Base +from src.models.social_account import Platform + + +class PostStatus(str, enum.Enum): + """Post status.""" + DRAFT = "DRAFT" + SCHEDULED = "SCHEDULED" + PUBLISHED = "PUBLISHED" + FAILED = "FAILED" + + @classmethod + def _missing_(cls, value): + if isinstance(value, str): + for member in cls: + if member.value.lower() == value.lower(): + return member + return None + + +class DraftPost(Base): + """Draft post model for future Phase 2 use.""" + __tablename__ = "draft_posts" + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True) + social_account_id = Column(UUID(as_uuid=True), ForeignKey("social_accounts.id", ondelete="SET NULL"), nullable=True, index=True) + content = Column(Text, nullable=False) + target_platform = Column(Enum(Platform), nullable=False) + status = Column(Enum(PostStatus), nullable=False, default=PostStatus.DRAFT, index=True) + created_at = Column(DateTime(timezone=True), nullable=False, default=datetime.utcnow) + scheduled_at = Column(DateTime(timezone=True), nullable=True, index=True) + published_at = Column(DateTime(timezone=True), nullable=True) + media_urls = Column(JSONB, nullable=True) + + # Relationships + user = relationship("User", back_populates="draft_posts") + social_account = relationship("SocialAccount", back_populates="draft_posts", foreign_keys=[social_account_id]) + logs = relationship("PostLog", back_populates="post", cascade="all, delete-orphan") + + def __repr__(self): + return f"<DraftPost(id={self.id}, status={self.status}, platform={self.target_platform})>" diff --git a/phase-1-core-infra/backend/src/models/media_upload.py b/phase-1-core-infra/backend/src/models/media_upload.py new file mode 100644 index 0000000000000000000000000000000000000000..314c478798a8a82d6f4adb3e334d3478783062d2 --- /dev/null +++ b/phase-1-core-infra/backend/src/models/media_upload.py @@ -0,0 +1,27 @@ +""" +MediaUpload model for tracking user file uploads (images and videos). +Used to enforce free-plan usage limits. +""" +from sqlalchemy import Column, String, DateTime, ForeignKey, Integer +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import relationship +from datetime import datetime +import uuid +from src.database import Base + + +class MediaUpload(Base): + """Tracks every file upload per user for quota enforcement.""" + __tablename__ = "media_uploads" + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True) + media_type = Column(String(10), nullable=False) # "image" or "video" + filename = Column(String(255), nullable=False) + size_bytes = Column(Integer, nullable=False, default=0) + created_at = Column(DateTime(timezone=True), nullable=False, default=datetime.utcnow) + + user = relationship("User", back_populates="media_uploads") + + def __repr__(self): + return f"<MediaUpload(id={self.id}, user_id={self.user_id}, type={self.media_type})>" diff --git a/phase-1-core-infra/backend/src/models/post_log.py b/phase-1-core-infra/backend/src/models/post_log.py new file mode 100644 index 0000000000000000000000000000000000000000..cd959b932046ef36eb6bf15458446a05c8b75833 --- /dev/null +++ b/phase-1-core-infra/backend/src/models/post_log.py @@ -0,0 +1,51 @@ +""" +PostLog model for tracking post publishing history and logs. +""" +from sqlalchemy import Column, String, Text, DateTime, ForeignKey +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import relationship +from datetime import datetime +import uuid +import enum +from src.database import Base + + +class LogStatus(str, enum.Enum): + """Log status for post publishing attempts.""" + SUCCESS = "success" + FAILED = "failed" + SCHEDULED = "scheduled" + CANCELLED = "cancelled" + + +class PostLog(Base): + """Log entry for every post publishing attempt.""" + __tablename__ = "post_logs" + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + post_id = Column(UUID(as_uuid=True), ForeignKey("draft_posts.id", ondelete="CASCADE"), nullable=False, index=True) + user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True) + platform = Column(String(50), nullable=False) # varchar like rest of schema + status = Column(String(50), nullable=False, default="failed", index=True) + message = Column(Text, nullable=True) + platform_post_id = Column(String(255), nullable=True) # Post ID returned by social platform + created_at = Column(DateTime(timezone=True), nullable=False, default=datetime.utcnow) + + # Relationships + post = relationship("DraftPost", back_populates="logs") + user = relationship("User", back_populates="post_logs") + + def __repr__(self): + return f"<PostLog(id={self.id}, platform={self.platform}, status={self.status})>" + + def to_dict(self): + return { + "id": str(self.id), + "post_id": str(self.post_id), + "user_id": str(self.user_id), + "platform": self.platform, + "status": self.status, + "message": self.message, + "platform_post_id": self.platform_post_id, + "created_at": self.created_at.isoformat() if self.created_at else None, + } diff --git a/phase-1-core-infra/backend/src/models/rate_limit.py b/phase-1-core-infra/backend/src/models/rate_limit.py new file mode 100644 index 0000000000000000000000000000000000000000..b76a66346ae955dc41405d6d529c76a02deb0e3b --- /dev/null +++ b/phase-1-core-infra/backend/src/models/rate_limit.py @@ -0,0 +1,73 @@ +""" +Rate Limit Database Models + +Models for rate limiting configuration and violation logging. +""" + +from sqlalchemy import Column, String, Integer, Boolean, Text, DateTime, ForeignKey, CheckConstraint +from sqlalchemy.dialects.postgresql import UUID, JSONB +from sqlalchemy.sql import func +from sqlalchemy.orm import relationship +import uuid + +from src.database import Base + + +class RateLimitRule(Base): + """ + Rate limit configuration rules per endpoint. + + Defines rate limiting rules for API endpoints with tier-based overrides. + """ + __tablename__ = 'rate_limit_rules' + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + endpoint_pattern = Column(String(255), nullable=False, unique=True, index=True) + requests_per_minute = Column(Integer, nullable=False) + requests_per_hour = Column(Integer, nullable=True) + tier_overrides = Column(JSONB, nullable=False, default={}) + enabled = Column(Boolean, nullable=False, default=True, index=True) + description = Column(Text, nullable=True) + created_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now()) + updated_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now()) + + __table_args__ = ( + CheckConstraint('requests_per_minute > 0', name='check_requests_per_minute_positive'), + CheckConstraint( + 'requests_per_hour IS NULL OR requests_per_hour >= requests_per_minute * 60', + name='check_requests_per_hour_valid' + ), + ) + + def __repr__(self): + return f"<RateLimitRule(endpoint='{self.endpoint_pattern}', limit={self.requests_per_minute}/min)>" + + +class RateLimitViolation(Base): + """ + Rate limit violation log for security monitoring. + + Records all rate limit violations for analysis and security monitoring. + """ + __tablename__ = 'rate_limit_violations' + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + user_id = Column(UUID(as_uuid=True), ForeignKey('users.id', ondelete='SET NULL'), nullable=True, index=True) + ip_address = Column(String(45), nullable=False, index=True) + endpoint = Column(String(255), nullable=False) + requests_made = Column(Integer, nullable=False) + limit_allowed = Column(Integer, nullable=False) + window_seconds = Column(Integer, nullable=False) + user_agent = Column(Text, nullable=True) + violated_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now(), index=True) + + # Relationship to user (optional) + user = relationship("User", backref="rate_limit_violations") + + __table_args__ = ( + CheckConstraint('requests_made > limit_allowed', name='check_violation_exceeded'), + CheckConstraint('window_seconds > 0', name='check_window_positive'), + ) + + def __repr__(self): + return f"<RateLimitViolation(endpoint='{self.endpoint}', ip='{self.ip_address}', at={self.violated_at})>" diff --git a/phase-1-core-infra/backend/src/models/session.py b/phase-1-core-infra/backend/src/models/session.py new file mode 100644 index 0000000000000000000000000000000000000000..1381a00ffc0223b0ebf0d2b503c6a5fe44af8dd8 --- /dev/null +++ b/phase-1-core-infra/backend/src/models/session.py @@ -0,0 +1,50 @@ +""" +Session model for Better Auth session management. +""" +from sqlalchemy import Column, String, DateTime, Text, ForeignKey +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import relationship +from sqlalchemy.sql import func +import uuid + +from src.database import Base + + +class Session(Base): + """ + Session model for Better Auth. + + Represents an active user session with JWT token. + """ + __tablename__ = 'sessions' + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + user_id = Column(UUID(as_uuid=True), ForeignKey('users.id', ondelete='CASCADE'), nullable=False, index=True) + token = Column(Text, unique=True, nullable=False, index=True) + expires_at = Column(DateTime(timezone=True), nullable=False, index=True) + ip_address = Column(String(45), nullable=True) + user_agent = Column(Text, nullable=True) + created_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now()) + + # Relationships + user = relationship("User", back_populates="sessions") + + def __repr__(self): + return f"<Session(id={self.id}, user_id={self.user_id}, expires_at={self.expires_at})>" + + def to_dict(self): + """Convert session to dictionary for API responses.""" + return { + "id": str(self.id), + "expiresAt": self.expires_at.isoformat() if self.expires_at else None, + } + + def to_detail_dict(self): + """Convert session to detailed dictionary including metadata.""" + return { + "id": str(self.id), + "ipAddress": self.ip_address, + "userAgent": self.user_agent, + "createdAt": self.created_at.isoformat() if self.created_at else None, + "expiresAt": self.expires_at.isoformat() if self.expires_at else None, + } diff --git a/phase-1-core-infra/backend/src/models/social_account.py b/phase-1-core-infra/backend/src/models/social_account.py new file mode 100644 index 0000000000000000000000000000000000000000..c4b67d6716c0282ff615e2fb0213c729b6ffb489 --- /dev/null +++ b/phase-1-core-infra/backend/src/models/social_account.py @@ -0,0 +1,69 @@ +""" +SocialAccount model for OAuth-connected social media accounts. +""" +from sqlalchemy import Column, String, DateTime, ForeignKey, Enum, UniqueConstraint +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import relationship +from datetime import datetime +import uuid +import enum +from src.database import Base +from src.utils.encryption import EncryptedString + + +class Platform(str, enum.Enum): + """Supported social media platforms.""" + LINKEDIN = "LINKEDIN" + + @classmethod + def _missing_(cls, value): + """Accept lowercase or mixed-case inputs (e.g. 'linkedin' → LINKEDIN).""" + if isinstance(value, str): + for member in cls: + if member.value.lower() == value.lower(): + return member + return None + + +class ConnectionStatus(str, enum.Enum): + """Connection status for social accounts.""" + ACTIVE = "ACTIVE" + EXPIRED = "EXPIRED" + REVOKED = "REVOKED" + ERROR = "ERROR" + + @classmethod + def _missing_(cls, value): + if isinstance(value, str): + for member in cls: + if member.value.lower() == value.lower(): + return member + return None + + +class SocialAccount(Base): + """Social media account connection model.""" + __tablename__ = "social_accounts" + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True) + platform = Column(Enum(Platform, native_enum=False), nullable=False) + platform_user_id = Column(String(255), nullable=False) + access_token = Column(EncryptedString(1000), nullable=False) + refresh_token = Column(EncryptedString(1000), nullable=True) + token_expires_at = Column(DateTime(timezone=True), nullable=True) + connection_status = Column(Enum(ConnectionStatus, native_enum=False), nullable=False, default=ConnectionStatus.ACTIVE, index=True) + last_sync_at = Column(DateTime(timezone=True), nullable=True) + created_at = Column(DateTime(timezone=True), nullable=False, default=datetime.utcnow) + + # Relationships + user = relationship("User", back_populates="social_accounts") + draft_posts = relationship("DraftPost", back_populates="social_account", cascade="all, delete-orphan") + + # Unique constraint: one platform account per user + __table_args__ = ( + UniqueConstraint('platform', 'platform_user_id', name='uq_platform_user'), + ) + + def __repr__(self): + return f"<SocialAccount(id={self.id}, platform={self.platform}, status={self.connection_status})>" diff --git a/phase-1-core-infra/backend/src/models/user.py b/phase-1-core-infra/backend/src/models/user.py new file mode 100644 index 0000000000000000000000000000000000000000..1aaa98c0d22fba41b0f3e576fc23b7c6e1d87957 --- /dev/null +++ b/phase-1-core-infra/backend/src/models/user.py @@ -0,0 +1,55 @@ +""" +User model for Better Auth authentication. +""" +from sqlalchemy import Column, String, DateTime, Boolean, Text, Integer +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import relationship +from sqlalchemy.sql import func +import uuid +from src.database import Base + + +class User(Base): + """ + User account model for Better Auth. + + Supports both email/password and OAuth authentication. + """ + __tablename__ = "users" + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + email = Column(String(255), unique=True, nullable=False, index=True) + email_verified = Column(Boolean, nullable=False, default=False) + name = Column(String(255), nullable=True) + image = Column(Text, nullable=True) + password_hash = Column(Text, nullable=True) # NULL for OAuth-only users + is_admin = Column(Boolean, nullable=False, default=False) + plan = Column(String(20), nullable=False, default="free") # "free" or "pro" + clerk_id = Column(String(255), unique=True, nullable=True, index=True) # For migration tracking + created_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now()) + updated_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now()) + last_login_at = Column(DateTime(timezone=True), nullable=True) + + # Relationships + sessions = relationship("Session", back_populates="user", cascade="all, delete-orphan") + accounts = relationship("Account", back_populates="user", cascade="all, delete-orphan") + social_accounts = relationship("SocialAccount", back_populates="user", cascade="all, delete-orphan") + draft_posts = relationship("DraftPost", back_populates="user", cascade="all, delete-orphan") + post_logs = relationship("PostLog", back_populates="user", cascade="all, delete-orphan") + media_uploads = relationship("MediaUpload", back_populates="user", cascade="all, delete-orphan") + + def __repr__(self): + return f"<User(id={self.id}, email='{self.email}', is_admin={self.is_admin})>" + + def to_dict(self): + """Convert user to dictionary for API responses.""" + return { + "id": str(self.id), + "email": self.email, + "name": self.name, + "image": self.image, + "emailVerified": self.email_verified, + "isAdmin": self.is_admin, + "plan": self.plan, + "createdAt": self.created_at.isoformat() if self.created_at else None, + } diff --git a/phase-1-core-infra/backend/src/models/verification_token.py b/phase-1-core-infra/backend/src/models/verification_token.py new file mode 100644 index 0000000000000000000000000000000000000000..2b5563342b2ea0e3c0f78e06c9ef74dec034d40b --- /dev/null +++ b/phase-1-core-infra/backend/src/models/verification_token.py @@ -0,0 +1,33 @@ +""" +VerificationToken model for email verification and password reset. +""" +from sqlalchemy import Column, String, DateTime, Text +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.sql import func +import uuid + +from src.database import Base + + +class VerificationToken(Base): + """ + Verification token model for Better Auth. + + Used for email verification and password reset flows. + """ + __tablename__ = 'verification_tokens' + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + identifier = Column(String(255), nullable=False, index=True) # email or user_id + token = Column(Text, unique=True, nullable=False, index=True) + expires_at = Column(DateTime(timezone=True), nullable=False) + type = Column(String(50), nullable=False) # 'email_verification', 'password_reset' + created_at = Column(DateTime(timezone=True), nullable=False, server_default=func.now()) + + def __repr__(self): + return f"<VerificationToken(id={self.id}, type='{self.type}', expires_at={self.expires_at})>" + + def is_expired(self): + """Check if token has expired.""" + from datetime import datetime, timezone + return datetime.now(timezone.utc) > self.expires_at diff --git a/phase-1-core-infra/backend/src/routes/auth.py b/phase-1-core-infra/backend/src/routes/auth.py new file mode 100644 index 0000000000000000000000000000000000000000..5e24218bc302d8abae1e81b6ab6e08a5c5bd8324 --- /dev/null +++ b/phase-1-core-infra/backend/src/routes/auth.py @@ -0,0 +1,223 @@ +""" +Authentication API endpoints for Better Auth. +""" +from fastapi import APIRouter, Depends, HTTPException, status, Request, Response +from sqlalchemy.orm import Session + +from src.database import get_db +from src.schemas.auth import ( + RegisterRequest, + LoginRequest, + AuthResponse, + LogoutResponse, + UserResponse, + SessionResponse +) +from src.services.auth_service import AuthService +from src.auth.middleware import get_current_user, get_optional_user +from src.models.user import User + + +router = APIRouter(prefix="/auth", tags=["Authentication"]) + + +def get_client_info(request: Request) -> tuple[str, str]: + """ + Extract client IP address and user agent from request. + + Args: + request: FastAPI request object + + Returns: + Tuple of (ip_address, user_agent) + """ + # Get IP address (handle proxy headers) + ip_address = request.headers.get("X-Forwarded-For", "").split(",")[0].strip() + if not ip_address: + ip_address = request.headers.get("X-Real-IP", "") + if not ip_address: + ip_address = request.client.host if request.client else "unknown" + + # Get user agent + user_agent = request.headers.get("User-Agent", "unknown") + + return ip_address, user_agent + + +def set_session_cookie(response: Response, token: str, max_age: int = 30 * 24 * 60 * 60): + """ + Set session cookie in response. + + Args: + response: FastAPI response object + token: Session token + max_age: Cookie max age in seconds (default 30 days) + """ + response.set_cookie( + key="better-auth.session_token", + value=token, + max_age=max_age, + httponly=True, + secure=True, # HTTPS only in production + samesite="lax", + path="/" + ) + + +@router.post("/signup", response_model=AuthResponse, status_code=status.HTTP_201_CREATED) +async def signup( + request: RegisterRequest, + http_request: Request, + response: Response, + db: Session = Depends(get_db) +): + """ + Register a new user account. + + Creates a new user and returns user data with session token in HTTP-only cookie. + """ + try: + # Get client info + ip_address, user_agent = get_client_info(http_request) + + # Create user and session + user, session = AuthService.signup( + db=db, + email=request.email, + password=request.password, + name=request.name, + ip_address=ip_address, + user_agent=user_agent + ) + + # Set session cookie + set_session_cookie(response, session.token) + + # Return user and session data + return AuthResponse( + user=UserResponse(**user.to_dict()), + session=SessionResponse(**session.to_dict()) + ) + + except ValueError as e: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=str(e) + ) + + +@router.post("/login", response_model=AuthResponse) +async def login( + request: LoginRequest, + http_request: Request, + response: Response, + db: Session = Depends(get_db) +): + """ + Authenticate user and create session. + + Returns user data with session token in HTTP-only cookie. + """ + try: + # Get client info + ip_address, user_agent = get_client_info(http_request) + + # Authenticate user + user, session = AuthService.login( + db=db, + email=request.email, + password=request.password, + ip_address=ip_address, + user_agent=user_agent + ) + + # Set session cookie + set_session_cookie(response, session.token) + + # Return user and session data + return AuthResponse( + user=UserResponse(**user.to_dict()), + session=SessionResponse(**session.to_dict()) + ) + + except ValueError as e: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=str(e) + ) + + +@router.post("/logout", response_model=LogoutResponse) +async def logout( + http_request: Request, + response: Response, + db: Session = Depends(get_db) +): + """ + End current session (logout). + + Invalidates the session and clears the session cookie. + """ + # Get session token from cookie + token = http_request.cookies.get("better-auth.session_token") + + if token: + # Delete session from database + AuthService.logout(db, token) + + # Clear session cookie + response.delete_cookie( + key="better-auth.session_token", + path="/", + samesite="lax" + ) + + return LogoutResponse(success=True) + + +@router.get("/session", response_model=AuthResponse) +async def get_session( + current_user: User = Depends(get_current_user), + http_request: Request = None, + db: Session = Depends(get_db) +): + """ + Get current authenticated user and session. + + Requires valid session cookie. + """ + # Get session token from cookie + token = http_request.cookies.get("better-auth.session_token") + + if not token: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="No session found" + ) + + # Get session from database + from src.auth.better_auth import BetterAuthVerifier + session = BetterAuthVerifier.get_session(db, token) + + if not session: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid or expired session" + ) + + return AuthResponse( + user=UserResponse(**current_user.to_dict()), + session=SessionResponse(**session.to_dict()) + ) + + +@router.get("/me", response_model=UserResponse) +async def get_current_user_info( + current_user: User = Depends(get_current_user) +): + """ + Get current authenticated user information. + + Requires valid session cookie. + """ + return UserResponse(**current_user.to_dict()) diff --git a/phase-1-core-infra/backend/src/schemas/__init__.py b/phase-1-core-infra/backend/src/schemas/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..96c3272b38a25942d337000f45622524e9ab3702 --- /dev/null +++ b/phase-1-core-infra/backend/src/schemas/__init__.py @@ -0,0 +1,18 @@ +""" +Base Pydantic schemas for API responses. +""" +from pydantic import BaseModel +from typing import Optional, List, Dict, Any + + +class ErrorResponse(BaseModel): + """Standard error response schema.""" + error: str + message: str + details: Optional[List[Dict[str, str]]] = None + + +class SuccessResponse(BaseModel): + """Standard success response schema.""" + message: str + data: Optional[Dict[str, Any]] = None diff --git a/phase-1-core-infra/backend/src/schemas/auth.py b/phase-1-core-infra/backend/src/schemas/auth.py new file mode 100644 index 0000000000000000000000000000000000000000..deff26f87b82bc86e9b1d70ea58f0b39843c7a7a --- /dev/null +++ b/phase-1-core-infra/backend/src/schemas/auth.py @@ -0,0 +1,60 @@ +""" +Authentication Pydantic schemas for Better Auth. +""" +from pydantic import BaseModel, EmailStr, Field +from typing import Optional +from datetime import datetime + + +class RegisterRequest(BaseModel): + """Schema for registration request.""" + email: EmailStr + password: str = Field(..., min_length=8, max_length=255, description="Minimum 8 characters with uppercase, lowercase, and number") + name: str = Field(..., min_length=1, max_length=255) + + +class LoginRequest(BaseModel): + """Schema for login request.""" + email: EmailStr + password: str + + +class SessionResponse(BaseModel): + """Schema for session data.""" + id: str + expiresAt: str + + class Config: + from_attributes = True + + +class UserResponse(BaseModel): + """Schema for user data in auth responses.""" + id: str + email: str + name: Optional[str] + image: Optional[str] + emailVerified: bool + isAdmin: bool + createdAt: str + + class Config: + from_attributes = True + + +class AuthResponse(BaseModel): + """Schema for authentication response (login/signup).""" + user: UserResponse + session: SessionResponse + + +class LogoutResponse(BaseModel): + """Schema for logout response.""" + success: bool + message: str = "Logged out successfully" + + +class TokenResponse(BaseModel): + """Schema for token response (legacy compatibility).""" + access_token: str + token_type: str = "bearer" diff --git a/phase-1-core-infra/backend/src/schemas/posts.py b/phase-1-core-infra/backend/src/schemas/posts.py new file mode 100644 index 0000000000000000000000000000000000000000..5c5ec5240a1091292b594812c05b5854cdac5018 --- /dev/null +++ b/phase-1-core-infra/backend/src/schemas/posts.py @@ -0,0 +1,105 @@ +""" +Pydantic schemas for posts API (generate, publish, schedule, history, upload). +""" +from pydantic import BaseModel, Field +from typing import List, Optional, Dict, Any +from datetime import datetime +from enum import Enum + + +class PlatformEnum(str, Enum): + LINKEDIN = "linkedin" + + +# --- Generate --- + +class GeneratePostRequest(BaseModel): + topic: str = Field(..., min_length=3, max_length=500, description="Topic or description for the post") + platforms: List[PlatformEnum] = Field(..., min_items=1, description="Target platforms") + tone: Optional[str] = Field("professional", description="Tone: professional, casual, funny, inspirational") + media_urls: Optional[List[str]] = Field(None, description="Optional image/video URLs to include") + + class Config: + use_enum_values = True + + +class GeneratePostResponse(BaseModel): + post_id: str + topic: str + content: str + hashtags: List[str] + platforms: List[str] + status: str + created_at: str + + +# --- Publish --- + +class PublishPostRequest(BaseModel): + post_id: str = Field(..., description="ID of the draft post to publish") + platforms: List[PlatformEnum] = Field(..., min_items=1) + media_urls: Optional[List[str]] = Field(None, description="Image/video URLs to attach to the post") + + class Config: + use_enum_values = True + + +class PlatformResult(BaseModel): + platform: str + success: bool + platform_post_id: Optional[str] = None + error: Optional[str] = None + + +class PublishPostResponse(BaseModel): + post_id: str + results: List[PlatformResult] + published_count: int + failed_count: int + + +# --- Schedule --- + +class SchedulePostRequest(BaseModel): + post_id: str = Field(..., description="ID of the draft post to schedule") + scheduled_at: datetime = Field(..., description="When to publish (UTC datetime)") + platforms: List[PlatformEnum] = Field(..., min_items=1) + + class Config: + use_enum_values = True + + +class SchedulePostResponse(BaseModel): + post_id: str + scheduled_at: str + platforms: List[str] + status: str + + +# --- History --- + +class PostHistoryItem(BaseModel): + id: str + content: str + status: str + platforms: List[str] + created_at: str + scheduled_at: Optional[str] = None + published_at: Optional[str] = None + logs: Optional[List[Dict[str, Any]]] = [] + + +class HistoryResponse(BaseModel): + posts: List[PostHistoryItem] + total: int + page: int + per_page: int + + +# --- Upload --- + +class UploadResponse(BaseModel): + filename: str + url: str + media_type: str + size_bytes: int diff --git a/phase-1-core-infra/backend/src/schemas/social_account.py b/phase-1-core-infra/backend/src/schemas/social_account.py new file mode 100644 index 0000000000000000000000000000000000000000..4433f2a32ac22960c500c705e1a2e707e6f45d6c --- /dev/null +++ b/phase-1-core-infra/backend/src/schemas/social_account.py @@ -0,0 +1,58 @@ +""" +SocialAccount Pydantic schemas. +""" +from pydantic import BaseModel, Field, model_validator, field_serializer +from datetime import datetime +from typing import Optional +from uuid import UUID +from src.models.social_account import Platform, ConnectionStatus + + +class ConnectAccountRequest(BaseModel): + """Schema for connecting a social account.""" + platform: Platform + platform_user_id: str = Field(..., max_length=255) + access_token: str + refresh_token: Optional[str] = None + token_expires_at: Optional[datetime] = None + + +class SocialAccountResponse(BaseModel): + """Schema for social account response.""" + id: UUID + user_id: UUID + platform: Platform + platform_user_id: str + platform_username: Optional[str] = None + connection_status: ConnectionStatus + is_active: bool = True + token_expires_at: Optional[datetime] = None + last_sync_at: Optional[datetime] = None + created_at: datetime + + @model_validator(mode="after") + def populate_derived_fields(self) -> "SocialAccountResponse": + if self.platform_username is None: + self.platform_username = self.platform_user_id + self.is_active = (self.connection_status == ConnectionStatus.ACTIVE) + return self + + @field_serializer("platform") + def serialize_platform(self, v: Platform) -> str: + return v.value.lower() + + @field_serializer("connection_status") + def serialize_connection_status(self, v: ConnectionStatus) -> str: + return v.value.lower() + + class Config: + from_attributes = True + + +class SocialAccountCreate(BaseModel): + """Schema for creating a social account.""" + platform: Platform + platform_user_id: str + access_token: str + refresh_token: Optional[str] = None + token_expires_at: Optional[datetime] = None diff --git a/phase-1-core-infra/backend/src/schemas/user.py b/phase-1-core-infra/backend/src/schemas/user.py new file mode 100644 index 0000000000000000000000000000000000000000..78958480c816b75512ca81986fe5231170a45a4e --- /dev/null +++ b/phase-1-core-infra/backend/src/schemas/user.py @@ -0,0 +1,32 @@ +""" +User Pydantic schemas for request/response validation. +""" +from pydantic import BaseModel, EmailStr, Field +from datetime import datetime +from typing import Optional +from uuid import UUID + + +class UserCreate(BaseModel): + """Schema for user registration.""" + email: EmailStr + password: str = Field(..., min_length=8, max_length=255) + name: str = Field(..., min_length=1, max_length=255) + + +class UserLogin(BaseModel): + """Schema for user login.""" + email: EmailStr + password: str + + +class UserResponse(BaseModel): + """Schema for user response.""" + id: UUID + email: str + name: str + created_at: datetime + last_login_at: Optional[datetime] = None + + class Config: + from_attributes = True diff --git a/phase-1-core-infra/backend/src/security/encryption.py b/phase-1-core-infra/backend/src/security/encryption.py new file mode 100644 index 0000000000000000000000000000000000000000..6c7046162af71ee1db55465fc79dc7f4032f2394 --- /dev/null +++ b/phase-1-core-infra/backend/src/security/encryption.py @@ -0,0 +1,128 @@ +""" +Token Encryption Service + +Provides AES-256-GCM encryption for social media access tokens using Fernet. +""" + +from cryptography.fernet import Fernet +from typing import Optional +import os + + +class TokenEncryption: + """ + AES-256 encryption service for social media tokens. + + Uses Fernet (symmetric encryption) which provides: + - AES-256-CBC encryption + - HMAC authentication + - Timestamp verification + """ + + def __init__(self, key: Optional[str] = None): + """ + Initialize encryption service with key. + + Args: + key: Base64-encoded 32-byte Fernet key. If None, loads from environment. + + Raises: + ValueError: If key is invalid or missing + """ + if key is None: + key = os.getenv('ENCRYPTION_KEY') + + if not key: + raise ValueError("ENCRYPTION_KEY environment variable is required") + + try: + self.cipher = Fernet(key.encode() if isinstance(key, str) else key) + except Exception as e: + raise ValueError(f"Invalid encryption key: {e}") + + def encrypt(self, plaintext: str) -> str: + """ + Encrypt plaintext token. + + Args: + plaintext: Token to encrypt + + Returns: + Base64-encoded encrypted token (Fernet format) + + Raises: + ValueError: If plaintext is empty + Exception: If encryption fails + """ + if not plaintext: + raise ValueError("Cannot encrypt empty string") + + try: + encrypted_bytes = self.cipher.encrypt(plaintext.encode('utf-8')) + return encrypted_bytes.decode('utf-8') + except Exception as e: + raise Exception(f"Encryption failed: {e}") + + def decrypt(self, ciphertext: str) -> str: + """ + Decrypt encrypted token. + + Args: + ciphertext: Base64-encoded encrypted token + + Returns: + Decrypted plaintext token + + Raises: + ValueError: If ciphertext is empty + Exception: If decryption fails (invalid token, wrong key, expired) + """ + if not ciphertext: + raise ValueError("Cannot decrypt empty string") + + try: + decrypted_bytes = self.cipher.decrypt(ciphertext.encode('utf-8')) + return decrypted_bytes.decode('utf-8') + except Exception as e: + raise Exception(f"Decryption failed: {e}") + + def batch_encrypt(self, tokens: list[str]) -> list[str]: + """ + Encrypt multiple tokens in batch. + + Args: + tokens: List of plaintext tokens + + Returns: + List of encrypted tokens (same order) + """ + return [self.encrypt(token) for token in tokens] + + def batch_decrypt(self, tokens: list[str]) -> list[str]: + """ + Decrypt multiple tokens in batch. + + Args: + tokens: List of encrypted tokens + + Returns: + List of decrypted tokens (same order) + """ + return [self.decrypt(token) for token in tokens] + + +# Singleton instance +_encryption_service: Optional[TokenEncryption] = None + + +def get_encryption_service() -> TokenEncryption: + """ + Get singleton encryption service instance. + + Returns: + TokenEncryption instance + """ + global _encryption_service + if _encryption_service is None: + _encryption_service = TokenEncryption() + return _encryption_service diff --git a/phase-1-core-infra/backend/src/security/rate_limiter.py b/phase-1-core-infra/backend/src/security/rate_limiter.py new file mode 100644 index 0000000000000000000000000000000000000000..4103cd6f39f54801b963654f0209f30f0a2bb647 --- /dev/null +++ b/phase-1-core-infra/backend/src/security/rate_limiter.py @@ -0,0 +1,180 @@ +""" +Rate Limiting Middleware + +Provides Redis-backed rate limiting using slowapi (FastAPI wrapper for limits). +""" + +from slowapi import Limiter, _rate_limit_exceeded_handler +from slowapi.util import get_remote_address +from slowapi.errors import RateLimitExceeded +from fastapi import Request, Response +from typing import Callable +import os + + +def get_user_identifier(request: Request) -> str: + """ + Get unique identifier for rate limiting. + + Uses user ID if authenticated, otherwise falls back to IP address. + + Args: + request: FastAPI request object + + Returns: + Unique identifier string + """ + # Try to get user ID from request state (set by auth middleware) + user_id = getattr(request.state, 'user_id', None) + if user_id: + return f"user:{user_id}" + + # Fall back to IP address + return f"ip:{get_remote_address(request)}" + + +# Initialize limiter — use in-memory storage by default (no Redis required) +# Only use Redis if REDIS_URL is explicitly set AND Redis is reachable +_redis_url = os.getenv('REDIS_URL', '') +_use_redis = bool(_redis_url) + +if _use_redis: + try: + import redis as _redis_lib + _r = _redis_lib.from_url(_redis_url, socket_connect_timeout=2) + _r.ping() + limiter = Limiter( + key_func=get_user_identifier, + storage_uri=_redis_url, + default_limits=["60/minute"], + headers_enabled=True, + ) + print(f"Rate limiter: using Redis at {_redis_url}") + except Exception as e: + print(f"Warning: Redis unavailable ({e}), using in-memory rate limiting") + _use_redis = False + +if not _use_redis: + limiter = Limiter( + key_func=get_user_identifier, + default_limits=["60/minute"], + headers_enabled=True, + ) + + +def get_rate_limit_for_tier(tier: str) -> str: + """ + Get rate limit string based on subscription tier. + + Args: + tier: Subscription tier (basic, pro, agency) + + Returns: + Rate limit string (e.g., "30/minute") + """ + tier_limits = { + 'basic': '30/minute', + 'pro': '60/minute', + 'agency': '120/minute', + } + return tier_limits.get(tier.lower(), '30/minute') + + +async def log_rate_limit_violation( + request: Request, + endpoint: str, + requests_made: int, + limit_allowed: int, + window_seconds: int = 60 +): + """ + Log rate limit violation to database for security monitoring. + + Args: + request: FastAPI request object + endpoint: Endpoint that was rate limited + requests_made: Number of requests made + limit_allowed: Limit that was exceeded + window_seconds: Time window in seconds + """ + from src.database import AsyncSessionLocal + from src.models.rate_limit import RateLimitViolation + + user_id = getattr(request.state, 'user_id', None) + ip_address = get_remote_address(request) + user_agent = request.headers.get('user-agent', '') + + async with AsyncSessionLocal() as session: + violation = RateLimitViolation( + user_id=user_id, + ip_address=ip_address, + endpoint=endpoint, + requests_made=requests_made, + limit_allowed=limit_allowed, + window_seconds=window_seconds, + user_agent=user_agent + ) + session.add(violation) + await session.commit() + + +async def rate_limit_exceeded_handler(request: Request, exc: RateLimitExceeded) -> Response: + """ + Custom handler for rate limit exceeded errors. + + Logs violation and returns 429 response with Retry-After header. + + Args: + request: FastAPI request object + exc: RateLimitExceeded exception + + Returns: + JSON response with 429 status code + """ + from fastapi.responses import JSONResponse + + # Log violation + try: + await log_rate_limit_violation( + request=request, + endpoint=request.url.path, + requests_made=exc.detail.get('requests_made', 0), + limit_allowed=exc.detail.get('limit', 0), + window_seconds=60 + ) + except Exception as e: + # Don't fail the response if logging fails + print(f"Failed to log rate limit violation: {e}") + + return JSONResponse( + status_code=429, + content={ + "error": "Rate limit exceeded", + "message": "Too many requests. Please try again later.", + "retry_after": exc.detail.get('retry_after', 60) + }, + headers={ + "Retry-After": str(exc.detail.get('retry_after', 60)) + } + ) + + +# Rate limit decorators for common use cases +def rate_limit_content_generation(): + """Rate limit for AI content generation (expensive operation).""" + return limiter.limit("10/minute") + + +def rate_limit_video_generation(): + """Rate limit for video generation (very expensive operation).""" + return limiter.limit("5/minute") + + +def rate_limit_standard(): + """Rate limit for standard API operations.""" + return limiter.limit("60/minute") + + +def rate_limit_user_operations(): + """Rate limit for user profile and settings operations.""" + return limiter.limit("30/minute") diff --git a/phase-1-core-infra/backend/src/services/__init__.py b/phase-1-core-infra/backend/src/services/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/phase-1-core-infra/backend/src/services/auth_service.py b/phase-1-core-infra/backend/src/services/auth_service.py new file mode 100644 index 0000000000000000000000000000000000000000..0eb0cb5197f411280b98dd795a145b7937dac1d7 --- /dev/null +++ b/phase-1-core-infra/backend/src/services/auth_service.py @@ -0,0 +1,267 @@ +""" +Authentication service for Better Auth. + +Handles user signup, login, logout, and session management. +""" +import jwt +import uuid +import re +from datetime import datetime, timedelta, timezone +from typing import Optional, Tuple +from sqlalchemy.orm import Session + +from src.models.user import User +from src.models.session import Session as SessionModel +from src.auth.password import PasswordHasher +from src.config import settings + + +class AuthService: + """ + Service for authentication operations. + """ + + SESSION_EXPIRY_DAYS = 30 + + @staticmethod + def validate_password_strength(password: str) -> bool: + """ + Validate password strength. + Must be at least 8 characters with uppercase, lowercase, and number. + + Args: + password: Password to validate + + Returns: + True if valid, False otherwise + """ + if len(password) < 8: + return False + if not re.search(r"[A-Z]", password): + return False + if not re.search(r"[a-z]", password): + return False + if not re.search(r"\d", password): + return False + return True + + @staticmethod + def create_session_token(user_id: uuid.UUID) -> str: + """ + Create a JWT session token for a user. + + Args: + user_id: User UUID + + Returns: + JWT token string + """ + payload = { + "user_id": str(user_id), + "exp": datetime.now(timezone.utc) + timedelta(days=AuthService.SESSION_EXPIRY_DAYS), + "iat": datetime.now(timezone.utc) + } + + token = jwt.encode( + payload, + settings.BETTER_AUTH_SECRET, + algorithm="HS256" + ) + + return token + + @staticmethod + def signup( + db: Session, + email: str, + password: str, + name: Optional[str] = None, + ip_address: Optional[str] = None, + user_agent: Optional[str] = None + ) -> Tuple[User, SessionModel]: + """ + Create a new user account and initial session. + + Args: + db: Database session + email: User email address + password: Plain text password + name: Optional user name + ip_address: Optional IP address for session tracking + user_agent: Optional user agent for session tracking + + Returns: + Tuple of (User, Session) + + Raises: + ValueError: If email already exists or password is weak + """ + # Validate password strength + if not AuthService.validate_password_strength(password): + raise ValueError("Password must be at least 8 characters with uppercase, lowercase, and number") + + # Check if user already exists + existing_user = db.query(User).filter(User.email == email.lower()).first() + if existing_user: + raise ValueError("Email already registered") + + # Hash password + password_hash = PasswordHasher.hash_password(password) + + # Create user + user = User( + email=email.lower(), + password_hash=password_hash, + name=name, + email_verified=False, + is_admin=False + ) + db.add(user) + db.flush() # Get user.id without committing + + # Create session + token = AuthService.create_session_token(user.id) + session = SessionModel( + user_id=user.id, + token=token, + expires_at=datetime.now(timezone.utc) + timedelta(days=AuthService.SESSION_EXPIRY_DAYS), + ip_address=ip_address, + user_agent=user_agent + ) + db.add(session) + db.commit() + db.refresh(user) + db.refresh(session) + + return user, session + + @staticmethod + def login( + db: Session, + email: str, + password: str, + ip_address: Optional[str] = None, + user_agent: Optional[str] = None + ) -> Tuple[User, SessionModel]: + """ + Authenticate user and create session. + + Args: + db: Database session + email: User email address + password: Plain text password + ip_address: Optional IP address for session tracking + user_agent: Optional user agent for session tracking + + Returns: + Tuple of (User, Session) + + Raises: + ValueError: If credentials are invalid + """ + # Find user + user = db.query(User).filter(User.email == email.lower()).first() + if not user: + raise ValueError("Invalid email or password") + + # Verify password + if not user.password_hash: + raise ValueError("Password login not available for this account") + + if not PasswordHasher.verify_password(password, user.password_hash): + raise ValueError("Invalid email or password") + + # Update last login + user.last_login_at = datetime.now(timezone.utc) + + # Create session + token = AuthService.create_session_token(user.id) + session = SessionModel( + user_id=user.id, + token=token, + expires_at=datetime.now(timezone.utc) + timedelta(days=AuthService.SESSION_EXPIRY_DAYS), + ip_address=ip_address, + user_agent=user_agent + ) + db.add(session) + db.commit() + db.refresh(user) + db.refresh(session) + + return user, session + + @staticmethod + def logout(db: Session, session_token: str) -> bool: + """ + Invalidate a session (logout). + + Args: + db: Database session + session_token: Session token to invalidate + + Returns: + True if session was found and deleted, False otherwise + """ + session = db.query(SessionModel).filter( + SessionModel.token == session_token + ).first() + + if not session: + return False + + db.delete(session) + db.commit() + return True + + @staticmethod + def logout_all_sessions(db: Session, user_id: uuid.UUID) -> int: + """ + Invalidate all sessions for a user. + + Args: + db: Database session + user_id: User UUID + + Returns: + Number of sessions deleted + """ + count = db.query(SessionModel).filter( + SessionModel.user_id == user_id + ).delete() + db.commit() + return count + + @staticmethod + def refresh_session( + db: Session, + session_token: str + ) -> Optional[SessionModel]: + """ + Refresh a session's expiration time. + + Args: + db: Database session + session_token: Session token to refresh + + Returns: + Updated session if found and valid, None otherwise + """ + session = db.query(SessionModel).filter( + SessionModel.token == session_token + ).first() + + if not session: + return None + + # Check if session is expired + if session.expires_at < datetime.now(timezone.utc): + db.delete(session) + db.commit() + return None + + # Extend expiration + session.expires_at = datetime.now(timezone.utc) + timedelta(days=AuthService.SESSION_EXPIRY_DAYS) + db.commit() + db.refresh(session) + + return session diff --git a/phase-1-core-infra/backend/src/services/better_auth_oauth_service.py b/phase-1-core-infra/backend/src/services/better_auth_oauth_service.py new file mode 100644 index 0000000000000000000000000000000000000000..a7049ca584e00c3dc43d2673b9d281edd28afc3f --- /dev/null +++ b/phase-1-core-infra/backend/src/services/better_auth_oauth_service.py @@ -0,0 +1,395 @@ +""" +OAuth service for Better Auth providers (Google, GitHub). + +Handles OAuth flows for user authentication (not social media posting). +""" +import secrets +import httpx +from typing import Optional, Tuple +from datetime import datetime, timedelta +from sqlalchemy.orm import Session +from fastapi import HTTPException, status + +from src.models.user import User +from src.models.account import Account +from src.models.session import Session as SessionModel +from src.services.auth_service import AuthService +from src.config import get_settings + +settings = get_settings() + + +class BetterAuthOAuthService: + """Service for Better Auth OAuth operations (Google, GitHub).""" + + # OAuth provider configurations + GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth" + GOOGLE_TOKEN_URL = "https://oauth2.googleapis.com/token" + GOOGLE_USERINFO_URL = "https://www.googleapis.com/oauth2/v2/userinfo" + + GITHUB_AUTH_URL = "https://github.com/login/oauth/authorize" + GITHUB_TOKEN_URL = "https://github.com/login/oauth/access_token" + GITHUB_USERINFO_URL = "https://api.github.com/user" + GITHUB_EMAIL_URL = "https://api.github.com/user/emails" + + @staticmethod + def generate_oauth_state() -> str: + """Generate secure random state for OAuth CSRF protection.""" + return secrets.token_urlsafe(32) + + @staticmethod + def get_google_auth_url(state: str, redirect_uri: str) -> str: + """ + Generate Google OAuth authorization URL. + + Args: + state: CSRF protection state + redirect_uri: Callback URL + + Returns: + Authorization URL + """ + params = { + "client_id": settings.google_client_id, + "redirect_uri": redirect_uri, + "response_type": "code", + "scope": "openid email profile", + "state": state, + "access_type": "offline", + "prompt": "consent" + } + query = "&".join(f"{k}={v}" for k, v in params.items()) + return f"{BetterAuthOAuthService.GOOGLE_AUTH_URL}?{query}" + + @staticmethod + def get_github_auth_url(state: str, redirect_uri: str) -> str: + """ + Generate GitHub OAuth authorization URL. + + Args: + state: CSRF protection state + redirect_uri: Callback URL + + Returns: + Authorization URL + """ + params = { + "client_id": settings.github_client_id, + "redirect_uri": redirect_uri, + "scope": "read:user user:email", + "state": state + } + query = "&".join(f"{k}={v}" for k, v in params.items()) + return f"{BetterAuthOAuthService.GITHUB_AUTH_URL}?{query}" + + @staticmethod + async def exchange_google_code(code: str, redirect_uri: str) -> dict: + """ + Exchange Google authorization code for tokens. + + Args: + code: Authorization code + redirect_uri: Callback URL + + Returns: + Token response with access_token, refresh_token, etc. + + Raises: + HTTPException: If token exchange fails + """ + async with httpx.AsyncClient() as client: + response = await client.post( + BetterAuthOAuthService.GOOGLE_TOKEN_URL, + data={ + "client_id": settings.google_client_id, + "client_secret": settings.google_client_secret, + "code": code, + "redirect_uri": redirect_uri, + "grant_type": "authorization_code" + } + ) + + if response.status_code != 200: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Failed to exchange authorization code" + ) + + return response.json() + + @staticmethod + async def exchange_github_code(code: str, redirect_uri: str) -> dict: + """ + Exchange GitHub authorization code for tokens. + + Args: + code: Authorization code + redirect_uri: Callback URL + + Returns: + Token response with access_token + + Raises: + HTTPException: If token exchange fails + """ + async with httpx.AsyncClient() as client: + response = await client.post( + BetterAuthOAuthService.GITHUB_TOKEN_URL, + data={ + "client_id": settings.github_client_id, + "client_secret": settings.github_client_secret, + "code": code, + "redirect_uri": redirect_uri + }, + headers={"Accept": "application/json"} + ) + + if response.status_code != 200: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Failed to exchange authorization code" + ) + + return response.json() + + @staticmethod + async def get_google_user_info(access_token: str) -> dict: + """ + Get Google user information. + + Args: + access_token: Google access token + + Returns: + User info with id, email, name, picture + + Raises: + HTTPException: If request fails + """ + async with httpx.AsyncClient() as client: + response = await client.get( + BetterAuthOAuthService.GOOGLE_USERINFO_URL, + headers={"Authorization": f"Bearer {access_token}"} + ) + + if response.status_code != 200: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Failed to get user info" + ) + + return response.json() + + @staticmethod + async def get_github_user_info(access_token: str) -> dict: + """ + Get GitHub user information. + + Args: + access_token: GitHub access token + + Returns: + User info with id, login, name, avatar_url, email + + Raises: + HTTPException: If request fails + """ + async with httpx.AsyncClient() as client: + # Get user profile + response = await client.get( + BetterAuthOAuthService.GITHUB_USERINFO_URL, + headers={"Authorization": f"Bearer {access_token}"} + ) + + if response.status_code != 200: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Failed to get user info" + ) + + user_data = response.json() + + # Get primary email if not public + if not user_data.get("email"): + email_response = await client.get( + BetterAuthOAuthService.GITHUB_EMAIL_URL, + headers={"Authorization": f"Bearer {access_token}"} + ) + if email_response.status_code == 200: + emails = email_response.json() + primary_email = next( + (e for e in emails if e.get("primary")), + emails[0] if emails else None + ) + if primary_email: + user_data["email"] = primary_email["email"] + + return user_data + + @staticmethod + def oauth_login_or_signup( + db: Session, + provider: str, + provider_account_id: str, + email: str, + name: Optional[str], + image: Optional[str], + access_token: str, + refresh_token: Optional[str], + expires_in: Optional[int], + ip_address: Optional[str] = None, + user_agent: Optional[str] = None + ) -> Tuple[User, SessionModel, bool]: + """ + Login or signup user via OAuth. + + Links OAuth account to existing user or creates new user. + + Args: + db: Database session + provider: OAuth provider ('google', 'github') + provider_account_id: Provider's user ID + email: User email + name: User name + image: User profile image URL + access_token: OAuth access token + refresh_token: OAuth refresh token (optional) + expires_in: Token expiration in seconds (optional) + ip_address: Client IP address + user_agent: Client user agent + + Returns: + Tuple of (User, Session, is_new_user) + """ + is_new_user = False + + # Check if account already linked + existing_account = db.query(Account).filter( + Account.provider == provider, + Account.provider_account_id == provider_account_id + ).first() + + if existing_account: + # Account exists, login user + user = existing_account.user + + # Update tokens + existing_account.access_token = access_token + existing_account.refresh_token = refresh_token + if expires_in: + existing_account.expires_at = datetime.utcnow() + timedelta(seconds=expires_in) + existing_account.updated_at = datetime.utcnow() + + # Update last login + user.last_login_at = datetime.utcnow() + + else: + # Check if user exists by email + user = db.query(User).filter(User.email == email.lower()).first() + + if user: + # User exists, link new OAuth account + pass + else: + # Create new user + user = User( + email=email.lower(), + name=name, + image=image, + email_verified=True, # OAuth emails are verified + password_hash=None, # OAuth-only user + is_admin=False + ) + db.add(user) + db.flush() + is_new_user = True + + # Create OAuth account link + expires_at = None + if expires_in: + expires_at = datetime.utcnow() + timedelta(seconds=expires_in) + + account = Account( + user_id=user.id, + provider=provider, + provider_account_id=provider_account_id, + access_token=access_token, + refresh_token=refresh_token, + expires_at=expires_at + ) + db.add(account) + + # Create session + token = AuthService.create_session_token(user.id) + session = SessionModel( + user_id=user.id, + token=token, + expires_at=datetime.utcnow() + timedelta(days=AuthService.SESSION_EXPIRY_DAYS), + ip_address=ip_address, + user_agent=user_agent + ) + db.add(session) + + db.commit() + db.refresh(user) + db.refresh(session) + + return user, session, is_new_user + + @staticmethod + def get_user_oauth_accounts(db: Session, user_id) -> list[Account]: + """ + Get all OAuth accounts for a user. + + Args: + db: Database session + user_id: User ID + + Returns: + List of OAuth accounts + """ + return db.query(Account).filter(Account.user_id == user_id).all() + + @staticmethod + def unlink_oauth_account(db: Session, user_id, provider: str) -> bool: + """ + Unlink an OAuth account from user. + + Args: + db: Database session + user_id: User ID + provider: OAuth provider to unlink + + Returns: + True if account was unlinked, False if not found + + Raises: + HTTPException: If trying to unlink last auth method + """ + # Check if user has password + user = db.query(User).filter(User.id == user_id).first() + if not user: + return False + + # Count OAuth accounts + oauth_count = db.query(Account).filter(Account.user_id == user_id).count() + + # Prevent unlinking if it's the only auth method + if not user.password_hash and oauth_count <= 1: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Cannot unlink last authentication method. Set a password first." + ) + + # Delete account + account = db.query(Account).filter( + Account.user_id == user_id, + Account.provider == provider + ).first() + + if not account: + return False + + db.delete(account) + db.commit() + return True diff --git a/phase-1-core-infra/backend/src/services/email_service.py b/phase-1-core-infra/backend/src/services/email_service.py new file mode 100644 index 0000000000000000000000000000000000000000..9e811979aa35735bb09ef525e95200049b24212e --- /dev/null +++ b/phase-1-core-infra/backend/src/services/email_service.py @@ -0,0 +1,295 @@ +""" +Email service for sending transactional emails. + +Uses SMTP for password reset and email verification. +""" +import smtplib +from email.mime.text import MIMEText +from email.mime.multipart import MIMEMultipart +from typing import Optional +import logging +from src.config import get_settings + +logger = logging.getLogger(__name__) +settings = get_settings() + + +class EmailService: + """Service for sending transactional emails.""" + + SMTP_HOST = settings.smtp_host + SMTP_PORT = settings.smtp_port + SMTP_USER = settings.smtp_user + SMTP_PASSWORD = settings.smtp_password + FROM_EMAIL = settings.smtp_from_email + FROM_NAME = settings.smtp_from_name + + @staticmethod + def send_email( + to_email: str, + subject: str, + html_content: str, + text_content: Optional[str] = None + ) -> bool: + """ + Send an email. + + Args: + to_email: Recipient email address + subject: Email subject + html_content: HTML email body + text_content: Plain text email body (optional) + + Returns: + True if sent successfully, False otherwise + """ + # Skip sending if SMTP not configured (development mode) + if not EmailService.SMTP_USER or not EmailService.SMTP_PASSWORD: + logger.warning(f"Email not sent (SMTP not configured): {subject} to {to_email}") + logger.info(f"Email content:\n{html_content}") + return True + + try: + # Create message + message = MIMEMultipart("alternative") + message["Subject"] = subject + message["From"] = f"{EmailService.FROM_NAME} <{EmailService.FROM_EMAIL}>" + message["To"] = to_email + + # Add text and HTML parts + if text_content: + text_part = MIMEText(text_content, "plain") + message.attach(text_part) + + html_part = MIMEText(html_content, "html") + message.attach(html_part) + + # Send email + with smtplib.SMTP(EmailService.SMTP_HOST, EmailService.SMTP_PORT) as server: + server.starttls() + server.login(EmailService.SMTP_USER, EmailService.SMTP_PASSWORD) + server.send_message(message) + + logger.info(f"Email sent successfully to {to_email}") + return True + + except Exception as e: + logger.error(f"Failed to send email to {to_email}: {str(e)}") + return False + + @staticmethod + def send_password_reset_email( + to_email: str, + reset_token: str, + frontend_url: str + ) -> bool: + """ + Send password reset email. + + Args: + to_email: User email address + reset_token: Password reset token + frontend_url: Frontend base URL + + Returns: + True if sent successfully + """ + reset_link = f"{frontend_url}/reset-password/confirm?token={reset_token}" + + subject = "Reset Your Password" + + html_content = f""" + <!DOCTYPE html> + <html> + <head> + <meta charset="utf-8"> + <style> + body {{ font-family: Arial, sans-serif; line-height: 1.6; color: #333; }} + .container {{ max-width: 600px; margin: 0 auto; padding: 20px; }} + .button {{ + display: inline-block; + padding: 12px 24px; + background-color: #007bff; + color: white; + text-decoration: none; + border-radius: 4px; + margin: 20px 0; + }} + .footer {{ margin-top: 30px; font-size: 12px; color: #666; }} + </style> + </head> + <body> + <div class="container"> + <h2>Reset Your Password</h2> + <p>You requested to reset your password for your AI Marketing Agency account.</p> + <p>Click the button below to reset your password:</p> + <a href="{reset_link}" class="button">Reset Password</a> + <p>Or copy and paste this link into your browser:</p> + <p style="word-break: break-all; color: #007bff;">{reset_link}</p> + <p>This link will expire in 1 hour.</p> + <p>If you didn't request a password reset, you can safely ignore this email.</p> + <div class="footer"> + <p>AI Marketing Agency</p> + </div> + </div> + </body> + </html> + """ + + text_content = f""" + Reset Your Password + + You requested to reset your password for your AI Marketing Agency account. + + Click this link to reset your password: + {reset_link} + + This link will expire in 1 hour. + + If you didn't request a password reset, you can safely ignore this email. + + AI Marketing Agency + """ + + return EmailService.send_email(to_email, subject, html_content, text_content) + + @staticmethod + def send_email_verification( + to_email: str, + verification_token: str, + frontend_url: str + ) -> bool: + """ + Send email verification email. + + Args: + to_email: User email address + verification_token: Email verification token + frontend_url: Frontend base URL + + Returns: + True if sent successfully + """ + verification_link = f"{frontend_url}/verify-email?token={verification_token}" + + subject = "Verify Your Email Address" + + html_content = f""" + <!DOCTYPE html> + <html> + <head> + <meta charset="utf-8"> + <style> + body {{ font-family: Arial, sans-serif; line-height: 1.6; color: #333; }} + .container {{ max-width: 600px; margin: 0 auto; padding: 20px; }} + .button {{ + display: inline-block; + padding: 12px 24px; + background-color: #28a745; + color: white; + text-decoration: none; + border-radius: 4px; + margin: 20px 0; + }} + .footer {{ margin-top: 30px; font-size: 12px; color: #666; }} + </style> + </head> + <body> + <div class="container"> + <h2>Verify Your Email Address</h2> + <p>Thank you for signing up for AI Marketing Agency!</p> + <p>Please verify your email address by clicking the button below:</p> + <a href="{verification_link}" class="button">Verify Email</a> + <p>Or copy and paste this link into your browser:</p> + <p style="word-break: break-all; color: #28a745;">{verification_link}</p> + <p>This link will expire in 24 hours.</p> + <div class="footer"> + <p>AI Marketing Agency</p> + </div> + </div> + </body> + </html> + """ + + text_content = f""" + Verify Your Email Address + + Thank you for signing up for AI Marketing Agency! + + Please verify your email address by clicking this link: + {verification_link} + + This link will expire in 24 hours. + + AI Marketing Agency + """ + + return EmailService.send_email(to_email, subject, html_content, text_content) + + @staticmethod + def send_welcome_email(to_email: str, name: Optional[str] = None) -> bool: + """ + Send welcome email to new user. + + Args: + to_email: User email address + name: User name (optional) + + Returns: + True if sent successfully + """ + greeting = f"Hi {name}," if name else "Hi," + + subject = "Welcome to AI Marketing Agency" + + html_content = f""" + <!DOCTYPE html> + <html> + <head> + <meta charset="utf-8"> + <style> + body {{ font-family: Arial, sans-serif; line-height: 1.6; color: #333; }} + .container {{ max-width: 600px; margin: 0 auto; padding: 20px; }} + .footer {{ margin-top: 30px; font-size: 12px; color: #666; }} + </style> + </head> + <body> + <div class="container"> + <h2>Welcome to AI Marketing Agency!</h2> + <p>{greeting}</p> + <p>Your account has been successfully created. You can now start creating and managing your marketing campaigns.</p> + <p>Here's what you can do:</p> + <ul> + <li>Generate AI-powered marketing content</li> + <li>Create and schedule social media posts</li> + <li>Manage multiple social media accounts</li> + <li>Track campaign performance</li> + </ul> + <p>If you have any questions, feel free to reach out to our support team.</p> + <div class="footer"> + <p>AI Marketing Agency</p> + </div> + </div> + </body> + </html> + """ + + text_content = f""" + Welcome to AI Marketing Agency! + + {greeting} + + Your account has been successfully created. You can now start creating and managing your marketing campaigns. + + Here's what you can do: + - Generate AI-powered marketing content + - Create and schedule social media posts + - Manage multiple social media accounts + - Track campaign performance + + If you have any questions, feel free to reach out to our support team. + + AI Marketing Agency + """ + + return EmailService.send_email(to_email, subject, html_content, text_content) diff --git a/phase-1-core-infra/backend/src/services/oauth_service.py b/phase-1-core-infra/backend/src/services/oauth_service.py new file mode 100644 index 0000000000000000000000000000000000000000..8b18ac00368a4b96a3d33ef823ea8fdf7c0aa34a --- /dev/null +++ b/phase-1-core-infra/backend/src/services/oauth_service.py @@ -0,0 +1,207 @@ +""" +OAuth service for social media account connections. +""" +from typing import Optional +from uuid import UUID +from datetime import datetime +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy import select +from fastapi import HTTPException, status +from src.models.social_account import SocialAccount, Platform, ConnectionStatus +from src.schemas.social_account import ConnectAccountRequest + + +class OAuthService: + """Service for OAuth operations and social account management.""" + + @staticmethod + async def connect_account( + db: AsyncSession, + user_id: UUID, + request: ConnectAccountRequest + ) -> SocialAccount: + """ + Connect (or reconnect) a social media account for the user. + Upserts by (user_id, platform) — one account per platform per user. + Updating the token on reconnect instead of raising a 409. + """ + # Check if user already has ANY account for this platform + result = await db.execute( + select(SocialAccount).where( + SocialAccount.user_id == user_id, + SocialAccount.platform == request.platform, + ) + ) + existing = result.scalar_one_or_none() + + if existing: + # Update token and re-activate + existing.access_token = request.access_token + existing.refresh_token = request.refresh_token + existing.token_expires_at = request.token_expires_at + existing.platform_user_id = request.platform_user_id + existing.connection_status = ConnectionStatus.ACTIVE + existing.last_sync_at = datetime.utcnow() + await db.commit() + await db.refresh(existing) + return existing + + # Create new account + social_account = SocialAccount( + user_id=user_id, + platform=request.platform, + platform_user_id=request.platform_user_id, + access_token=request.access_token, + refresh_token=request.refresh_token, + token_expires_at=request.token_expires_at, + connection_status=ConnectionStatus.ACTIVE, + last_sync_at=datetime.utcnow() + ) + db.add(social_account) + await db.commit() + await db.refresh(social_account) + return social_account + + @staticmethod + async def disconnect_account( + db: AsyncSession, + user_id: UUID, + account_id: UUID + ) -> None: + """ + Disconnect a social media account. + + Args: + db: Database session + user_id: User ID + account_id: Social account ID + + Raises: + HTTPException: If account not found or doesn't belong to user + """ + account = await OAuthService.get_by_id(db, account_id) + if not account: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="Social account not found" + ) + + if account.user_id != user_id: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail="Not authorized to disconnect this account" + ) + + await db.delete(account) + await db.commit() + + @staticmethod + async def get_user_accounts( + db: AsyncSession, + user_id: UUID + ) -> list[SocialAccount]: + """ + Get all social accounts for a user. + + Args: + db: Database session + user_id: User ID + + Returns: + List of social accounts + """ + result = await db.execute( + select(SocialAccount).where(SocialAccount.user_id == user_id) + ) + return list(result.scalars().all()) + + @staticmethod + async def get_by_id( + db: AsyncSession, + account_id: UUID + ) -> Optional[SocialAccount]: + """ + Get social account by ID. + + Args: + db: Database session + account_id: Social account ID + + Returns: + Social account if found, None otherwise + """ + result = await db.execute( + select(SocialAccount).where(SocialAccount.id == account_id) + ) + return result.scalar_one_or_none() + + @staticmethod + async def get_by_platform_user( + db: AsyncSession, + user_id: UUID, + platform: Platform, + platform_user_id: str + ) -> Optional[SocialAccount]: + """ + Get social account by platform and platform user ID. + + Args: + db: Database session + user_id: User ID + platform: Social media platform + platform_user_id: Platform-specific user ID + + Returns: + Social account if found, None otherwise + """ + result = await db.execute( + select(SocialAccount).where( + SocialAccount.user_id == user_id, + SocialAccount.platform == platform, + SocialAccount.platform_user_id == platform_user_id + ) + ) + return result.scalar_one_or_none() + + @staticmethod + async def update_tokens( + db: AsyncSession, + account_id: UUID, + access_token: str, + refresh_token: Optional[str] = None, + token_expires_at: Optional[datetime] = None + ) -> SocialAccount: + """ + Update OAuth tokens for a social account. + + Args: + db: Database session + account_id: Social account ID + access_token: New access token + refresh_token: New refresh token (optional) + token_expires_at: Token expiration time (optional) + + Returns: + Updated social account + + Raises: + HTTPException: If account not found + """ + account = await OAuthService.get_by_id(db, account_id) + if not account: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="Social account not found" + ) + + account.access_token = access_token + if refresh_token: + account.refresh_token = refresh_token + if token_expires_at: + account.token_expires_at = token_expires_at + account.last_sync_at = datetime.utcnow() + + await db.commit() + await db.refresh(account) + + return account diff --git a/phase-1-core-infra/backend/src/services/posts_service.py b/phase-1-core-infra/backend/src/services/posts_service.py new file mode 100644 index 0000000000000000000000000000000000000000..f82af7e5a42c7e0e551c57d0f6e913db3ca02da0 --- /dev/null +++ b/phase-1-core-infra/backend/src/services/posts_service.py @@ -0,0 +1,663 @@ +""" +Posts service: AI caption generation, publishing, scheduling, history. +""" +import logging +import uuid +from datetime import datetime +from typing import List, Optional + +from sqlalchemy.orm import Session, joinedload + +from src.config import settings +from src.models.draft_post import DraftPost, PostStatus +from src.models.post_log import PostLog, LogStatus +from src.models.social_account import Platform, SocialAccount, ConnectionStatus +from src.schemas.posts import PlatformResult + +logger = logging.getLogger(__name__) + + +def _extract_hashtags(text: str) -> List[str]: + """Extract hashtags from generated text.""" + words = text.split() + return [w for w in words if w.startswith("#")] + + +def generate_ai_content(topic: str, platforms: List[str], tone: str = "professional") -> str: + """ + Generate a professional LinkedIn post using OpenRouter (httpx, no SDK needed). + Falls back to a structured template if API key is missing. + """ + import httpx + + tone_instructions = { + "professional": "authoritative, insightful, and polished — like a senior industry expert sharing wisdom", + "casual": "friendly and conversational — like a colleague sharing a useful tip over coffee", + "inspiring": "motivational and uplifting — like a thought leader rallying their community", + "funny": "witty and light-hearted — using clever humor that still feels professional", + "educational": "clear and informative — breaking down complex ideas into simple, actionable points", + } + tone_desc = tone_instructions.get(tone, tone_instructions["professional"]) + + system_prompt = """You are an elite LinkedIn content strategist who has grown multiple B2B and personal brand accounts to 100k+ followers. +You write posts that get thousands of likes and comments because they are authentic, specific, and perfectly formatted for LinkedIn's algorithm. + +STRICT LinkedIn post rules — follow ALL of them: + +STRUCTURE: +- Line 1: POWER HOOK — one punchy sentence. Bold claim, counterintuitive stat, or a question that demands an answer. NO generic openers. +- Lines 2-4: Build tension or context (1-2 sentences per paragraph, blank lines between) +- Middle: The core insight, story, or data point — be specific, not vague +- Second-to-last paragraph: The actionable lesson or takeaway +- Last text line: A direct, specific question to drive comments (not "What do you think?") +- Final line: 4-6 TARGETED hashtags — mix of niche (#AIMarketing, #SaaSGrowth) and broad (#LinkedIn, #Marketing) + +STYLE RULES: +- Total length: 180-280 words +- Short paragraphs only — max 2 sentences, blank line between each +- First person, active voice throughout +- ZERO filler phrases: "In today's fast-paced world", "I'm excited to share", "Game-changer", "Leverage", "Synergy" +- Max 2 emojis total, only where they replace a word naturally +- Use numbers, percentages, timeframes when possible — specificity builds credibility +- The hashtags must be RELEVANT to the exact topic, not generic + +OUTPUT: Write ONLY the post. No intro, no "Here's your post:", no explanations.""" + + user_prompt = f"""Topic: {topic} +Tone: {tone_desc} + +Write the LinkedIn post now.""" + + if settings.openai_api_key: + try: + resp = httpx.post( + "https://openrouter.ai/api/v1/chat/completions", + headers={ + "Authorization": f"Bearer {settings.openai_api_key}", + "Content-Type": "application/json", + "HTTP-Referer": "http://localhost:3000", + }, + json={ + "model": "google/gemini-2.0-flash-001", + "messages": [ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": user_prompt}, + ], + "max_tokens": 700, + "temperature": 0.75, + }, + timeout=30, + ) + if resp.status_code == 200: + content = resp.json()["choices"][0]["message"]["content"].strip() + logger.info(f"OpenRouter generation successful ({len(content)} chars)") + return content + else: + logger.warning(f"OpenRouter generation failed: {resp.status_code} — {resp.text[:200]}") + except Exception as e: + logger.warning(f"OpenRouter generation failed: {e}") + + # Fallback — structured template + tone_emoji = {"professional": "💼", "casual": "💬", "inspiring": "🚀", "funny": "😄", "educational": "📚"}.get(tone, "✨") + hashtags = " ".join([f"#{w.lower()}" for w in topic.split()[:3] if len(w) > 3]) + return ( + f"{tone_emoji} {topic}\n\n" + f"Here's what most people get wrong about {topic}...\n\n" + f"The real insight is hidden in plain sight.\n\n" + f"Stop following the crowd. Start thinking differently.\n\n" + f"What's your take on this? Drop a comment below 👇\n\n" + f"{hashtags} #LinkedIn #Professional #Growth" + ) + + +class PostsService: + + def create_post( + self, + db: Session, + user_id: str, + topic: str, + platforms: List[str], + tone: str = "professional", + media_urls: Optional[List[str]] = None, + ) -> DraftPost: + """Generate AI content and save as draft post.""" + content = generate_ai_content(topic, platforms, tone) + + # Use first platform for the post record; multi-platform handled at publish time + primary_platform = Platform(platforms[0].upper()) if platforms else Platform.LINKEDIN + + post = DraftPost( + id=uuid.uuid4(), + user_id=uuid.UUID(str(user_id)), + social_account_id=None, # Set when publishing to specific account + content=content, + target_platform=primary_platform, + status=PostStatus.DRAFT, + created_at=datetime.utcnow(), + media_urls={"platforms": platforms, "urls": media_urls or [], "topic": topic, "tone": tone}, + ) + db.add(post) + db.commit() + db.refresh(post) + return post + + def save_draft( + self, + db: Session, + user_id: str, + content: str, + platforms: List[str], + ) -> DraftPost: + """Save manually written content as a draft post (no AI generation).""" + primary_platform = Platform(platforms[0].upper()) if platforms else Platform.LINKEDIN + post = DraftPost( + id=uuid.uuid4(), + user_id=uuid.UUID(str(user_id)), + social_account_id=None, + content=content, + target_platform=primary_platform, + status=PostStatus.DRAFT, + created_at=datetime.utcnow(), + media_urls={"platforms": platforms, "urls": []}, + ) + db.add(post) + db.commit() + db.refresh(post) + return post + + def publish_post( + self, + db: Session, + user_id: str, + post_id: str, + platforms: List[str], + media_urls: Optional[List[str]] = None, + ) -> List[PlatformResult]: + """ + Publish a draft post to the requested platforms. + Looks up connected social accounts and calls platform APIs. + """ + post = db.query(DraftPost).filter( + DraftPost.id == uuid.UUID(post_id), + DraftPost.user_id == uuid.UUID(user_id), + ).first() + + if not post: + raise ValueError(f"Post {post_id} not found") + + results: List[PlatformResult] = [] + + for platform_str in platforms: + try: + platform = Platform(platform_str.upper()) + except ValueError: + results.append(PlatformResult(platform=platform_str, success=False, error="Unsupported platform")) + continue + + # Find connected social account + social_account = db.query(SocialAccount).filter( + SocialAccount.user_id == uuid.UUID(user_id), + SocialAccount.platform == platform, + SocialAccount.connection_status == ConnectionStatus.ACTIVE, + ).first() + + if not social_account: + msg = f"No connected {platform_str} account found. Please connect your account first." + self._save_log(db, post.id, uuid.UUID(user_id), platform, LogStatus.FAILED, msg) + results.append(PlatformResult(platform=platform_str, success=False, error=msg)) + continue + + # Merge media from request + stored draft media + draft_media = post.media_urls.get("urls", []) if post.media_urls else [] + request_media = media_urls or [] + combined_media = request_media + [u for u in draft_media if u not in request_media] + + # Attempt platform publish + platform_post_id, publish_error = self._publish_to_platform( + platform=platform, + content=post.content, + media_urls=combined_media, + access_token=social_account.access_token, + platform_user_id=social_account.platform_user_id, + ) + + if platform_post_id: + self._save_log(db, post.id, uuid.UUID(user_id), platform, LogStatus.SUCCESS, + "Published successfully", platform_post_id) + results.append(PlatformResult(platform=platform_str, success=True, platform_post_id=platform_post_id)) + else: + msg = publish_error or f"Publishing to {platform_str} failed" + self._save_log(db, post.id, uuid.UUID(user_id), platform, LogStatus.FAILED, msg) + results.append(PlatformResult(platform=platform_str, success=False, error=msg)) + + # Update post status + if all(r.success for r in results): + post.status = PostStatus.PUBLISHED + post.published_at = datetime.utcnow() + elif any(r.success for r in results): + post.status = PostStatus.PUBLISHED # Partial success + post.published_at = datetime.utcnow() + else: + post.status = PostStatus.FAILED + + db.commit() + return results + + def schedule_post( + self, + db: Session, + user_id: str, + post_id: str, + scheduled_at: datetime, + platforms: List[str], + ) -> DraftPost: + """Schedule a draft post for future publishing.""" + post = db.query(DraftPost).filter( + DraftPost.id == uuid.UUID(post_id), + DraftPost.user_id == uuid.UUID(user_id), + ).first() + + if not post: + raise ValueError(f"Post {post_id} not found") + + post.status = PostStatus.SCHEDULED + post.scheduled_at = scheduled_at + # Store target platforms in media_urls metadata + if post.media_urls: + post.media_urls = {**post.media_urls, "scheduled_platforms": platforms} + else: + post.media_urls = {"scheduled_platforms": platforms} + + # Log the schedule action + for platform_str in platforms: + try: + platform = Platform(platform_str.upper()) + self._save_log( + db, post.id, uuid.UUID(user_id), platform, + LogStatus.SCHEDULED, + f"Scheduled for {scheduled_at.isoformat()}" + ) + except ValueError: + pass + + db.commit() + db.refresh(post) + return post + + def get_history( + self, + db: Session, + user_id: str, + page: int = 1, + per_page: int = 20, + ) -> dict: + """Get paginated post history with logs for a user.""" + offset = (page - 1) * per_page + + query = db.query(DraftPost).options(joinedload(DraftPost.logs)).filter( + DraftPost.user_id == uuid.UUID(user_id) + ).order_by(DraftPost.created_at.desc()) + + total = query.count() + posts = query.offset(offset).limit(per_page).all() + + items = [] + for post in posts: + meta = post.media_urls or {} + platforms = meta.get("platforms", [post.target_platform.value.lower() if post.target_platform else "unknown"]) + items.append({ + "id": str(post.id), + "content": post.content, + "status": post.status.value.lower() if post.status else "unknown", + "platforms": platforms, + "created_at": post.created_at.isoformat() if post.created_at else None, + "scheduled_at": post.scheduled_at.isoformat() if post.scheduled_at else None, + "published_at": post.published_at.isoformat() if post.published_at else None, + "logs": [log.to_dict() for log in post.logs], + }) + + return {"posts": items, "total": total, "page": page, "per_page": per_page} + + def _publish_to_platform( + self, + platform: Platform, + content: str, + media_urls: List[str], + access_token: str, + platform_user_id: str = "", + ) -> tuple[Optional[str], Optional[str]]: + """ + Call the appropriate social media API. + Returns (platform_post_id, error_message). + """ + try: + if platform == Platform.LINKEDIN: + return self._post_linkedin(content, media_urls, access_token, platform_user_id), None + except Exception as e: + logger.error(f"Platform publish error [{platform}]: {e}") + return None, str(e) + + def _read_media_file(self, media_url: str) -> tuple[bytes, str]: + """ + Read media file bytes from local uploads directory or via HTTP. + Returns (file_bytes, content_type). + """ + import httpx + from pathlib import Path + + # If it's a local upload URL, read directly from filesystem + if "/uploads/" in media_url: + filename = media_url.split("/uploads/")[-1] + file_path = Path(settings.upload_dir) / filename + if file_path.exists(): + data = file_path.read_bytes() + ext = file_path.suffix.lower() + type_map = { + ".jpg": "image/jpeg", ".jpeg": "image/jpeg", + ".png": "image/png", ".gif": "image/gif", ".webp": "image/webp", + ".mp4": "video/mp4", ".mov": "video/quicktime", + ".avi": "video/x-msvideo", ".webm": "video/webm", + } + return data, type_map.get(ext, "application/octet-stream") + + # Fallback: download via HTTP + resp = httpx.get(media_url, timeout=60, follow_redirects=True) + resp.raise_for_status() + content_type = resp.headers.get("content-type", "application/octet-stream").split(";")[0] + return resp.content, content_type + + def _linkedin_upload_image(self, person_urn: str, file_bytes: bytes, token: str) -> str: + """Upload image to LinkedIn and return image URN.""" + import httpx + headers = { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json", + "LinkedIn-Version": "202501", + } + + # Initialize upload + init_resp = httpx.post( + "https://api.linkedin.com/rest/images?action=initializeUpload", + json={"initializeUploadRequest": {"owner": person_urn}}, + headers=headers, + timeout=15, + ) + init_resp.raise_for_status() + value = init_resp.json()["value"] + upload_url = value["uploadUrl"] + image_urn = value["image"] + + # Upload binary + put_resp = httpx.put( + upload_url, + content=file_bytes, + headers={"Authorization": f"Bearer {token}", "Content-Type": "application/octet-stream"}, + timeout=120, + ) + put_resp.raise_for_status() + return image_urn + + def _linkedin_upload_video(self, person_urn: str, file_bytes: bytes, token: str) -> str: + """Upload video to LinkedIn and return video URN.""" + import httpx + headers = { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json", + "LinkedIn-Version": "202501", + } + + # Initialize upload + init_resp = httpx.post( + "https://api.linkedin.com/rest/videos?action=initializeUpload", + json={"initializeUploadRequest": { + "owner": person_urn, + "fileSizeBytes": len(file_bytes), + "uploadCaptions": False, + "uploadThumbnail": False, + }}, + headers=headers, + timeout=15, + ) + init_resp.raise_for_status() + value = init_resp.json()["value"] + upload_instructions = value["uploadInstructions"] + video_urn = value["video"] + upload_token = value.get("uploadToken", "") + + # Upload in chunks (each instruction has its own uploadUrl) + for instruction in upload_instructions: + chunk_start = instruction["firstByte"] + chunk_end = instruction["lastByte"] + 1 + chunk = file_bytes[chunk_start:chunk_end] + put_resp = httpx.put( + instruction["uploadUrl"], + content=chunk, + headers={"Authorization": f"Bearer {token}", "Content-Type": "application/octet-stream"}, + timeout=300, + ) + put_resp.raise_for_status() + + # Finalize upload + fin_resp = httpx.post( + "https://api.linkedin.com/rest/videos?action=finalizeUpload", + json={"finalizeUploadRequest": {"video": video_urn, "uploadToken": upload_token, "uploadedPartIds": []}}, + headers=headers, + timeout=30, + ) + fin_resp.raise_for_status() + return video_urn + + def _linkedin_register_image(self, person_urn: str, file_bytes: bytes, token: str) -> str: + """Upload image via legacy /v2/assets API — returns digitalmediaAsset URN for ugcPosts.""" + import httpx + headers = { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json", + "X-Restli-Protocol-Version": "2.0.0", + } + + # Step 1: Register upload + reg_resp = httpx.post( + "https://api.linkedin.com/v2/assets?action=registerUpload", + headers=headers, + json={ + "registerUploadRequest": { + "recipes": ["urn:li:digitalmediaRecipe:feedshare-image"], + "owner": person_urn, + "serviceRelationships": [{ + "relationshipType": "OWNER", + "identifier": "urn:li:userGeneratedContent", + }], + } + }, + timeout=15, + ) + reg_resp.raise_for_status() + value = reg_resp.json()["value"] + upload_url = value["uploadMechanism"]["com.linkedin.digitalmedia.uploading.MediaUploadHttpRequest"]["uploadUrl"] + asset_urn = value["asset"] + + # Step 2: PUT image bytes + put_resp = httpx.put( + upload_url, + content=file_bytes, + headers={"Authorization": f"Bearer {token}", "Content-Type": "application/octet-stream"}, + timeout=120, + ) + put_resp.raise_for_status() + return asset_urn + + def _post_linkedin(self, content: str, media_urls: List[str], token: str, platform_user_id: str = "") -> Optional[str]: + """Post to LinkedIn using UGC Posts API + legacy asset upload for images.""" + import httpx + + headers = { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json", + "X-Restli-Protocol-Version": "2.0.0", + } + + # Build person URN — use stored platform_user_id if it's a real LinkedIn member ID. + # Hash-based IDs (prefix "li_") were stored when member ID could not be fetched at connect time. + member_id = platform_user_id if (platform_user_id and not platform_user_id.startswith("li_")) else None + + if not member_id: + # Try OpenID /v2/userinfo — works when token has openid scope + try: + ui_resp = httpx.get( + "https://api.linkedin.com/v2/userinfo", + headers={"Authorization": f"Bearer {token}"}, + timeout=15, + ) + if ui_resp.status_code == 200: + member_id = ui_resp.json().get("sub", "") or ui_resp.json().get("id", "") + except Exception: + pass + + if not member_id: + # Fallback: /v2/me — works when token has r_liteprofile scope + try: + me_resp = httpx.get( + "https://api.linkedin.com/v2/me", + headers={"Authorization": f"Bearer {token}"}, + timeout=15, + ) + if me_resp.status_code == 200: + member_id = me_resp.json().get("id", "") + except Exception: + pass + + if not member_id: + raise Exception( + "Could not determine your LinkedIn member ID. " + "Please disconnect and reconnect your LinkedIn account." + ) + + person_urn = f"urn:li:person:{member_id}" + + # Upload media + share_media = [] + media_category = "NONE" + + for url in media_urls: + try: + file_bytes, content_type = self._read_media_file(url) + logger.info(f"Uploading to LinkedIn: {url} ({content_type}, {len(file_bytes)} bytes)") + if content_type.startswith("video/"): + video_urn = self._linkedin_upload_video(person_urn, file_bytes, token) + share_media.append({"status": "READY", "media": video_urn}) + media_category = "VIDEO" + else: + asset_urn = self._linkedin_register_image(person_urn, file_bytes, token) + share_media.append({"status": "READY", "media": asset_urn, + "title": {"text": ""}, "description": {"text": ""}}) + media_category = "IMAGE" + logger.info(f"Media uploaded successfully") + except Exception as e: + logger.error(f"LinkedIn media upload failed for {url}: {e}") + + # Build UGC post + share_content: dict = { + "shareCommentary": {"text": content}, + "shareMediaCategory": media_category, + } + if share_media: + share_content["media"] = share_media + + payload = { + "author": person_urn, + "lifecycleState": "PUBLISHED", + "specificContent": {"com.linkedin.ugc.ShareContent": share_content}, + "visibility": {"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"}, + } + + logger.info(f"Posting to LinkedIn ugcPosts (media_count={len(share_media)})") + resp = httpx.post("https://api.linkedin.com/v2/ugcPosts", json=payload, headers=headers, timeout=30) + logger.info(f"LinkedIn ugcPosts response: {resp.status_code} — {resp.text[:300]}") + resp.raise_for_status() + return resp.headers.get("x-restli-id", str(uuid.uuid4())) + + def _post_facebook(self, content: str, media_urls: List[str], token: str) -> Optional[str]: + import httpx + # Get page ID + accounts_resp = httpx.get(f"https://graph.facebook.com/me/accounts?access_token={token}", timeout=15) + if accounts_resp.status_code != 200 or not accounts_resp.json().get("data"): + raise Exception("No Facebook pages found") + page = accounts_resp.json()["data"][0] + page_id = page["id"] + page_token = page["access_token"] + + params = {"message": content, "access_token": page_token} + if media_urls: + params["link"] = media_urls[0] + resp = httpx.post(f"https://graph.facebook.com/{page_id}/feed", params=params, timeout=15) + resp.raise_for_status() + return resp.json().get("id") + + def _post_instagram(self, content: str, media_urls: List[str], token: str) -> Optional[str]: + import httpx + # Instagram requires a media URL for posts + if not media_urls: + raise Exception("Instagram requires at least one image URL") + + # Get IG business account ID + me_resp = httpx.get( + f"https://graph.facebook.com/me?fields=instagram_business_account&access_token={token}", + timeout=15 + ) + ig_id = me_resp.json().get("instagram_business_account", {}).get("id") + if not ig_id: + raise Exception("No Instagram Business account connected") + + # Create media container + container_resp = httpx.post( + f"https://graph.facebook.com/{ig_id}/media", + params={"image_url": media_urls[0], "caption": content, "access_token": token}, + timeout=15 + ) + container_resp.raise_for_status() + container_id = container_resp.json()["id"] + + # Publish container + pub_resp = httpx.post( + f"https://graph.facebook.com/{ig_id}/media_publish", + params={"creation_id": container_id, "access_token": token}, + timeout=15 + ) + pub_resp.raise_for_status() + return pub_resp.json().get("id") + + def _post_twitter(self, content: str, media_urls: List[str], token: str) -> Optional[str]: + import httpx + headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"} + payload = {"text": content[:280]} + resp = httpx.post("https://api.twitter.com/2/tweets", json=payload, headers=headers, timeout=15) + resp.raise_for_status() + return resp.json().get("data", {}).get("id") + + def _save_log( + self, + db: Session, + post_id, + user_id, + platform: Platform, + status: LogStatus, + message: str, + platform_post_id: str = None, + ): + log = PostLog( + id=uuid.uuid4(), + post_id=post_id, + user_id=user_id, + platform=platform.value if hasattr(platform, 'value') else str(platform), + status=status.value if hasattr(status, 'value') else str(status), + message=message, + platform_post_id=platform_post_id, + created_at=datetime.utcnow(), + ) + db.add(log) + db.flush() + + +posts_service = PostsService() diff --git a/phase-1-core-infra/backend/src/services/session_service.py b/phase-1-core-infra/backend/src/services/session_service.py new file mode 100644 index 0000000000000000000000000000000000000000..e4312bae5e59683557668028976f569d840b82ba --- /dev/null +++ b/phase-1-core-infra/backend/src/services/session_service.py @@ -0,0 +1,123 @@ +""" +Session management service for Better Auth. + +Handles session verification, refresh, listing, and revocation. +""" +import uuid +from datetime import datetime, timedelta, timezone +from typing import List, Optional +from sqlalchemy.orm import Session as DBSession + +from src.models.session import Session as SessionModel +from src.models.user import User + + +class SessionService: + """ + Service for session management operations. + """ + + @staticmethod + def get_user_sessions(db: DBSession, user_id: uuid.UUID) -> List[SessionModel]: + """ + Get all active sessions for a user. + + Args: + db: Database session + user_id: User UUID + + Returns: + List of active sessions + """ + now = datetime.now(timezone.utc) + sessions = db.query(SessionModel).filter( + SessionModel.user_id == user_id, + SessionModel.expires_at > now + ).order_by(SessionModel.created_at.desc()).all() + + return sessions + + @staticmethod + def revoke_session(db: DBSession, session_id: uuid.UUID, user_id: uuid.UUID) -> bool: + """ + Revoke a specific session for a user. + + Args: + db: Database session + session_id: Session UUID to revoke + user_id: User UUID (for authorization) + + Returns: + True if session was revoked, False if not found or unauthorized + """ + session = db.query(SessionModel).filter( + SessionModel.id == session_id, + SessionModel.user_id == user_id + ).first() + + if not session: + return False + + db.delete(session) + db.commit() + return True + + @staticmethod + def revoke_all_sessions(db: DBSession, user_id: uuid.UUID, except_token: Optional[str] = None) -> int: + """ + Revoke all sessions for a user, optionally except the current one. + + Args: + db: Database session + user_id: User UUID + except_token: Optional token to keep active (current session) + + Returns: + Number of sessions revoked + """ + query = db.query(SessionModel).filter(SessionModel.user_id == user_id) + + if except_token: + query = query.filter(SessionModel.token != except_token) + + count = query.delete() + db.commit() + return count + + @staticmethod + def cleanup_expired_sessions(db: DBSession) -> int: + """ + Remove all expired sessions from database. + + Args: + db: Database session + + Returns: + Number of sessions deleted + """ + now = datetime.now(timezone.utc) + count = db.query(SessionModel).filter( + SessionModel.expires_at < now + ).delete() + db.commit() + return count + + @staticmethod + def get_session_by_id(db: DBSession, session_id: uuid.UUID, user_id: uuid.UUID) -> Optional[SessionModel]: + """ + Get a specific session by ID for a user. + + Args: + db: Database session + session_id: Session UUID + user_id: User UUID (for authorization) + + Returns: + Session if found and belongs to user, None otherwise + """ + session = db.query(SessionModel).filter( + SessionModel.id == session_id, + SessionModel.user_id == user_id + ).first() + + return session diff --git a/phase-1-core-infra/backend/src/services/user_service.py b/phase-1-core-infra/backend/src/services/user_service.py new file mode 100644 index 0000000000000000000000000000000000000000..029be2e64ae30a7894b87b35dc37844286ec24b9 --- /dev/null +++ b/phase-1-core-infra/backend/src/services/user_service.py @@ -0,0 +1,57 @@ +""" +User service for user management operations. +""" +from typing import Optional +from uuid import UUID +from datetime import datetime +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy import select +from src.models.user import User + + +class UserService: + """Service for user management.""" + + @staticmethod + async def get_by_email(db: AsyncSession, email: str) -> Optional[User]: + """ + Get user by email. + + Args: + db: Database session + email: User email + + Returns: + User if found, None otherwise + """ + result = await db.execute(select(User).where(User.email == email)) + return result.scalar_one_or_none() + + @staticmethod + async def get_by_id(db: AsyncSession, user_id: UUID) -> Optional[User]: + """ + Get user by ID. + + Args: + db: Database session + user_id: User ID + + Returns: + User if found, None otherwise + """ + result = await db.execute(select(User).where(User.id == user_id)) + return result.scalar_one_or_none() + + @staticmethod + async def update_last_login(db: AsyncSession, user_id: UUID) -> None: + """ + Update user's last login timestamp. + + Args: + db: Database session + user_id: User ID + """ + user = await UserService.get_by_id(db, user_id) + if user: + user.last_login_at = datetime.utcnow() + await db.commit() diff --git a/phase-1-core-infra/backend/src/services/verification_service.py b/phase-1-core-infra/backend/src/services/verification_service.py new file mode 100644 index 0000000000000000000000000000000000000000..66a85472bc420fef8678a80aa8af50fd9d5568d9 --- /dev/null +++ b/phase-1-core-infra/backend/src/services/verification_service.py @@ -0,0 +1,326 @@ +""" +Password reset and email verification service. +""" +import secrets +from datetime import datetime, timedelta +from typing import Optional +from sqlalchemy.orm import Session +from fastapi import HTTPException, status + +from src.models.user import User +from src.models.verification_token import VerificationToken +from src.auth.password import PasswordHasher +from src.services.email_service import EmailService +from src.config import get_settings + +settings = get_settings() + + +class VerificationService: + """Service for email verification and password reset.""" + + # Token expiration times + PASSWORD_RESET_EXPIRY_HOURS = 1 + EMAIL_VERIFICATION_EXPIRY_HOURS = 24 + + @staticmethod + def generate_token() -> str: + """Generate secure random token.""" + return secrets.token_urlsafe(32) + + @staticmethod + def create_password_reset_token( + db: Session, + email: str + ) -> Optional[str]: + """ + Create password reset token for user. + + Args: + db: Database session + email: User email address + + Returns: + Reset token if user exists, None otherwise + """ + # Find user + user = db.query(User).filter(User.email == email.lower()).first() + if not user: + # Don't reveal if email exists + return None + + # Check if user has password (OAuth-only users can't reset password) + if not user.password_hash: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="This account uses OAuth login. Please sign in with your OAuth provider." + ) + + # Delete any existing password reset tokens for this user + db.query(VerificationToken).filter( + VerificationToken.identifier == email.lower(), + VerificationToken.type == "password_reset" + ).delete() + + # Create new token + token = VerificationService.generate_token() + expires_at = datetime.utcnow() + timedelta(hours=VerificationService.PASSWORD_RESET_EXPIRY_HOURS) + + verification_token = VerificationToken( + identifier=email.lower(), + token=token, + expires_at=expires_at, + type="password_reset" + ) + db.add(verification_token) + db.commit() + + return token + + @staticmethod + def verify_password_reset_token( + db: Session, + token: str + ) -> Optional[str]: + """ + Verify password reset token and return email. + + Args: + db: Database session + token: Reset token + + Returns: + User email if token valid, None otherwise + """ + verification_token = db.query(VerificationToken).filter( + VerificationToken.token == token, + VerificationToken.type == "password_reset" + ).first() + + if not verification_token: + return None + + # Check if expired + if verification_token.is_expired(): + db.delete(verification_token) + db.commit() + return None + + return verification_token.identifier + + @staticmethod + def reset_password( + db: Session, + token: str, + new_password: str + ) -> bool: + """ + Reset user password using token. + + Args: + db: Database session + token: Reset token + new_password: New password + + Returns: + True if password reset successful + + Raises: + HTTPException: If token invalid or password weak + """ + # Verify token + email = VerificationService.verify_password_reset_token(db, token) + if not email: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Invalid or expired reset token" + ) + + # Validate password strength + from src.services.auth_service import AuthService + if not AuthService.validate_password_strength(new_password): + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Password must be at least 8 characters with uppercase, lowercase, and number" + ) + + # Find user + user = db.query(User).filter(User.email == email).first() + if not user: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="User not found" + ) + + # Update password + user.password_hash = PasswordHasher.hash_password(new_password) + user.updated_at = datetime.utcnow() + + # Delete reset token + db.query(VerificationToken).filter( + VerificationToken.token == token + ).delete() + + # Invalidate all existing sessions (force re-login) + from src.models.session import Session as SessionModel + db.query(SessionModel).filter( + SessionModel.user_id == user.id + ).delete() + + db.commit() + + return True + + @staticmethod + def create_email_verification_token( + db: Session, + user_id, + email: str + ) -> str: + """ + Create email verification token. + + Args: + db: Database session + user_id: User ID + email: User email address + + Returns: + Verification token + """ + # Delete any existing verification tokens for this user + db.query(VerificationToken).filter( + VerificationToken.identifier == str(user_id), + VerificationToken.type == "email_verification" + ).delete() + + # Create new token + token = VerificationService.generate_token() + expires_at = datetime.utcnow() + timedelta(hours=VerificationService.EMAIL_VERIFICATION_EXPIRY_HOURS) + + verification_token = VerificationToken( + identifier=str(user_id), + token=token, + expires_at=expires_at, + type="email_verification" + ) + db.add(verification_token) + db.commit() + + return token + + @staticmethod + def verify_email( + db: Session, + token: str + ) -> bool: + """ + Verify user email using token. + + Args: + db: Database session + token: Verification token + + Returns: + True if email verified successfully + + Raises: + HTTPException: If token invalid or expired + """ + verification_token = db.query(VerificationToken).filter( + VerificationToken.token == token, + VerificationToken.type == "email_verification" + ).first() + + if not verification_token: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Invalid verification token" + ) + + # Check if expired + if verification_token.is_expired(): + db.delete(verification_token) + db.commit() + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Verification token has expired" + ) + + # Find user + from uuid import UUID + user_id = UUID(verification_token.identifier) + user = db.query(User).filter(User.id == user_id).first() + + if not user: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="User not found" + ) + + # Mark email as verified + user.email_verified = True + user.updated_at = datetime.utcnow() + + # Delete verification token + db.delete(verification_token) + + db.commit() + + return True + + @staticmethod + def send_password_reset_email( + db: Session, + email: str + ) -> bool: + """ + Send password reset email. + + Args: + db: Database session + email: User email address + + Returns: + True (always, to prevent email enumeration) + """ + # Create token + token = VerificationService.create_password_reset_token(db, email) + + # Send email if user exists + if token: + EmailService.send_password_reset_email( + to_email=email, + reset_token=token, + frontend_url=settings.better_auth_url + ) + + # Always return True to prevent email enumeration + return True + + @staticmethod + def send_verification_email( + db: Session, + user_id, + email: str + ) -> bool: + """ + Send email verification email. + + Args: + db: Database session + user_id: User ID + email: User email address + + Returns: + True if sent successfully + """ + # Create token + token = VerificationService.create_email_verification_token(db, user_id, email) + + # Send email + return EmailService.send_email_verification( + to_email=email, + verification_token=token, + frontend_url=settings.better_auth_url + ) diff --git a/phase-1-core-infra/backend/src/utils/__init__.py b/phase-1-core-infra/backend/src/utils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/phase-1-core-infra/backend/src/utils/encryption.py b/phase-1-core-infra/backend/src/utils/encryption.py new file mode 100644 index 0000000000000000000000000000000000000000..707ee53dcdd98aa99ae6289b576d8f1166d665e0 --- /dev/null +++ b/phase-1-core-infra/backend/src/utils/encryption.py @@ -0,0 +1,35 @@ +""" +Token encryption utilities using Fernet (AES-256). +Provides transparent encryption/decryption for OAuth tokens. +""" +from cryptography.fernet import Fernet +from sqlalchemy import TypeDecorator, String +from src.config import get_settings + +settings = get_settings() + + +class EncryptedString(TypeDecorator): + """ + SQLAlchemy TypeDecorator for transparent encryption/decryption. + Uses Fernet (AES-256) for symmetric encryption. + """ + impl = String + cache_ok = True + + def __init__(self, *args, **kwargs): + """Initialize with encryption key from settings.""" + self.fernet = Fernet(settings.encryption_key.encode()) + super().__init__(*args, **kwargs) + + def process_bind_param(self, value, dialect): + """Encrypt value before storing in database.""" + if value is not None: + return self.fernet.encrypt(value.encode()).decode() + return value + + def process_result_value(self, value, dialect): + """Decrypt value when retrieving from database.""" + if value is not None: + return self.fernet.decrypt(value.encode()).decode() + return value diff --git a/phase-1-core-infra/backend/src/utils/security.py b/phase-1-core-infra/backend/src/utils/security.py new file mode 100644 index 0000000000000000000000000000000000000000..b537c1cddd7642dc603309fe4256418dbe79e743 --- /dev/null +++ b/phase-1-core-infra/backend/src/utils/security.py @@ -0,0 +1,81 @@ +""" +Security utilities for password hashing and JWT token management. +""" +from datetime import datetime, timedelta +from typing import Optional +from passlib.context import CryptContext +from jose import JWTError, jwt +from src.config import get_settings + +settings = get_settings() + +# Password hashing context with bcrypt (12 rounds) +pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto", bcrypt__rounds=12) + + +def hash_password(password: str) -> str: + """ + Hash a password using bcrypt with 12 rounds. + + Args: + password: Plain text password + + Returns: + Hashed password string + """ + return pwd_context.hash(password) + + +def verify_password(plain_password: str, hashed_password: str) -> bool: + """ + Verify a password against its hash. + + Args: + plain_password: Plain text password to verify + hashed_password: Hashed password to compare against + + Returns: + True if password matches, False otherwise + """ + return pwd_context.verify(plain_password, hashed_password) + + +def create_access_token(data: dict, expires_delta: Optional[timedelta] = None) -> str: + """ + Create a JWT access token. + + Args: + data: Dictionary of claims to encode in the token + expires_delta: Optional expiration time delta (defaults to 30 days) + + Returns: + Encoded JWT token string + """ + to_encode = data.copy() + + if expires_delta: + expire = datetime.utcnow() + expires_delta + else: + expire = datetime.utcnow() + timedelta(days=settings.jwt_expiration_days) + + to_encode.update({"exp": expire}) + encoded_jwt = jwt.encode(to_encode, settings.jwt_secret, algorithm=settings.jwt_algorithm) + + return encoded_jwt + + +def decode_access_token(token: str) -> Optional[dict]: + """ + Decode and verify a JWT access token. + + Args: + token: JWT token string to decode + + Returns: + Dictionary of claims if valid, None if invalid + """ + try: + payload = jwt.decode(token, settings.jwt_secret, algorithms=[settings.jwt_algorithm]) + return payload + except JWTError: + return None diff --git a/phase-1-core-infra/backend/tests/test_placeholder.py b/phase-1-core-infra/backend/tests/test_placeholder.py new file mode 100644 index 0000000000000000000000000000000000000000..8ca555bef6953b02e219a49dcf2bbd4107f3fc36 --- /dev/null +++ b/phase-1-core-infra/backend/tests/test_placeholder.py @@ -0,0 +1,5 @@ +def test_placeholder(): + """ + This is a placeholder test to ensure the test suite runs. + """ + assert True diff --git a/phase-1-core-infra/frontend/.eslintrc.json b/phase-1-core-infra/frontend/.eslintrc.json new file mode 100644 index 0000000000000000000000000000000000000000..bffb357a7122523ec94045523758c4b825b448ef --- /dev/null +++ b/phase-1-core-infra/frontend/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/phase-1-core-infra/frontend/.next/BUILD_ID b/phase-1-core-infra/frontend/.next/BUILD_ID new file mode 100644 index 0000000000000000000000000000000000000000..f81eb60c0aa79e3f2ee84243084cc34d1712c514 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/BUILD_ID @@ -0,0 +1 @@ +_ZCPiTZXfhnfeDdShwrwt \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/app-build-manifest.json b/phase-1-core-infra/frontend/.next/app-build-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..4a230997a132f94fae26c63d1b89b6d2eba0c3e3 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/app-build-manifest.json @@ -0,0 +1,190 @@ +{ + "pages": { + "/_not-found/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/_not-found/page-6ee23c7ed5628bce.js" + ], + "/layout": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/css/f4cab49cfd8d571c.css", + "static/chunks/137-ba5a6ccb277ff542.js", + "static/chunks/418-9f199b27072bf0cb.js", + "static/chunks/app/layout-b73b0bd7fc73fea9.js" + ], + "/admin/costs/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/137-ba5a6ccb277ff542.js", + "static/chunks/app/admin/costs/page-7cb12944f09e5838.js" + ], + "/admin/users/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/137-ba5a6ccb277ff542.js", + "static/chunks/app/admin/users/page-034c80a4b8d35233.js" + ], + "/admin/health/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/137-ba5a6ccb277ff542.js", + "static/chunks/app/admin/health/page-cad3cf2462d86965.js" + ], + "/admin/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/137-ba5a6ccb277ff542.js", + "static/chunks/680-fccc5c9a67328074.js", + "static/chunks/app/admin/page-d1ec05d5b8710965.js" + ], + "/auth/callback/[provider]/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/auth/callback/[provider]/page-451299b53c301e5c.js" + ], + "/auth/login/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/972-5b96c0591eeae4ee.js", + "static/chunks/app/auth/login/page-09b1f835b0c3b6ee.js" + ], + "/auth/register/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/972-5b96c0591eeae4ee.js", + "static/chunks/137-ba5a6ccb277ff542.js", + "static/chunks/app/auth/register/page-d5fe300710df2f7a.js" + ], + "/login/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/login/page-93b97e39fae07a01.js" + ], + "/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/972-5b96c0591eeae4ee.js", + "static/chunks/app/page-c7c752bd2b96cbce.js" + ], + "/pricing/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/972-5b96c0591eeae4ee.js", + "static/chunks/app/pricing/page-52ae24507cae00b5.js" + ], + "/reset-password/confirm/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/972-5b96c0591eeae4ee.js", + "static/chunks/app/reset-password/confirm/page-0ab3fa79ecb76936.js" + ], + "/reset-password/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/reset-password/page-2bd4d7372a6a3ff5.js" + ], + "/signup/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/signup/page-4f04e1f363d18921.js" + ], + "/verify-email/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/verify-email/page-b95eba44bbec08c4.js" + ], + "/dashboard/connected-accounts/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/dashboard/connected-accounts/page-00a803a131eed5fc.js" + ], + "/dashboard/layout": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/972-5b96c0591eeae4ee.js", + "static/chunks/137-ba5a6ccb277ff542.js", + "static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js" + ], + "/dashboard/post-history/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/972-5b96c0591eeae4ee.js", + "static/chunks/app/dashboard/post-history/page-5815ebeb70f0d388.js" + ], + "/dashboard/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/972-5b96c0591eeae4ee.js", + "static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js" + ], + "/dashboard/whatsapp-settings/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/dashboard/whatsapp-settings/page-333c26009cac887b.js" + ], + "/dashboard/video-library/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/dashboard/video-library/page-01c2727a9c990a50.js" + ], + "/dashboard/insights/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/dashboard/insights/page-b15066396f5f685e.js" + ], + "/dashboard/content/create/page": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js", + "static/chunks/app/dashboard/content/create/page-0c645fe1447e610f.js" + ] + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/app-path-routes-manifest.json b/phase-1-core-infra/frontend/.next/app-path-routes-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..6dacd5e65418c81dae268e493f543158ab80863f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/app-path-routes-manifest.json @@ -0,0 +1 @@ +{"/_not-found/page":"/_not-found","/admin/costs/page":"/admin/costs","/admin/users/page":"/admin/users","/admin/health/page":"/admin/health","/api/auth/[...nextauth]/route":"/api/auth/[...nextauth]","/admin/page":"/admin","/api/auth/callback/[provider]/route":"/api/auth/callback/[provider]","/api/health/route":"/api/health","/auth/callback/[provider]/page":"/auth/callback/[provider]","/auth/login/page":"/auth/login","/auth/register/page":"/auth/register","/login/page":"/login","/page":"/","/pricing/page":"/pricing","/reset-password/confirm/page":"/reset-password/confirm","/reset-password/page":"/reset-password","/signup/page":"/signup","/verify-email/page":"/verify-email","/dashboard/connected-accounts/page":"/dashboard/connected-accounts","/dashboard/post-history/page":"/dashboard/post-history","/dashboard/page":"/dashboard","/dashboard/whatsapp-settings/page":"/dashboard/whatsapp-settings","/dashboard/video-library/page":"/dashboard/video-library","/dashboard/insights/page":"/dashboard/insights","/dashboard/content/create/page":"/dashboard/content/create"} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/build-manifest.json b/phase-1-core-infra/frontend/.next/build-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..bc06093ae0353bf4301eec5f4f2d97fcdf7b5144 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/build-manifest.json @@ -0,0 +1,32 @@ +{ + "polyfillFiles": [ + "static/chunks/polyfills-42372ed130431b0a.js" + ], + "devFiles": [], + "ampDevFiles": [], + "lowPriorityFiles": [ + "static/_ZCPiTZXfhnfeDdShwrwt/_buildManifest.js", + "static/_ZCPiTZXfhnfeDdShwrwt/_ssgManifest.js" + ], + "rootMainFiles": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/fd9d1056-e12ba778587e956e.js", + "static/chunks/117-b80dbde68ec4014e.js", + "static/chunks/main-app-fb7ccb699bc25929.js" + ], + "pages": { + "/_app": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/framework-b370f160bb96059c.js", + "static/chunks/main-51c785e6adf07474.js", + "static/chunks/pages/_app-15e2daefa259f0b5.js" + ], + "/_error": [ + "static/chunks/webpack-02761f80ef09b837.js", + "static/chunks/framework-b370f160bb96059c.js", + "static/chunks/main-51c785e6adf07474.js", + "static/chunks/pages/_error-28b803cb2479b966.js" + ] + }, + "ampFirstPages": [] +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/export-detail.json b/phase-1-core-infra/frontend/.next/export-detail.json new file mode 100644 index 0000000000000000000000000000000000000000..87c7a2838a1161273d04dc13e34b2ccd55054d19 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/export-detail.json @@ -0,0 +1 @@ +{"version":1,"outDirectory":"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\.next\\export","success":true} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/package.json b/phase-1-core-infra/frontend/.next/package.json new file mode 100644 index 0000000000000000000000000000000000000000..7156107e3aec28c4f7cea055e4cd67b6cc1e828c --- /dev/null +++ b/phase-1-core-infra/frontend/.next/package.json @@ -0,0 +1 @@ +{"type": "commonjs"} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/react-loadable-manifest.json b/phase-1-core-infra/frontend/.next/react-loadable-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..9e26dfeeb6e641a33dae4961196235bdb965b21b --- /dev/null +++ b/phase-1-core-infra/frontend/.next/react-loadable-manifest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/required-server-files.json b/phase-1-core-infra/frontend/.next/required-server-files.json new file mode 100644 index 0000000000000000000000000000000000000000..8f1e4001b4847cd6a1e2df6f21b0d479ae48306f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/required-server-files.json @@ -0,0 +1 @@ +{"version":1,"config":{"env":{"NEXT_PUBLIC_API_URL":"http://127.0.0.1:8000"},"webpack":null,"eslint":{"ignoreDuringBuilds":true},"typescript":{"ignoreBuildErrors":true,"tsconfigPath":"tsconfig.json"},"distDir":".next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":["localhost"],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":true,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"experimental":{"multiZoneDraftMode":false,"prerenderEarlyExit":false,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":7,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizeServerReact":true,"useEarlyImport":false,"staleTimes":{"dynamic":30,"static":300},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/api/v1/:path*","destination":"http://127.0.0.1:8000/api/v1/:path*"}],"fallback":[]}},"appDir":"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend","relativeAppDir":"","files":[".next\\routes-manifest.json",".next\\server\\pages-manifest.json",".next\\build-manifest.json",".next\\prerender-manifest.json",".next\\server\\middleware-manifest.json",".next\\server\\middleware-build-manifest.js",".next\\server\\middleware-react-loadable-manifest.js",".next\\server\\app-paths-manifest.json",".next\\app-path-routes-manifest.json",".next\\app-build-manifest.json",".next\\server\\server-reference-manifest.js",".next\\server\\server-reference-manifest.json",".next\\react-loadable-manifest.json",".next\\server\\font-manifest.json",".next\\BUILD_ID",".next\\server\\next-font-manifest.js",".next\\server\\next-font-manifest.json"],"ignore":["node_modules\\next\\dist\\compiled\\@ampproject\\toolbox-optimizer\\**\\*"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/routes-manifest.json b/phase-1-core-infra/frontend/.next/routes-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..a31e1cae9afa2c2969415031defcb12c5a2534e2 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/routes-manifest.json @@ -0,0 +1 @@ +{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/api/auth/callback/[provider]","regex":"^/api/auth/callback/([^/]+?)(?:/)?$","routeKeys":{"nxtPprovider":"nxtPprovider"},"namedRegex":"^/api/auth/callback/(?<nxtPprovider>[^/]+?)(?:/)?$"},{"page":"/api/auth/[...nextauth]","regex":"^/api/auth/(.+?)(?:/)?$","routeKeys":{"nxtPnextauth":"nxtPnextauth"},"namedRegex":"^/api/auth/(?<nxtPnextauth>.+?)(?:/)?$"},{"page":"/auth/callback/[provider]","regex":"^/auth/callback/([^/]+?)(?:/)?$","routeKeys":{"nxtPprovider":"nxtPprovider"},"namedRegex":"^/auth/callback/(?<nxtPprovider>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/_not-found","regex":"^/_not\\-found(?:/)?$","routeKeys":{},"namedRegex":"^/_not\\-found(?:/)?$"},{"page":"/admin","regex":"^/admin(?:/)?$","routeKeys":{},"namedRegex":"^/admin(?:/)?$"},{"page":"/admin/costs","regex":"^/admin/costs(?:/)?$","routeKeys":{},"namedRegex":"^/admin/costs(?:/)?$"},{"page":"/admin/health","regex":"^/admin/health(?:/)?$","routeKeys":{},"namedRegex":"^/admin/health(?:/)?$"},{"page":"/admin/users","regex":"^/admin/users(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users(?:/)?$"},{"page":"/auth/login","regex":"^/auth/login(?:/)?$","routeKeys":{},"namedRegex":"^/auth/login(?:/)?$"},{"page":"/auth/register","regex":"^/auth/register(?:/)?$","routeKeys":{},"namedRegex":"^/auth/register(?:/)?$"},{"page":"/dashboard","regex":"^/dashboard(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard(?:/)?$"},{"page":"/dashboard/connected-accounts","regex":"^/dashboard/connected\\-accounts(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard/connected\\-accounts(?:/)?$"},{"page":"/dashboard/content/create","regex":"^/dashboard/content/create(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard/content/create(?:/)?$"},{"page":"/dashboard/insights","regex":"^/dashboard/insights(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard/insights(?:/)?$"},{"page":"/dashboard/post-history","regex":"^/dashboard/post\\-history(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard/post\\-history(?:/)?$"},{"page":"/dashboard/video-library","regex":"^/dashboard/video\\-library(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard/video\\-library(?:/)?$"},{"page":"/dashboard/whatsapp-settings","regex":"^/dashboard/whatsapp\\-settings(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard/whatsapp\\-settings(?:/)?$"},{"page":"/login","regex":"^/login(?:/)?$","routeKeys":{},"namedRegex":"^/login(?:/)?$"},{"page":"/pricing","regex":"^/pricing(?:/)?$","routeKeys":{},"namedRegex":"^/pricing(?:/)?$"},{"page":"/reset-password","regex":"^/reset\\-password(?:/)?$","routeKeys":{},"namedRegex":"^/reset\\-password(?:/)?$"},{"page":"/reset-password/confirm","regex":"^/reset\\-password/confirm(?:/)?$","routeKeys":{},"namedRegex":"^/reset\\-password/confirm(?:/)?$"},{"page":"/signup","regex":"^/signup(?:/)?$","routeKeys":{},"namedRegex":"^/signup(?:/)?$"},{"page":"/verify-email","regex":"^/verify\\-email(?:/)?$","routeKeys":{},"namedRegex":"^/verify\\-email(?:/)?$"}],"dataRoutes":[],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[{"source":"/api/v1/:path*","destination":"http://127.0.0.1:8000/api/v1/:path*","regex":"^/api/v1(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?(?:/)?$"}]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app-paths-manifest.json b/phase-1-core-infra/frontend/.next/server/app-paths-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..7ec0b96b5239a224a82d11d696ec40b56b3f31b0 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app-paths-manifest.json @@ -0,0 +1,27 @@ +{ + "/_not-found/page": "app/_not-found/page.js", + "/admin/costs/page": "app/admin/costs/page.js", + "/admin/users/page": "app/admin/users/page.js", + "/admin/health/page": "app/admin/health/page.js", + "/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/route.js", + "/admin/page": "app/admin/page.js", + "/api/auth/callback/[provider]/route": "app/api/auth/callback/[provider]/route.js", + "/api/health/route": "app/api/health/route.js", + "/auth/callback/[provider]/page": "app/auth/callback/[provider]/page.js", + "/auth/login/page": "app/auth/login/page.js", + "/auth/register/page": "app/auth/register/page.js", + "/login/page": "app/login/page.js", + "/page": "app/page.js", + "/pricing/page": "app/pricing/page.js", + "/reset-password/confirm/page": "app/reset-password/confirm/page.js", + "/reset-password/page": "app/reset-password/page.js", + "/signup/page": "app/signup/page.js", + "/verify-email/page": "app/verify-email/page.js", + "/dashboard/connected-accounts/page": "app/dashboard/connected-accounts/page.js", + "/dashboard/post-history/page": "app/dashboard/post-history/page.js", + "/dashboard/page": "app/dashboard/page.js", + "/dashboard/whatsapp-settings/page": "app/dashboard/whatsapp-settings/page.js", + "/dashboard/video-library/page": "app/dashboard/video-library/page.js", + "/dashboard/insights/page": "app/dashboard/insights/page.js", + "/dashboard/content/create/page": "app/dashboard/content/create/page.js" +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/_not-found.html b/phase-1-core-infra/frontend/.next/server/app/_not-found.html new file mode 100644 index 0000000000000000000000000000000000000000..420bb1e1828307ac253e14797997771ae42fa1c2 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/_not-found.html @@ -0,0 +1 @@ +<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/f4cab49cfd8d571c.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-02761f80ef09b837.js"/><script src="/_next/static/chunks/fd9d1056-e12ba778587e956e.js" async=""></script><script src="/_next/static/chunks/117-b80dbde68ec4014e.js" async=""></script><script src="/_next/static/chunks/main-app-fb7ccb699bc25929.js" async=""></script><script src="/_next/static/chunks/137-ba5a6ccb277ff542.js" async=""></script><script src="/_next/static/chunks/418-9f199b27072bf0cb.js" async=""></script><script src="/_next/static/chunks/app/layout-b73b0bd7fc73fea9.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.

404

This page could not be found.

    \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/_not-found.meta b/phase-1-core-infra/frontend/.next/server/app/_not-found.meta new file mode 100644 index 0000000000000000000000000000000000000000..547abaf49121119022cdcdf188e9f67719ca59a2 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/_not-found.meta @@ -0,0 +1,6 @@ +{ + "status": 404, + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/_not-found/layout,_N_T_/_not-found/page,_N_T_/_not-found" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/_not-found.rsc b/phase-1-core-infra/frontend/.next/server/app/_not-found.rsc new file mode 100644 index 0000000000000000000000000000000000000000..03f05d08d688be378375b6bcd79957b5e4b94083 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/_not-found.rsc @@ -0,0 +1,10 @@ +2:I[4707,[],""] +3:I[36423,[],""] +4:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +5:{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"} +6:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"} +7:{"display":"inline-block"} +8:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["/_not-found",{"children":["__PAGE__",{},[["$L1",[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null],null],null]},[null,["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","/_not-found","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L4",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$5","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$6","children":"404"}],["$","div",null,{"style":"$7","children":["$","h2",null,{"style":"$8","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":{}}]],null],null],["$L9",["$","meta",null,{"name":"robots","content":"noindex"}]]]]] +9:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/_not-found/page.js b/phase-1-core-infra/frontend/.next/server/app/_not-found/page.js new file mode 100644 index 0000000000000000000000000000000000000000..1b895362f8f71276a1b7204e4a3514dd260183b8 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/_not-found/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=409,e.ids=[409],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},35421:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>f,originalPathname:()=>c,pages:()=>u,routeModule:()=>p,tree:()=>l}),r(7352),r(35866),r(32029);var s=r(23191),n=r(88716),o=r(37922),a=r.n(o),i=r(95231),d={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(d[e]=()=>i[e]);r.d(t,d);let l=["",{children:["/_not-found",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],u=[],c="/_not-found/page",f={require:r,loadChunk:()=>Promise.resolve()},p=new s.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/_not-found/page",pathname:"/_not-found",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:l}})},16958:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},4271:(e,t,r)=>{Promise.resolve().then(r.bind(r,86325))},86325:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>w});var s=r(10326),n=r(46465),o=r.n(n);r(23824);var a=r(17577),i=r(10592),d=r(79360),l=r(94019),u=r(51223);let c=i.zt,f=a.forwardRef(({className:e,...t},r)=>s.jsx(i.l_,{ref:r,className:(0,u.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));f.displayName=i.l_.displayName;let p=(0,d.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=a.forwardRef(({className:e,variant:t,...r},n)=>s.jsx(i.fC,{ref:n,className:(0,u.cn)(p({variant:t}),e),...r}));m.displayName=i.fC.displayName,a.forwardRef(({className:e,...t},r)=>s.jsx(i.aU,{ref:r,className:(0,u.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let g=a.forwardRef(({className:e,...t},r)=>s.jsx(i.x8,{ref:r,className:(0,u.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:s.jsx(l.Z,{className:"h-4 w-4"})}));g.displayName=i.x8.displayName;let x=a.forwardRef(({className:e,...t},r)=>s.jsx(i.Dx,{ref:r,className:(0,u.cn)("text-sm font-semibold",e),...t}));x.displayName=i.Dx.displayName;let v=a.forwardRef(({className:e,...t},r)=>s.jsx(i.dk,{ref:r,className:(0,u.cn)("text-sm opacity-90",e),...t}));v.displayName=i.dk.displayName;var h=r(56627);function y(){let{toasts:e}=(0,h.pm)();return(0,s.jsxs)(c,{children:[e.map(function({id:e,title:t,description:r,action:n,...o}){return(0,s.jsxs)(m,{...o,children:[(0,s.jsxs)("div",{className:"grid gap-1",children:[t&&s.jsx(x,{children:t}),r&&s.jsx(v,{children:r})]}),n,s.jsx(g,{})]},e)}),s.jsx(f,{})]})}var b=r(92876),_=r(74951),j=r(44976);function w({children:e}){let[t]=(0,a.useState)(()=>new _.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return s.jsx("html",{lang:"en",children:s.jsx("body",{className:o().className,children:s.jsx(j.aH,{client:t,children:(0,s.jsxs)(b.Ho,{children:[e,s.jsx(y,{})]})})})})}},92876:(e,t,r)=>{"use strict";r.d(t,{Ho:()=>i,aC:()=>d});var s=r(10326),n=r(17577),o=r(42357);let a=(0,n.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,r]=(0,n.useState)(null),[i,d]=(0,n.useState)(null),[l,u]=(0,n.useState)(!0),c=async()=>{try{let e=await (0,o.Gg)();e?(r(e.user),d(e.session)):(r(null),d(null))}catch(e){r(null),d(null)}finally{u(!1)}};return s.jsx(a.Provider,{value:{user:t,session:i,loading:l,refetch:c},children:e})}function d(){return(0,n.useContext)(a)}},56627:(e,t,r)=>{"use strict";r.d(t,{pm:()=>f});var s=r(17577);let n=0,o=new Map,a=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),u({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?a(r):e.toasts.forEach(e=>{a(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},d=[],l={toasts:[]};function u(e){l=i(l,e),d.forEach(e=>{e(l)})}function c({...e}){let t=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>u({type:"DISMISS_TOAST",toastId:t});return u({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>u({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function f(){let[e,t]=s.useState(l);return s.useEffect(()=>(d.push(t),()=>{let e=d.indexOf(t);e>-1&&d.splice(e,1)}),[e]),{...e,toast:c,dismiss:e=>u({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,r)=>{"use strict";r.d(t,{Gg:()=>a,w7:()=>o});let s="http://127.0.0.1:8000",n={async signUp(e,t,r){let n=await fetch(`${s}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!n.ok)throw Error((await n.json()).detail||"Registration failed");return n.json()},async signIn(e,t){let r=await fetch(`${s}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${s}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${s}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};n.signUp,n.signIn;let o=n.signOut,a=n.getSession},51223:(e,t,r)=>{"use strict";r.d(t,{cn:()=>o});var s=r(41135),n=r(31009);function o(...e){return(0,n.m6)((0,s.W)(e))}},16399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return n},notFound:function(){return s}});let r="NEXT_NOT_FOUND";function s(){let e=Error(r);throw e.digest=r,e}function n(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7352:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PARALLEL_ROUTE_DEFAULT_PATH:function(){return n},default:function(){return o}});let s=r(16399),n="next/dist/client/components/parallel-route-default.js";function o(){(0,s.notFound)()}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},32029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});let s=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},23824:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[276,448],()=>r(35421));module.exports=s})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/_not-found/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/_not-found/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..4750f9f9a24c03d33c6f23eac6d2fbf7cb80d7e7 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/_not-found/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../webpack-runtime.js","../../chunks/276.js","../../chunks/448.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/_not-found/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/_not-found/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..0e3c8cd408ad4d8d05dd5a4d5cc1bc1a9ddd0818 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/_not-found/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\_not-found\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin.html b/phase-1-core-infra/frontend/.next/server/app/admin.html new file mode 100644 index 0000000000000000000000000000000000000000..74b0866ab55a79055dda5afa1755ade1a94f21dc --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin.html @@ -0,0 +1 @@ +

    Loading...

      \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin.meta b/phase-1-core-infra/frontend/.next/server/app/admin.meta new file mode 100644 index 0000000000000000000000000000000000000000..968a55162a8b928061f099c8fffdb0351fb66fca --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/admin/layout,_N_T_/admin/page,_N_T_/admin" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin.rsc b/phase-1-core-infra/frontend/.next/server/app/admin.rsc new file mode 100644 index 0000000000000000000000000000000000000000..9d256674eb5d800b7d444f6fbac9198586414eb4 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin.rsc @@ -0,0 +1,9 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[56370,["137","static/chunks/137-ba5a6ccb277ff542.js","680","static/chunks/680-fccc5c9a67328074.js","3","static/chunks/app/admin/page-d1ec05d5b8710965.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["admin",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["admin",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","admin","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/costs.html b/phase-1-core-infra/frontend/.next/server/app/admin/costs.html new file mode 100644 index 0000000000000000000000000000000000000000..3c11c772809194a31a7d1b085d128d8e1e288639 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/costs.html @@ -0,0 +1 @@ +

      Cost Analytics

      Track API costs, revenue, and profit margins

      Loading cost analytics...
        \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/costs.meta b/phase-1-core-infra/frontend/.next/server/app/admin/costs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c16cd69b2f10aa746da57e6377eee25dff0069a1 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/costs.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/admin/layout,_N_T_/admin/costs/layout,_N_T_/admin/costs/page,_N_T_/admin/costs" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/costs.rsc b/phase-1-core-infra/frontend/.next/server/app/admin/costs.rsc new file mode 100644 index 0000000000000000000000000000000000000000..864928955555130adabc2642f8f735befbff3f90 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/costs.rsc @@ -0,0 +1,9 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[43104,["137","static/chunks/137-ba5a6ccb277ff542.js","104","static/chunks/app/admin/costs/page-7cb12944f09e5838.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["admin",{"children":["costs",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["admin",{"children":["costs",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","admin","children","costs","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","admin","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/costs/page.js b/phase-1-core-infra/frontend/.next/server/app/admin/costs/page.js new file mode 100644 index 0000000000000000000000000000000000000000..55435dab1ae085be16a1153529d4580a5d8bb24d --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/costs/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=104,e.ids=[104],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},34206:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>i.a,__next_app__:()=>x,originalPathname:()=>u,pages:()=>c,routeModule:()=>m,tree:()=>d}),s(51532),s(32029),s(35866);var a=s(23191),r=s(88716),n=s(37922),i=s.n(n),o=s(95231),l={};for(let e in o)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>o[e]);s.d(t,l);let d=["",{children:["admin",{children:["costs",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,51532)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx"]}]},{}]},{}]},{layout:[()=>Promise.resolve().then(s.bind(s,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx"],u="/admin/costs/page",x={require:s,loadChunk:()=>Promise.resolve()},m=new a.AppPageRouteModule({definition:{kind:r.x.APP_PAGE,page:"/admin/costs/page",pathname:"/admin/costs",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,12994,23)),Promise.resolve().then(s.t.bind(s,96114,23)),Promise.resolve().then(s.t.bind(s,9727,23)),Promise.resolve().then(s.t.bind(s,79671,23)),Promise.resolve().then(s.t.bind(s,41868,23)),Promise.resolve().then(s.t.bind(s,84759,23))},20334:(e,t,s)=>{Promise.resolve().then(s.bind(s,5595))},4271:(e,t,s)=>{Promise.resolve().then(s.bind(s,86325))},5595:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>o});var a=s(10326),r=s(17577),n=s(29752);function i(){let[e,t]=(0,r.useState)(null),[s,i]=(0,r.useState)(null),[o,l]=(0,r.useState)(null),[d,c]=(0,r.useState)(!0),[u,x]=(0,r.useState)(30),m=e=>`$${(e/100).toFixed(2)}`;return d?a.jsx(n.Zb,{className:"p-6",children:a.jsx("div",{className:"text-center py-8",children:"Loading cost analytics..."})}):e&&s&&o?(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center",children:[a.jsx("h2",{className:"text-2xl font-bold",children:"Cost Analytics"}),(0,a.jsxs)("select",{value:u,onChange:e=>x(Number(e.target.value)),className:"px-4 py-2 border rounded-md",children:[a.jsx("option",{value:7,children:"Last 7 days"}),a.jsx("option",{value:30,children:"Last 30 days"}),a.jsx("option",{value:90,children:"Last 90 days"})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[(0,a.jsxs)(n.Zb,{className:"p-4",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Total Costs"}),a.jsx("div",{className:"text-2xl font-bold text-red-600",children:m(e.total_cost_cents)})]}),(0,a.jsxs)(n.Zb,{className:"p-4",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Monthly Revenue"}),a.jsx("div",{className:"text-2xl font-bold text-green-600",children:m(s.current_mrr_cents)})]}),(0,a.jsxs)(n.Zb,{className:"p-4",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Profit"}),a.jsx("div",{className:"text-2xl font-bold text-blue-600",children:m(o.profit_cents)})]}),(0,a.jsxs)(n.Zb,{className:"p-4",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Profit Margin"}),(0,a.jsxs)("div",{className:"text-2xl font-bold",children:[o.margin_percent.toFixed(1),"%"]})]})]}),(0,a.jsxs)(n.Zb,{className:"p-6",children:[a.jsx("h3",{className:"text-xl font-semibold mb-4",children:"Cost Breakdown by Provider"}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center p-4 bg-gray-50 rounded",children:[(0,a.jsxs)("div",{children:[a.jsx("div",{className:"font-semibold",children:"OpenAI (GPT-4)"}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:[e.openai.tokens_used.toLocaleString()," tokens"]})]}),a.jsx("div",{className:"text-xl font-bold",children:m(e.openai.cost_cents)})]}),(0,a.jsxs)("div",{className:"flex justify-between items-center p-4 bg-gray-50 rounded",children:[(0,a.jsxs)("div",{children:[a.jsx("div",{className:"font-semibold",children:"Google Veo (Video Generation)"}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:[e.google_veo.videos_generated," videos"]})]}),a.jsx("div",{className:"text-xl font-bold",children:m(e.google_veo.cost_cents)})]})]})]}),(0,a.jsxs)(n.Zb,{className:"p-6",children:[a.jsx("h3",{className:"text-xl font-semibold mb-4",children:"Revenue by Subscription Tier"}),a.jsx("div",{className:"space-y-4",children:Object.entries(s.revenue_by_tier).map(([e,t])=>(0,a.jsxs)("div",{className:"flex justify-between items-center p-4 bg-gray-50 rounded",children:[(0,a.jsxs)("div",{children:[a.jsx("div",{className:"font-semibold capitalize",children:e}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:[t.count," active subscription",1!==t.count?"s":""]})]}),a.jsx("div",{className:"text-xl font-bold",children:m(t.revenue_cents)})]},e))})]}),(0,a.jsxs)(n.Zb,{className:"p-6",children:[a.jsx("h3",{className:"text-xl font-semibold mb-4",children:"Daily Cost Trend"}),a.jsx("div",{className:"space-y-2",children:e.cost_timeline.slice(-14).map(t=>{let s=Math.max(...e.cost_timeline.map(e=>e.cost_cents)),r=t.cost_cents/s*100;return(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[a.jsx("div",{className:"w-24 text-sm text-gray-600",children:new Date(t.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})}),a.jsx("div",{className:"flex-1",children:a.jsx("div",{className:"bg-blue-500 h-8 rounded flex items-center justify-end px-2 text-white text-sm",style:{width:`${r}%`},children:m(t.cost_cents)})})]},t.date)})})]})]}):a.jsx(n.Zb,{className:"p-6",children:a.jsx("div",{className:"text-center py-8 text-red-600",children:"Failed to load cost data"})})}function o(){return(0,a.jsxs)("div",{className:"container mx-auto py-8 px-4",children:[(0,a.jsxs)("div",{className:"mb-6",children:[a.jsx("h1",{className:"text-3xl font-bold",children:"Cost Analytics"}),a.jsx("p",{className:"text-gray-600 mt-2",children:"Track API costs, revenue, and profit margins"})]}),a.jsx(i,{})]})}},86325:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>w});var a=s(10326),r=s(46465),n=s.n(r);s(23824);var i=s(17577),o=s(10592),l=s(79360),d=s(94019),c=s(51223);let u=o.zt,x=i.forwardRef(({className:e,...t},s)=>a.jsx(o.l_,{ref:s,className:(0,c.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));x.displayName=o.l_.displayName;let m=(0,l.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),p=i.forwardRef(({className:e,variant:t,...s},r)=>a.jsx(o.fC,{ref:r,className:(0,c.cn)(m({variant:t}),e),...s}));p.displayName=o.fC.displayName,i.forwardRef(({className:e,...t},s)=>a.jsx(o.aU,{ref:s,className:(0,c.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=o.aU.displayName;let f=i.forwardRef(({className:e,...t},s)=>a.jsx(o.x8,{ref:s,className:(0,c.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:a.jsx(d.Z,{className:"h-4 w-4"})}));f.displayName=o.x8.displayName;let h=i.forwardRef(({className:e,...t},s)=>a.jsx(o.Dx,{ref:s,className:(0,c.cn)("text-sm font-semibold",e),...t}));h.displayName=o.Dx.displayName;let g=i.forwardRef(({className:e,...t},s)=>a.jsx(o.dk,{ref:s,className:(0,c.cn)("text-sm opacity-90",e),...t}));g.displayName=o.dk.displayName;var v=s(56627);function j(){let{toasts:e}=(0,v.pm)();return(0,a.jsxs)(u,{children:[e.map(function({id:e,title:t,description:s,action:r,...n}){return(0,a.jsxs)(p,{...n,children:[(0,a.jsxs)("div",{className:"grid gap-1",children:[t&&a.jsx(h,{children:t}),s&&a.jsx(g,{children:s})]}),r,a.jsx(f,{})]},e)}),a.jsx(x,{})]})}var y=s(92876),b=s(74951),N=s(44976);function w({children:e}){let[t]=(0,i.useState)(()=>new b.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return a.jsx("html",{lang:"en",children:a.jsx("body",{className:n().className,children:a.jsx(N.aH,{client:t,children:(0,a.jsxs)(y.Ho,{children:[e,a.jsx(j,{})]})})})})}},92876:(e,t,s)=>{"use strict";s.d(t,{Ho:()=>o,aC:()=>l});var a=s(10326),r=s(17577),n=s(42357);let i=(0,r.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function o({children:e}){let[t,s]=(0,r.useState)(null),[o,l]=(0,r.useState)(null),[d,c]=(0,r.useState)(!0),u=async()=>{try{let e=await (0,n.Gg)();e?(s(e.user),l(e.session)):(s(null),l(null))}catch(e){s(null),l(null)}finally{c(!1)}};return a.jsx(i.Provider,{value:{user:t,session:o,loading:d,refetch:u},children:e})}function l(){return(0,r.useContext)(i)}},29752:(e,t,s)=>{"use strict";s.d(t,{Ol:()=>o,SZ:()=>d,Zb:()=>i,aY:()=>c,eW:()=>u,ll:()=>l});var a=s(10326),r=s(17577),n=s(51223);let i=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:(0,n.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",e),...t}));i.displayName="Card";let o=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:(0,n.cn)("flex flex-col space-y-1.5 p-6",e),...t}));o.displayName="CardHeader";let l=r.forwardRef(({className:e,...t},s)=>a.jsx("h3",{ref:s,className:(0,n.cn)("text-2xl font-semibold leading-none tracking-tight",e),...t}));l.displayName="CardTitle";let d=r.forwardRef(({className:e,...t},s)=>a.jsx("p",{ref:s,className:(0,n.cn)("text-sm text-muted-foreground",e),...t}));d.displayName="CardDescription";let c=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:(0,n.cn)("p-6 pt-0",e),...t}));c.displayName="CardContent";let u=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:(0,n.cn)("flex items-center p-6 pt-0",e),...t}));u.displayName="CardFooter"},56627:(e,t,s)=>{"use strict";s.d(t,{pm:()=>x});var a=s(17577);let r=0,n=new Map,i=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?i(s):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=o(d,e),l.forEach(e=>{e(d)})}function u({...e}){let t=(r=(r+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||s()}}}),{id:t,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function x(){let[e,t]=a.useState(d);return a.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,s)=>{"use strict";s.d(t,{Gg:()=>i,w7:()=>n});let a="http://127.0.0.1:8000",r={async signUp(e,t,s){let r=await fetch(`${a}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:s})});if(!r.ok)throw Error((await r.json()).detail||"Registration failed");return r.json()},async signIn(e,t){let s=await fetch(`${a}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!s.ok)throw Error((await s.json()).detail||"Login failed");return s.json()},async signOut(){if(!(await fetch(`${a}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${a}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};r.signUp,r.signIn;let n=r.signOut,i=r.getSession},51223:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var a=s(41135),r=s(31009);function n(...e){return(0,r.m6)((0,a.W)(e))}},51532:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>a});let a=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\admin\costs\page.tsx#default`)},32029:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>a});let a=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},23824:()=>{}};var t=require("../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),a=t.X(0,[276,448],()=>s(34206));module.exports=a})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/costs/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/admin/costs/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..07ba3ac56085edc8297207753b358763e5e3c374 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/costs/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/costs/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/admin/costs/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..0f5b1ba584aeed8c58995b1f6c0fbc6f79c4b864 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/costs/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/admin/costs/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","104","static/chunks/app/admin/costs/page-7cb12944f09e5838.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","680","static/chunks/680-fccc5c9a67328074.js","3","static/chunks/app/admin/page-d1ec05d5b8710965.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/health.html b/phase-1-core-infra/frontend/.next/server/app/admin/health.html new file mode 100644 index 0000000000000000000000000000000000000000..c3c59d5c92bbb4bc3f34dba5c0a29383f8ad6dd8 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/health.html @@ -0,0 +1 @@ +

        System Health

        Monitor database, API, and infrastructure health

        Loading system health...
          \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/health.meta b/phase-1-core-infra/frontend/.next/server/app/admin/health.meta new file mode 100644 index 0000000000000000000000000000000000000000..61af7527a3ddbb1821c102e987ff96735e627d3f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/health.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/admin/layout,_N_T_/admin/health/layout,_N_T_/admin/health/page,_N_T_/admin/health" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/health.rsc b/phase-1-core-infra/frontend/.next/server/app/admin/health.rsc new file mode 100644 index 0000000000000000000000000000000000000000..9f69a117c3aa8c2c31ac9b74fb3907d021862a50 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/health.rsc @@ -0,0 +1,9 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[90759,["137","static/chunks/137-ba5a6ccb277ff542.js","758","static/chunks/app/admin/health/page-cad3cf2462d86965.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["admin",{"children":["health",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["admin",{"children":["health",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","admin","children","health","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","admin","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/health/page.js b/phase-1-core-infra/frontend/.next/server/app/admin/health/page.js new file mode 100644 index 0000000000000000000000000000000000000000..1f1c8409dfc89ef2ce259589bd687a299bd78b76 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/health/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=758,e.ids=[758],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},68397:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>i.a,__next_app__:()=>u,originalPathname:()=>m,pages:()=>c,routeModule:()=>x,tree:()=>d}),s(29381),s(32029),s(35866);var a=s(23191),r=s(88716),n=s(37922),i=s.n(n),o=s(95231),l={};for(let e in o)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>o[e]);s.d(t,l);let d=["",{children:["admin",{children:["health",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,29381)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx"]}]},{}]},{}]},{layout:[()=>Promise.resolve().then(s.bind(s,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx"],m="/admin/health/page",u={require:s,loadChunk:()=>Promise.resolve()},x=new a.AppPageRouteModule({definition:{kind:r.x.APP_PAGE,page:"/admin/health/page",pathname:"/admin/health",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,12994,23)),Promise.resolve().then(s.t.bind(s,96114,23)),Promise.resolve().then(s.t.bind(s,9727,23)),Promise.resolve().then(s.t.bind(s,79671,23)),Promise.resolve().then(s.t.bind(s,41868,23)),Promise.resolve().then(s.t.bind(s,84759,23))},32885:(e,t,s)=>{Promise.resolve().then(s.bind(s,5999))},4271:(e,t,s)=>{Promise.resolve().then(s.bind(s,86325))},5999:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>o});var a=s(10326),r=s(17577),n=s(29752);function i(){let[e,t]=(0,r.useState)(null),[s,i]=(0,r.useState)(!0),[o,l]=(0,r.useState)(!0),d=async()=>{try{let e=await fetch("/api/admin/health/overview",{headers:{Authorization:`Bearer ${localStorage.getItem("token")}`}});if(!e.ok)throw Error("Failed to fetch health data");let s=await e.json();t(s)}catch(e){console.error("Error fetching health data:",e)}finally{i(!1)}},c=e=>{switch(e.toLowerCase()){case"healthy":return"bg-green-100 text-green-800";case"degraded":return"bg-yellow-100 text-yellow-800";case"down":case"error":return"bg-red-100 text-red-800";default:return"bg-gray-100 text-gray-800"}};return s?a.jsx(n.Zb,{className:"p-6",children:a.jsx("div",{className:"text-center py-8",children:"Loading system health..."})}):e?(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center",children:[a.jsx("h2",{className:"text-2xl font-bold",children:"System Health"}),(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[a.jsx("input",{type:"checkbox",checked:o,onChange:e=>l(e.target.checked)}),"Auto-refresh (30s)"]}),a.jsx("button",{onClick:d,className:"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700",children:"Refresh Now"})]})]}),a.jsx(n.Zb,{className:"p-6",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Overall System Status"}),a.jsx("div",{className:"text-3xl font-bold mt-2",children:(0,a.jsxs)("span",{className:`px-4 py-2 rounded ${c(e.overall_status)}`,children:[(e=>{switch(e.toLowerCase()){case"healthy":return"✓";case"degraded":return"⚠";case"down":case"error":return"✗";default:return"?"}})(e.overall_status)," ",e.overall_status.toUpperCase()]})})]}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:["Last checked: ",new Date(e.checked_at).toLocaleString()]})]})}),(0,a.jsxs)(n.Zb,{className:"p-6",children:[a.jsx("h3",{className:"text-xl font-semibold mb-4",children:"Database"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mb-6",children:[(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Status"}),a.jsx("div",{className:`text-lg font-semibold mt-1 ${c(e.components.database.status)}`,children:e.components.database.status.toUpperCase()})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Response Time"}),(0,a.jsxs)("div",{className:"text-lg font-semibold mt-1",children:[e.components.database.response_time_ms,"ms"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Active Connections"}),a.jsx("div",{className:"text-lg font-semibold mt-1",children:e.components.database_stats.connection_count})]})]}),e.components.database_stats.table_sizes.length>0&&(0,a.jsxs)("div",{children:[a.jsx("h4",{className:"font-semibold mb-2",children:"Largest Tables"}),a.jsx("div",{className:"space-y-2",children:e.components.database_stats.table_sizes.slice(0,5).map(e=>(0,a.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[a.jsx("span",{className:"font-mono text-sm",children:e.table}),a.jsx("span",{className:"text-sm text-gray-600",children:e.size})]},e.table))})]})]}),(0,a.jsxs)(n.Zb,{className:"p-6",children:[a.jsx("h3",{className:"text-xl font-semibold mb-4",children:"API Performance"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Requests/Minute"}),a.jsx("div",{className:"text-2xl font-bold mt-1",children:e.components.api.requests_per_minute})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Avg Response Time"}),(0,a.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[e.components.api.avg_response_time_ms,"ms"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Error Rate"}),(0,a.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[e.components.api.error_rate_percent,"%"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"P95 Response Time"}),(0,a.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[e.components.api.p95_response_time_ms,"ms"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"P99 Response Time"}),(0,a.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[e.components.api.p99_response_time_ms,"ms"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Status"}),a.jsx("div",{className:`text-lg font-semibold mt-1 ${c(e.components.api.status)}`,children:e.components.api.status.toUpperCase()})]})]})]})]}):a.jsx(n.Zb,{className:"p-6",children:a.jsx("div",{className:"text-center py-8 text-red-600",children:"Failed to load health data"})})}function o(){return(0,a.jsxs)("div",{className:"container mx-auto py-8 px-4",children:[(0,a.jsxs)("div",{className:"mb-6",children:[a.jsx("h1",{className:"text-3xl font-bold",children:"System Health"}),a.jsx("p",{className:"text-gray-600 mt-2",children:"Monitor database, API, and infrastructure health"})]}),a.jsx(i,{})]})}},86325:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>w});var a=s(10326),r=s(46465),n=s.n(r);s(23824);var i=s(17577),o=s(10592),l=s(79360),d=s(94019),c=s(51223);let m=o.zt,u=i.forwardRef(({className:e,...t},s)=>a.jsx(o.l_,{ref:s,className:(0,c.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));u.displayName=o.l_.displayName;let x=(0,l.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),p=i.forwardRef(({className:e,variant:t,...s},r)=>a.jsx(o.fC,{ref:r,className:(0,c.cn)(x({variant:t}),e),...s}));p.displayName=o.fC.displayName,i.forwardRef(({className:e,...t},s)=>a.jsx(o.aU,{ref:s,className:(0,c.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=o.aU.displayName;let h=i.forwardRef(({className:e,...t},s)=>a.jsx(o.x8,{ref:s,className:(0,c.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:a.jsx(d.Z,{className:"h-4 w-4"})}));h.displayName=o.x8.displayName;let f=i.forwardRef(({className:e,...t},s)=>a.jsx(o.Dx,{ref:s,className:(0,c.cn)("text-sm font-semibold",e),...t}));f.displayName=o.Dx.displayName;let g=i.forwardRef(({className:e,...t},s)=>a.jsx(o.dk,{ref:s,className:(0,c.cn)("text-sm opacity-90",e),...t}));g.displayName=o.dk.displayName;var v=s(56627);function y(){let{toasts:e}=(0,v.pm)();return(0,a.jsxs)(m,{children:[e.map(function({id:e,title:t,description:s,action:r,...n}){return(0,a.jsxs)(p,{...n,children:[(0,a.jsxs)("div",{className:"grid gap-1",children:[t&&a.jsx(f,{children:t}),s&&a.jsx(g,{children:s})]}),r,a.jsx(h,{})]},e)}),a.jsx(u,{})]})}var j=s(92876),b=s(74951),N=s(44976);function w({children:e}){let[t]=(0,i.useState)(()=>new b.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return a.jsx("html",{lang:"en",children:a.jsx("body",{className:n().className,children:a.jsx(N.aH,{client:t,children:(0,a.jsxs)(j.Ho,{children:[e,a.jsx(y,{})]})})})})}},92876:(e,t,s)=>{"use strict";s.d(t,{Ho:()=>o,aC:()=>l});var a=s(10326),r=s(17577),n=s(42357);let i=(0,r.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function o({children:e}){let[t,s]=(0,r.useState)(null),[o,l]=(0,r.useState)(null),[d,c]=(0,r.useState)(!0),m=async()=>{try{let e=await (0,n.Gg)();e?(s(e.user),l(e.session)):(s(null),l(null))}catch(e){s(null),l(null)}finally{c(!1)}};return a.jsx(i.Provider,{value:{user:t,session:o,loading:d,refetch:m},children:e})}function l(){return(0,r.useContext)(i)}},29752:(e,t,s)=>{"use strict";s.d(t,{Ol:()=>o,SZ:()=>d,Zb:()=>i,aY:()=>c,eW:()=>m,ll:()=>l});var a=s(10326),r=s(17577),n=s(51223);let i=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:(0,n.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",e),...t}));i.displayName="Card";let o=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:(0,n.cn)("flex flex-col space-y-1.5 p-6",e),...t}));o.displayName="CardHeader";let l=r.forwardRef(({className:e,...t},s)=>a.jsx("h3",{ref:s,className:(0,n.cn)("text-2xl font-semibold leading-none tracking-tight",e),...t}));l.displayName="CardTitle";let d=r.forwardRef(({className:e,...t},s)=>a.jsx("p",{ref:s,className:(0,n.cn)("text-sm text-muted-foreground",e),...t}));d.displayName="CardDescription";let c=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:(0,n.cn)("p-6 pt-0",e),...t}));c.displayName="CardContent";let m=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:(0,n.cn)("flex items-center p-6 pt-0",e),...t}));m.displayName="CardFooter"},56627:(e,t,s)=>{"use strict";s.d(t,{pm:()=>u});var a=s(17577);let r=0,n=new Map,i=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?i(s):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=o(d,e),l.forEach(e=>{e(d)})}function m({...e}){let t=(r=(r+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||s()}}}),{id:t,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function u(){let[e,t]=a.useState(d);return a.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:m,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,s)=>{"use strict";s.d(t,{Gg:()=>i,w7:()=>n});let a="http://127.0.0.1:8000",r={async signUp(e,t,s){let r=await fetch(`${a}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:s})});if(!r.ok)throw Error((await r.json()).detail||"Registration failed");return r.json()},async signIn(e,t){let s=await fetch(`${a}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!s.ok)throw Error((await s.json()).detail||"Login failed");return s.json()},async signOut(){if(!(await fetch(`${a}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${a}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};r.signUp,r.signIn;let n=r.signOut,i=r.getSession},51223:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var a=s(41135),r=s(31009);function n(...e){return(0,r.m6)((0,a.W)(e))}},29381:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>a});let a=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\admin\health\page.tsx#default`)},32029:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>a});let a=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},23824:()=>{}};var t=require("../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),a=t.X(0,[276,448],()=>s(68397));module.exports=a})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/health/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/admin/health/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..07ba3ac56085edc8297207753b358763e5e3c374 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/health/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/health/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/admin/health/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..b4de16bab6566f73f186ea74ed23beb5bc137d3f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/health/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/admin/health/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","758","static/chunks/app/admin/health/page-cad3cf2462d86965.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","680","static/chunks/680-fccc5c9a67328074.js","3","static/chunks/app/admin/page-d1ec05d5b8710965.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/page.js b/phase-1-core-infra/frontend/.next/server/app/admin/page.js new file mode 100644 index 0000000000000000000000000000000000000000..993ee856f38255e0d2ba6bc980ab314bdd9d9369 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/page.js @@ -0,0 +1 @@ +(()=>{var t={};t.id=3,t.ids=[3],t.modules={72934:t=>{"use strict";t.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:t=>{"use strict";t.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:t=>{"use strict";t.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:t=>{"use strict";t.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},33704:(t,e,r)=>{"use strict";r.r(e),r.d(e,{GlobalError:()=>a.a,__next_app__:()=>p,originalPathname:()=>f,pages:()=>s,routeModule:()=>h,tree:()=>l}),r(44753),r(32029),r(35866);var n=r(23191),o=r(88716),i=r(37922),a=r.n(i),c=r(95231),u={};for(let t in c)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(t)&&(u[t]=()=>c[t]);r.d(e,u);let l=["",{children:["admin",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,44753)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],s=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx"],f="/admin/page",p={require:r,loadChunk:()=>Promise.resolve()},h=new n.AppPageRouteModule({definition:{kind:o.x.APP_PAGE,page:"/admin/page",pathname:"/admin",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:l}})},16958:(t,e,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},12976:(t,e,r)=>{Promise.resolve().then(r.bind(r,75668))},4271:(t,e,r)=>{Promise.resolve().then(r.bind(r,86325))},6616:(t,e,r)=>{"use strict";var n=r(39618);e.__esModule=!0,e.default=function(t,e){t.classList?t.classList.add(e):(0,o.default)(t,e)||("string"==typeof t.className?t.className=t.className+" "+e:t.setAttribute("class",(t.className&&t.className.baseVal||"")+" "+e))};var o=n(r(20758));t.exports=e.default},20758:(t,e)=>{"use strict";e.__esModule=!0,e.default=function(t,e){return t.classList?!!e&&t.classList.contains(e):-1!==(" "+(t.className.baseVal||t.className)+" ").indexOf(" "+e+" ")},t.exports=e.default},67983:t=>{"use strict";function e(t,e){return t.replace(RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}t.exports=function(t,r){t.classList?t.classList.remove(r):"string"==typeof t.className?t.className=e(t.className,r):t.setAttribute("class",e(t.className&&t.className.baseVal||"",r))}},51028:t=>{"use strict";var e=Object.prototype.hasOwnProperty,r="~";function n(){}function o(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function i(t,e,n,i,a){if("function"!=typeof n)throw TypeError("The listener must be a function");var c=new o(n,i||t,a),u=r?r+e:e;return t._events[u]?t._events[u].fn?t._events[u]=[t._events[u],c]:t._events[u].push(c):(t._events[u]=c,t._eventsCount++),t}function a(t,e){0==--t._eventsCount?t._events=new n:delete t._events[e]}function c(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(r=!1)),c.prototype.eventNames=function(){var t,n,o=[];if(0===this._eventsCount)return o;for(n in t=this._events)e.call(t,n)&&o.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(t)):o},c.prototype.listeners=function(t){var e=r?r+t:t,n=this._events[e];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,i=n.length,a=Array(i);o{var n=r(7017)(r(39288),"DataView");t.exports=n},27513:(t,e,r)=>{var n=r(7392),o=r(29247),i=r(84190),a=r(66193),c=r(66681);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(38048),o=r(82142),i=r(83226),a=r(84001),c=r(31127);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(7017)(r(39288),"Map");t.exports=n},30095:(t,e,r)=>{var n=r(86487),o=r(93976),i=r(91053),a=r(29941),c=r(70144);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(7017)(r(39288),"Promise");t.exports=n},39746:(t,e,r)=>{var n=r(7017)(r(39288),"Set");t.exports=n},43484:(t,e,r)=>{var n=r(30095),o=r(51793),i=r(59191);function a(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new n;++e{var n=r(58148),o=r(82795),i=r(9113),a=r(80934),c=r(68732),u=r(5525);function l(t){var e=this.__data__=new n(t);this.size=e.size}l.prototype.clear=o,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=c,l.prototype.set=u,t.exports=l},76245:(t,e,r)=>{var n=r(39288).Symbol;t.exports=n},89377:(t,e,r)=>{var n=r(39288).Uint8Array;t.exports=n},35803:(t,e,r)=>{var n=r(7017)(r(39288),"WeakMap");t.exports=n},39137:t=>{t.exports=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}},12977:t=>{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length;++r{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,o=0,i=[];++r{var n=r(44658);t.exports=function(t,e){return!!(null==t?0:t.length)&&n(t,e,0)>-1}},19544:t=>{t.exports=function(t,e,r){for(var n=-1,o=null==t?0:t.length;++n{var n=r(84643),o=r(46148),i=r(32966),a=r(10750),c=r(19699),u=r(42191),l=Object.prototype.hasOwnProperty;t.exports=function(t,e){var r=i(t),s=!r&&o(t),f=!r&&!s&&a(t),p=!r&&!s&&!f&&u(t),h=r||s||f||p,d=h?n(t.length,String):[],y=d.length;for(var v in t)(e||l.call(t,v))&&!(h&&("length"==v||f&&("offset"==v||"parent"==v)||p&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||c(v,y)))&&d.push(v);return d}},29738:t=>{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r{t.exports=function(t,e){for(var r=-1,n=e.length,o=t.length;++r{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length;++r{t.exports=function(t){return t.split("")}},33646:(t,e,r)=>{var n=r(64111);t.exports=function(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return -1}},15216:(t,e,r)=>{var n=r(99e3);t.exports=function(t,e,r){"__proto__"==e&&n?n(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},57706:(t,e,r)=>{var n=r(59796),o=r(15271)(n);t.exports=o},78545:(t,e,r)=>{var n=r(57706);t.exports=function(t,e){var r=!0;return n(t,function(t,n,o){return r=!!e(t,n,o)}),r}},18401:(t,e,r)=>{var n=r(76871);t.exports=function(t,e,r){for(var o=-1,i=t.length;++o{t.exports=function(t,e,r,n){for(var o=t.length,i=r+(n?1:-1);n?i--:++i{var n=r(18939),o=r(62565);t.exports=function t(e,r,i,a,c){var u=-1,l=e.length;for(i||(i=o),c||(c=[]);++u0&&i(s)?r>1?t(s,r-1,i,a,c):n(c,s):a||(c[c.length]=s)}return c}},67917:(t,e,r)=>{var n=r(13012)();t.exports=n},59796:(t,e,r)=>{var n=r(67917),o=r(85865);t.exports=function(t,e){return t&&n(t,e,o)}},57305:(t,e,r)=>{var n=r(80204),o=r(1094);t.exports=function(t,e){e=n(e,t);for(var r=0,i=e.length;null!=t&&r{var n=r(18939),o=r(32966);t.exports=function(t,e,r){var i=e(t);return o(t)?i:n(i,r(t))}},1534:(t,e,r)=>{var n=r(76245),o=r(34244),i=r(13390),a=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":a&&a in Object(t)?o(t):i(t)}},20913:t=>{t.exports=function(t,e){return t>e}},50045:t=>{t.exports=function(t,e){return null!=t&&e in Object(t)}},44658:(t,e,r)=>{var n=r(47941),o=r(22570),i=r(936);t.exports=function(t,e,r){return e==e?i(t,e,r):n(t,o,r)}},79574:(t,e,r)=>{var n=r(1534),o=r(91380);t.exports=function(t){return o(t)&&"[object Arguments]"==n(t)}},88132:(t,e,r)=>{var n=r(80588),o=r(91380);t.exports=function t(e,r,i,a,c){return e===r||(null!=e&&null!=r&&(o(e)||o(r))?n(e,r,i,a,t,c):e!=e&&r!=r)}},80588:(t,e,r)=>{var n=r(82006),o=r(12317),i=r(99487),a=r(1958),c=r(74963),u=r(32966),l=r(10750),s=r(42191),f="[object Arguments]",p="[object Array]",h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function(t,e,r,y,v,m){var g=u(t),b=u(e),x=g?p:c(t),O=b?p:c(e);x=x==f?h:x,O=O==f?h:O;var w=x==h,j=O==h,S=x==O;if(S&&l(t)){if(!l(e))return!1;g=!0,w=!1}if(S&&!w)return m||(m=new n),g||s(t)?o(t,e,r,y,v,m):i(t,e,x,r,y,v,m);if(!(1&r)){var A=w&&d.call(t,"__wrapped__"),E=j&&d.call(e,"__wrapped__");if(A||E){var P=A?t.value():t,k=E?e.value():e;return m||(m=new n),v(P,k,r,y,m)}}return!!S&&(m||(m=new n),a(t,e,r,y,v,m))}},7240:(t,e,r)=>{var n=r(82006),o=r(88132);t.exports=function(t,e,r,i){var a=r.length,c=a,u=!i;if(null==t)return!c;for(t=Object(t);a--;){var l=r[a];if(u&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++a{t.exports=function(t){return t!=t}},74104:(t,e,r)=>{var n=r(85586),o=r(15621),i=r(62880),a=r(81708),c=/^\[object .+?Constructor\]$/,u=Object.prototype,l=Function.prototype.toString,s=u.hasOwnProperty,f=RegExp("^"+l.call(s).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(n(t)?f:c).test(a(t))}},17633:(t,e,r)=>{var n=r(1534),o=r(99002),i=r(91380),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&o(t.length)&&!!a[n(t)]}},44729:(t,e,r)=>{var n=r(71069),o=r(44723),i=r(24576),a=r(32966),c=r(94416);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?a(t)?o(t[0],t[1]):n(t):c(t)}},54190:(t,e,r)=>{var n=r(83314),o=r(66045),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!n(t))return o(t);var e=[];for(var r in Object(t))i.call(t,r)&&"constructor"!=r&&e.push(r);return e}},16409:t=>{t.exports=function(t,e){return t{var n=r(57706),o=r(17632);t.exports=function(t,e){var r=-1,i=o(t)?Array(t.length):[];return n(t,function(t,n,o){i[++r]=e(t,n,o)}),i}},71069:(t,e,r)=>{var n=r(7240),o=r(35906),i=r(17106);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(r){return r===t||n(r,t,e)}}},44723:(t,e,r)=>{var n=r(88132),o=r(9459),i=r(1433),a=r(76958),c=r(61623),u=r(17106),l=r(1094);t.exports=function(t,e){return a(t)&&c(e)?u(l(t),e):function(r){var a=o(r,t);return void 0===a&&a===e?i(r,t):n(e,a,3)}}},40620:(t,e,r)=>{var n=r(29738),o=r(57305),i=r(44729),a=r(64635),c=r(12704),u=r(96291),l=r(52463),s=r(24576),f=r(32966);t.exports=function(t,e,r){e=e.length?n(e,function(t){return f(t)?function(e){return o(e,1===t.length?t[0]:t)}:t}):[s];var p=-1;return e=n(e,u(i)),c(a(t,function(t,r,o){return{criteria:n(e,function(e){return e(t)}),index:++p,value:t}}),function(t,e){return l(t,e,r)})}},78974:t=>{t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},3243:(t,e,r)=>{var n=r(57305);t.exports=function(t){return function(e){return n(e,t)}}},97502:t=>{var e=Math.ceil,r=Math.max;t.exports=function(t,n,o,i){for(var a=-1,c=r(e((n-t)/(o||1)),0),u=Array(c);c--;)u[i?c:++a]=t,t+=o;return u}},44563:(t,e,r)=>{var n=r(24576),o=r(21112),i=r(234);t.exports=function(t,e){return i(o(t,e,n),t+"")}},44578:(t,e,r)=>{var n=r(44347),o=r(99e3),i=r(24576),a=o?function(t,e){return o(t,"toString",{configurable:!0,enumerable:!1,value:n(e),writable:!0})}:i;t.exports=a},55804:t=>{t.exports=function(t,e,r){var n=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(r=r>o?o:r)<0&&(r+=o),o=e>r?0:r-e>>>0,e>>>=0;for(var i=Array(o);++n{var n=r(57706);t.exports=function(t,e){var r;return n(t,function(t,n,o){return!(r=e(t,n,o))}),!!r}},12704:t=>{t.exports=function(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}},84643:t=>{t.exports=function(t,e){for(var r=-1,n=Array(t);++r{var n=r(76245),o=r(29738),i=r(32966),a=r(76871),c=1/0,u=n?n.prototype:void 0,l=u?u.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return o(e,t)+"";if(a(e))return l?l.call(e):"";var r=e+"";return"0"==r&&1/e==-c?"-0":r}},37192:(t,e,r)=>{var n=r(5587),o=/^\s+/;t.exports=function(t){return t?t.slice(0,n(t)+1).replace(o,""):t}},96291:t=>{t.exports=function(t){return function(e){return t(e)}}},21213:(t,e,r)=>{var n=r(43484),o=r(34776),i=r(19544),a=r(5354),c=r(51512),u=r(78874);t.exports=function(t,e,r){var l=-1,s=o,f=t.length,p=!0,h=[],d=h;if(r)p=!1,s=i;else if(f>=200){var y=e?null:c(t);if(y)return u(y);p=!1,s=a,d=new n}else d=e?[]:h;t:for(;++l{t.exports=function(t,e){return t.has(e)}},80204:(t,e,r)=>{var n=r(32966),o=r(76958),i=r(31364),a=r(41029);t.exports=function(t,e){return n(t)?t:o(t,e)?[t]:i(a(t))}},23136:(t,e,r)=>{var n=r(55804);t.exports=function(t,e,r){var o=t.length;return r=void 0===r?o:r,!e&&r>=o?t:n(t,e,r)}},17523:(t,e,r)=>{var n=r(76871);t.exports=function(t,e){if(t!==e){var r=void 0!==t,o=null===t,i=t==t,a=n(t),c=void 0!==e,u=null===e,l=e==e,s=n(e);if(!u&&!s&&!a&&t>e||a&&c&&l&&!u&&!s||o&&c&&l||!r&&l||!i)return 1;if(!o&&!a&&!s&&t{var n=r(17523);t.exports=function(t,e,r){for(var o=-1,i=t.criteria,a=e.criteria,c=i.length,u=r.length;++o=u)return l;return l*("desc"==r[o]?-1:1)}}return t.index-e.index}},35987:(t,e,r)=>{var n=r(39288)["__core-js_shared__"];t.exports=n},15271:(t,e,r)=>{var n=r(17632);t.exports=function(t,e){return function(r,o){if(null==r)return r;if(!n(r))return t(r,o);for(var i=r.length,a=e?i:-1,c=Object(r);(e?a--:++a{t.exports=function(t){return function(e,r,n){for(var o=-1,i=Object(e),a=n(e),c=a.length;c--;){var u=a[t?c:++o];if(!1===r(i[u],u,i))break}return e}}},64362:(t,e,r)=>{var n=r(23136),o=r(16888),i=r(78041),a=r(41029);t.exports=function(t){return function(e){var r=o(e=a(e))?i(e):void 0,c=r?r[0]:e.charAt(0),u=r?n(r,1).join(""):e.slice(1);return c[t]()+u}}},59698:(t,e,r)=>{var n=r(44729),o=r(17632),i=r(85865);t.exports=function(t){return function(e,r,a){var c=Object(e);if(!o(e)){var u=n(r,3);e=i(e),r=function(t){return u(c[t],t,c)}}var l=t(e,r,a);return l>-1?c[u?e[l]:l]:void 0}}},81592:(t,e,r)=>{var n=r(97502),o=r(47760),i=r(72616);t.exports=function(t){return function(e,r,a){return a&&"number"!=typeof a&&o(e,r,a)&&(r=a=void 0),e=i(e),void 0===r?(r=e,e=0):r=i(r),a=void 0===a?e{var n=r(39746),o=r(73525),i=r(78874),a=n&&1/i(new n([,-0]))[1]==1/0?function(t){return new n(t)}:o;t.exports=a},99e3:(t,e,r)=>{var n=r(7017),o=function(){try{var t=n(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=o},12317:(t,e,r)=>{var n=r(43484),o=r(83057),i=r(5354);t.exports=function(t,e,r,a,c,u){var l=1&r,s=t.length,f=e.length;if(s!=f&&!(l&&f>s))return!1;var p=u.get(t),h=u.get(e);if(p&&h)return p==e&&h==t;var d=-1,y=!0,v=2&r?new n:void 0;for(u.set(t,e),u.set(e,t);++d{var n=r(76245),o=r(89377),i=r(64111),a=r(12317),c=r(59616),u=r(78874),l=n?n.prototype:void 0,s=l?l.valueOf:void 0;t.exports=function(t,e,r,n,l,f,p){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)break;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":if(t.byteLength!=e.byteLength||!f(new o(t),new o(e)))break;return!0;case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var h=c;case"[object Set]":var d=1&n;if(h||(h=u),t.size!=e.size&&!d)break;var y=p.get(t);if(y)return y==e;n|=2,p.set(t,e);var v=a(h(t),h(e),n,l,f,p);return p.delete(t),v;case"[object Symbol]":if(s)return s.call(t)==s.call(e)}return!1}},1958:(t,e,r)=>{var n=r(67),o=Object.prototype.hasOwnProperty;t.exports=function(t,e,r,i,a,c){var u=1&r,l=n(t),s=l.length;if(s!=n(e).length&&!u)return!1;for(var f=s;f--;){var p=l[f];if(!(u?p in e:o.call(e,p)))return!1}var h=c.get(t),d=c.get(e);if(h&&d)return h==e&&d==t;var y=!0;c.set(t,e),c.set(e,t);for(var v=u;++f{var e="object"==typeof global&&global&&global.Object===Object&&global;t.exports=e},67:(t,e,r)=>{var n=r(24003),o=r(26102),i=r(85865);t.exports=function(t){return n(t,i,o)}},4326:(t,e,r)=>{var n=r(24587);t.exports=function(t,e){var r=t.__data__;return n(e)?r["string"==typeof e?"string":"hash"]:r.map}},35906:(t,e,r)=>{var n=r(61623),o=r(85865);t.exports=function(t){for(var e=o(t),r=e.length;r--;){var i=e[r],a=t[i];e[r]=[i,a,n(a)]}return e}},7017:(t,e,r)=>{var n=r(74104),o=r(12751);t.exports=function(t,e){var r=o(t,e);return n(r)?r:void 0}},89083:(t,e,r)=>{var n=r(87181)(Object.getPrototypeOf,Object);t.exports=n},34244:(t,e,r)=>{var n=r(76245),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,c=n?n.toStringTag:void 0;t.exports=function(t){var e=i.call(t,c),r=t[c];try{t[c]=void 0;var n=!0}catch(t){}var o=a.call(t);return n&&(e?t[c]=r:delete t[c]),o}},26102:(t,e,r)=>{var n=r(17536),o=r(95252),i=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,c=a?function(t){return null==t?[]:n(a(t=Object(t)),function(e){return i.call(t,e)})}:o;t.exports=c},74963:(t,e,r)=>{var n=r(44654),o=r(67926),i=r(9186),a=r(39746),c=r(35803),u=r(1534),l=r(81708),s="[object Map]",f="[object Promise]",p="[object Set]",h="[object WeakMap]",d="[object DataView]",y=l(n),v=l(o),m=l(i),g=l(a),b=l(c),x=u;(n&&x(new n(new ArrayBuffer(1)))!=d||o&&x(new o)!=s||i&&x(i.resolve())!=f||a&&x(new a)!=p||c&&x(new c)!=h)&&(x=function(t){var e=u(t),r="[object Object]"==e?t.constructor:void 0,n=r?l(r):"";if(n)switch(n){case y:return d;case v:return s;case m:return f;case g:return p;case b:return h}return e}),t.exports=x},12751:t=>{t.exports=function(t,e){return null==t?void 0:t[e]}},23932:(t,e,r)=>{var n=r(80204),o=r(46148),i=r(32966),a=r(19699),c=r(99002),u=r(1094);t.exports=function(t,e,r){e=n(e,t);for(var l=-1,s=e.length,f=!1;++l{var e=RegExp("[\\u200d\ud800-\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");t.exports=function(t){return e.test(t)}},7392:(t,e,r)=>{var n=r(67193);t.exports=function(){this.__data__=n?n(null):{},this.size=0}},29247:t=>{t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},84190:(t,e,r)=>{var n=r(67193),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0}},66193:(t,e,r)=>{var n=r(67193),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return n?void 0!==e[t]:o.call(e,t)}},66681:(t,e,r)=>{var n=r(67193);t.exports=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this}},62565:(t,e,r)=>{var n=r(76245),o=r(46148),i=r(32966),a=n?n.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},19699:t=>{var e=/^(?:0|[1-9]\d*)$/;t.exports=function(t,r){var n=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&e.test(t))&&t>-1&&t%1==0&&t{var n=r(64111),o=r(17632),i=r(19699),a=r(62880);t.exports=function(t,e,r){if(!a(r))return!1;var c=typeof e;return("number"==c?!!(o(r)&&i(e,r.length)):"string"==c&&e in r)&&n(r[e],t)}},76958:(t,e,r)=>{var n=r(32966),o=r(76871),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=function(t,e){if(n(t))return!1;var r=typeof t;return!!("number"==r||"symbol"==r||"boolean"==r||null==t||o(t))||a.test(t)||!i.test(t)||null!=e&&t in Object(e)}},24587:t=>{t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},15621:(t,e,r)=>{var n=r(35987),o=function(){var t=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();t.exports=function(t){return!!o&&o in t}},83314:t=>{var e=Object.prototype;t.exports=function(t){var r=t&&t.constructor;return t===("function"==typeof r&&r.prototype||e)}},61623:(t,e,r)=>{var n=r(62880);t.exports=function(t){return t==t&&!n(t)}},38048:t=>{t.exports=function(){this.__data__=[],this.size=0}},82142:(t,e,r)=>{var n=r(33646),o=Array.prototype.splice;t.exports=function(t){var e=this.__data__,r=n(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)}},83226:(t,e,r)=>{var n=r(33646);t.exports=function(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},84001:(t,e,r)=>{var n=r(33646);t.exports=function(t){return n(this.__data__,t)>-1}},31127:(t,e,r)=>{var n=r(33646);t.exports=function(t,e){var r=this.__data__,o=n(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}},86487:(t,e,r)=>{var n=r(27513),o=r(58148),i=r(67926);t.exports=function(){this.size=0,this.__data__={hash:new n,map:new(i||o),string:new n}}},93976:(t,e,r)=>{var n=r(4326);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},91053:(t,e,r)=>{var n=r(4326);t.exports=function(t){return n(this,t).get(t)}},29941:(t,e,r)=>{var n=r(4326);t.exports=function(t){return n(this,t).has(t)}},70144:(t,e,r)=>{var n=r(4326);t.exports=function(t,e){var r=n(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}},59616:t=>{t.exports=function(t){var e=-1,r=Array(t.size);return t.forEach(function(t,n){r[++e]=[n,t]}),r}},17106:t=>{t.exports=function(t,e){return function(r){return null!=r&&r[t]===e&&(void 0!==e||t in Object(r))}}},85244:(t,e,r)=>{var n=r(97300);t.exports=function(t){var e=n(t,function(t){return 500===r.size&&r.clear(),t}),r=e.cache;return e}},67193:(t,e,r)=>{var n=r(7017)(Object,"create");t.exports=n},66045:(t,e,r)=>{var n=r(87181)(Object.keys,Object);t.exports=n},7553:(t,e,r)=>{t=r.nmd(t);var n=r(37611),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,a=i&&i.exports===o&&n.process,c=function(){try{var t=i&&i.require&&i.require("util").types;if(t)return t;return a&&a.binding&&a.binding("util")}catch(t){}}();t.exports=c},13390:t=>{var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},87181:t=>{t.exports=function(t,e){return function(r){return t(e(r))}}},21112:(t,e,r)=>{var n=r(39137),o=Math.max;t.exports=function(t,e,r){return e=o(void 0===e?t.length-1:e,0),function(){for(var i=arguments,a=-1,c=o(i.length-e,0),u=Array(c);++a{var n=r(37611),o="object"==typeof self&&self&&self.Object===Object&&self,i=n||o||Function("return this")();t.exports=i},51793:t=>{t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},59191:t=>{t.exports=function(t){return this.__data__.has(t)}},78874:t=>{t.exports=function(t){var e=-1,r=Array(t.size);return t.forEach(function(t){r[++e]=t}),r}},234:(t,e,r)=>{var n=r(44578),o=r(72347)(n);t.exports=o},72347:t=>{var e=Date.now;t.exports=function(t){var r=0,n=0;return function(){var o=e(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}},82795:(t,e,r)=>{var n=r(58148);t.exports=function(){this.__data__=new n,this.size=0}},9113:t=>{t.exports=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}},80934:t=>{t.exports=function(t){return this.__data__.get(t)}},68732:t=>{t.exports=function(t){return this.__data__.has(t)}},5525:(t,e,r)=>{var n=r(58148),o=r(67926),i=r(30095);t.exports=function(t,e){var r=this.__data__;if(r instanceof n){var a=r.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++r.size,this;r=this.__data__=new i(a)}return r.set(t,e),this.size=r.size,this}},936:t=>{t.exports=function(t,e,r){for(var n=r-1,o=t.length;++n{var n=r(72375),o=r(16888),i=r(38582);t.exports=function(t){return o(t)?i(t):n(t)}},31364:(t,e,r)=>{var n=r(85244),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,a=n(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(o,function(t,r,n,o){e.push(n?o.replace(i,"$1"):r||t)}),e});t.exports=a},1094:(t,e,r)=>{var n=r(76871),o=1/0;t.exports=function(t){if("string"==typeof t||n(t))return t;var e=t+"";return"0"==e&&1/t==-o?"-0":e}},81708:t=>{var e=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},5587:t=>{var e=/\s/;t.exports=function(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}},38582:t=>{var e="\ud800-\udfff",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",n="\ud83c[\udffb-\udfff]",o="[^"+e+"]",i="(?:\ud83c[\udde6-\uddff]){2}",a="[\ud800-\udbff][\udc00-\udfff]",c="(?:"+r+"|"+n+")?",u="[\\ufe0e\\ufe0f]?",l="(?:\\u200d(?:"+[o,i,a].join("|")+")"+u+c+")*",s=RegExp(n+"(?="+n+")|(?:"+[o+r+"?",r,i,a,"["+e+"]"].join("|")+")"+(u+c+l),"g");t.exports=function(t){return t.match(s)||[]}},44347:t=>{t.exports=function(t){return function(){return t}}},19788:(t,e,r)=>{var n=r(62880),o=r(22695),i=r(41309),a=Math.max,c=Math.min;t.exports=function(t,e,r){var u,l,s,f,p,h,d=0,y=!1,v=!1,m=!0;if("function"!=typeof t)throw TypeError("Expected a function");function g(e){var r=u,n=l;return u=l=void 0,d=e,f=t.apply(n,r)}function b(t){var r=t-h,n=t-d;return void 0===h||r>=e||r<0||v&&n>=s}function x(){var t,r,n,i=o();if(b(i))return O(i);p=setTimeout(x,(t=i-h,r=i-d,n=e-t,v?c(n,s-r):n))}function O(t){return(p=void 0,m&&u)?g(t):(u=l=void 0,f)}function w(){var t,r=o(),n=b(r);if(u=arguments,l=this,h=r,n){if(void 0===p)return d=t=h,p=setTimeout(x,e),y?g(t):f;if(v)return clearTimeout(p),p=setTimeout(x,e),g(h)}return void 0===p&&(p=setTimeout(x,e)),f}return e=i(e)||0,n(r)&&(y=!!r.leading,s=(v="maxWait"in r)?a(i(r.maxWait)||0,e):s,m="trailing"in r?!!r.trailing:m),w.cancel=function(){void 0!==p&&clearTimeout(p),d=0,u=h=l=p=void 0},w.flush=function(){return void 0===p?f:O(o())},w}},64111:t=>{t.exports=function(t,e){return t===e||t!=t&&e!=e}},10853:(t,e,r)=>{var n=r(12977),o=r(78545),i=r(44729),a=r(32966),c=r(47760);t.exports=function(t,e,r){var u=a(t)?n:o;return r&&c(t,e,r)&&(e=void 0),u(t,i(e,3))}},9660:(t,e,r)=>{var n=r(59698)(r(38988));t.exports=n},38988:(t,e,r)=>{var n=r(47941),o=r(44729),i=r(57576),a=Math.max;t.exports=function(t,e,r){var c=null==t?0:t.length;if(!c)return -1;var u=null==r?0:i(r);return u<0&&(u=a(c+u,0)),n(t,o(e,3),u)}},78352:(t,e,r)=>{var n=r(24354),o=r(59866);t.exports=function(t,e){return n(o(t,e),1)}},9459:(t,e,r)=>{var n=r(57305);t.exports=function(t,e,r){var o=null==t?void 0:n(t,e);return void 0===o?r:o}},1433:(t,e,r)=>{var n=r(50045),o=r(23932);t.exports=function(t,e){return null!=t&&o(t,e,n)}},24576:t=>{t.exports=function(t){return t}},46148:(t,e,r)=>{var n=r(79574),o=r(91380),i=Object.prototype,a=i.hasOwnProperty,c=i.propertyIsEnumerable,u=n(function(){return arguments}())?n:function(t){return o(t)&&a.call(t,"callee")&&!c.call(t,"callee")};t.exports=u},32966:t=>{var e=Array.isArray;t.exports=e},17632:(t,e,r)=>{var n=r(85586),o=r(99002);t.exports=function(t){return null!=t&&o(t.length)&&!n(t)}},99388:(t,e,r)=>{var n=r(1534),o=r(91380);t.exports=function(t){return!0===t||!1===t||o(t)&&"[object Boolean]"==n(t)}},10750:(t,e,r)=>{t=r.nmd(t);var n=r(39288),o=r(89531),i=e&&!e.nodeType&&e,a=i&&t&&!t.nodeType&&t,c=a&&a.exports===i?n.Buffer:void 0,u=c?c.isBuffer:void 0;t.exports=u||o},81711:(t,e,r)=>{var n=r(88132);t.exports=function(t,e){return n(t,e)}},85586:(t,e,r)=>{var n=r(1534),o=r(62880);t.exports=function(t){if(!o(t))return!1;var e=n(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},99002:t=>{t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},81719:(t,e,r)=>{var n=r(77717);t.exports=function(t){return n(t)&&t!=+t}},20119:t=>{t.exports=function(t){return null==t}},77717:(t,e,r)=>{var n=r(1534),o=r(91380);t.exports=function(t){return"number"==typeof t||o(t)&&"[object Number]"==n(t)}},62880:t=>{t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},91380:t=>{t.exports=function(t){return null!=t&&"object"==typeof t}},36153:(t,e,r)=>{var n=r(1534),o=r(89083),i=r(91380),a=Object.prototype,c=Function.prototype.toString,u=a.hasOwnProperty,l=c.call(Object);t.exports=function(t){if(!i(t)||"[object Object]"!=n(t))return!1;var e=o(t);if(null===e)return!0;var r=u.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&c.call(r)==l}},4891:(t,e,r)=>{var n=r(1534),o=r(32966),i=r(91380);t.exports=function(t){return"string"==typeof t||!o(t)&&i(t)&&"[object String]"==n(t)}},76871:(t,e,r)=>{var n=r(1534),o=r(91380);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==n(t)}},42191:(t,e,r)=>{var n=r(17633),o=r(96291),i=r(7553),a=i&&i.isTypedArray,c=a?o(a):n;t.exports=c},85865:(t,e,r)=>{var n=r(77133),o=r(54190),i=r(17632);t.exports=function(t){return i(t)?n(t):o(t)}},90601:t=>{t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},59866:(t,e,r)=>{var n=r(29738),o=r(44729),i=r(64635),a=r(32966);t.exports=function(t,e){return(a(t)?n:i)(t,o(e,3))}},13880:(t,e,r)=>{var n=r(15216),o=r(59796),i=r(44729);t.exports=function(t,e){var r={};return e=i(e,3),o(t,function(t,o,i){n(r,o,e(t,o,i))}),r}},31955:(t,e,r)=>{var n=r(18401),o=r(20913),i=r(24576);t.exports=function(t){return t&&t.length?n(t,i,o):void 0}},4344:(t,e,r)=>{var n=r(18401),o=r(20913),i=r(44729);t.exports=function(t,e){return t&&t.length?n(t,i(e,2),o):void 0}},97300:(t,e,r)=>{var n=r(30095);function o(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw TypeError("Expected a function");var r=function(){var n=arguments,o=e?e.apply(this,n):n[0],i=r.cache;if(i.has(o))return i.get(o);var a=t.apply(this,n);return r.cache=i.set(o,a)||i,a};return r.cache=new(o.Cache||n),r}o.Cache=n,t.exports=o},52692:(t,e,r)=>{var n=r(18401),o=r(16409),i=r(24576);t.exports=function(t){return t&&t.length?n(t,i,o):void 0}},72175:(t,e,r)=>{var n=r(18401),o=r(44729),i=r(16409);t.exports=function(t,e){return t&&t.length?n(t,o(e,2),i):void 0}},73525:t=>{t.exports=function(){}},22695:(t,e,r)=>{var n=r(39288);t.exports=function(){return n.Date.now()}},94416:(t,e,r)=>{var n=r(78974),o=r(3243),i=r(76958),a=r(1094);t.exports=function(t){return i(t)?n(a(t)):o(t)}},65680:(t,e,r)=>{var n=r(81592)();t.exports=n},34009:(t,e,r)=>{var n=r(83057),o=r(44729),i=r(64993),a=r(32966),c=r(47760);t.exports=function(t,e,r){var u=a(t)?n:i;return r&&c(t,e,r)&&(e=void 0),u(t,o(e,3))}},77529:(t,e,r)=>{var n=r(24354),o=r(40620),i=r(44563),a=r(47760),c=i(function(t,e){if(null==t)return[];var r=e.length;return r>1&&a(t,e[0],e[1])?e=[]:r>2&&a(e[0],e[1],e[2])&&(e=[e[0]]),o(t,n(e,1),[])});t.exports=c},95252:t=>{t.exports=function(){return[]}},89531:t=>{t.exports=function(){return!1}},69450:(t,e,r)=>{var n=r(19788),o=r(62880);t.exports=function(t,e,r){var i=!0,a=!0;if("function"!=typeof t)throw TypeError("Expected a function");return o(r)&&(i="leading"in r?!!r.leading:i,a="trailing"in r?!!r.trailing:a),n(t,e,{leading:i,maxWait:e,trailing:a})}},72616:(t,e,r)=>{var n=r(41309),o=1/0;t.exports=function(t){return t?(t=n(t))===o||t===-o?(t<0?-1:1)*17976931348623157e292:t==t?t:0:0===t?t:0}},57576:(t,e,r)=>{var n=r(72616);t.exports=function(t){var e=n(t),r=e%1;return e==e?r?e-r:e:0}},41309:(t,e,r)=>{var n=r(37192),o=r(62880),i=r(76871),a=0/0,c=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,l=/^0o[0-7]+$/i,s=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return a;if(o(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=o(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=n(t);var r=u.test(t);return r||l.test(t)?s(t.slice(2),r?2:8):c.test(t)?a:+t}},41029:(t,e,r)=>{var n=r(96115);t.exports=function(t){return null==t?"":n(t)}},82511:(t,e,r)=>{var n=r(44729),o=r(21213);t.exports=function(t,e){return t&&t.length?o(t,n(e,2)):[]}},32009:(t,e,r)=>{var n=r(64362)("toUpperCase");t.exports=n},35047:(t,e,r)=>{"use strict";var n=r(77389);r.o(n,"usePathname")&&r.d(e,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(e,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(e,{useSearchParams:function(){return n.useSearchParams}})},99899:(t,e,r)=>{"use strict";var n=r(56715);function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function t(t,e,r,o,i,a){if(a!==n){var c=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function e(){return t}t.isRequired=t;var r={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:i,resetWarningCache:o};return r.PropTypes=r,r}},78439:(t,e,r)=>{t.exports=r(99899)()},56715:t=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4773:(t,e,r)=>{"use strict";function n(){var t=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=t&&this.setState(t)}function o(t){this.setState((function(e){var r=this.constructor.getDerivedStateFromProps(t,e);return null!=r?r:null}).bind(this))}function i(t,e){try{var r=this.props,n=this.state;this.props=t,this.state=e,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(r,n)}finally{this.props=r,this.state=n}}function a(t){var e=t.prototype;if(!e||!e.isReactComponent)throw Error("Can only polyfill class components");if("function"!=typeof t.getDerivedStateFromProps&&"function"!=typeof e.getSnapshotBeforeUpdate)return t;var r=null,a=null,c=null;if("function"==typeof e.componentWillMount?r="componentWillMount":"function"==typeof e.UNSAFE_componentWillMount&&(r="UNSAFE_componentWillMount"),"function"==typeof e.componentWillReceiveProps?a="componentWillReceiveProps":"function"==typeof e.UNSAFE_componentWillReceiveProps&&(a="UNSAFE_componentWillReceiveProps"),"function"==typeof e.componentWillUpdate?c="componentWillUpdate":"function"==typeof e.UNSAFE_componentWillUpdate&&(c="UNSAFE_componentWillUpdate"),null!==r||null!==a||null!==c)throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+(t.displayName||t.name)+" uses "+("function"==typeof t.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()")+" but also contains the following legacy lifecycles:"+(null!==r?"\n "+r:"")+(null!==a?"\n "+a:"")+(null!==c?"\n "+c:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks");if("function"==typeof t.getDerivedStateFromProps&&(e.componentWillMount=n,e.componentWillReceiveProps=o),"function"==typeof e.getSnapshotBeforeUpdate){if("function"!=typeof e.componentDidUpdate)throw Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");e.componentWillUpdate=i;var u=e.componentDidUpdate;e.componentDidUpdate=function(t,e,r){var n=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:r;u.call(this,t,e,n)}}return t}r.r(e),r.d(e,{polyfill:()=>a}),n.__suppressDeprecationWarning=!0,o.__suppressDeprecationWarning=!0,i.__suppressDeprecationWarning=!0},77454:(t,e,r)=>{"use strict";e.__esModule=!0,e.default=void 0,function(t){if(!t||!t.__esModule){var e={};if(null!=t){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var n=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,r):{};n.get||n.set?Object.defineProperty(e,r,n):e[r]=t[r]}}e.default=t}}(r(78439));var n=c(r(6616)),o=c(r(67983)),i=c(r(17577)),a=c(r(81842));function c(t){return t&&t.__esModule?t:{default:t}}function u(){return(u=Object.assign||function(t){for(var e=1;e{"use strict";e.__esModule=!0,e.default=void 0,a(r(78439));var n=a(r(17577)),o=r(60962),i=a(r(92395));function a(t){return t&&t.__esModule?t:{default:t}}var c=function(t){function e(){for(var e,r=arguments.length,n=Array(r),o=0;o=0||(o[r]=t[r]);return o}(t,["children","in"]),a=n.default.Children.toArray(e),c=a[0],u=a[1];return delete o.onEnter,delete o.onEntering,delete o.onEntered,delete o.onExit,delete o.onExiting,delete o.onExited,n.default.createElement(i.default,o,r?n.default.cloneElement(c,{key:"first",onEnter:this.handleEnter,onEntering:this.handleEntering,onEntered:this.handleEntered}):n.default.cloneElement(u,{key:"second",onEnter:this.handleExit,onEntering:this.handleExiting,onEntered:this.handleExited}))},e}(n.default.Component);c.propTypes={},e.default=c,t.exports=e.default},81842:(t,e,r)=>{"use strict";e.__esModule=!0,e.default=e.EXITING=e.ENTERED=e.ENTERING=e.EXITED=e.UNMOUNTED=void 0;var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var n=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,r):{};n.get||n.set?Object.defineProperty(e,r,n):e[r]=t[r]}}return e.default=t,e}(r(78439)),o=c(r(17577)),i=c(r(60962)),a=r(4773);function c(t){return t&&t.__esModule?t:{default:t}}r(5640);var u="unmounted";e.UNMOUNTED=u;var l="exited";e.EXITED=l;var s="entering";e.ENTERING=s;var f="entered";e.ENTERED=f;var p="exiting";e.EXITING=p;var h=function(t){function e(e,r){n=t.call(this,e,r)||this;var n,o,i=r.transitionGroup,a=i&&!i.isMounting?e.enter:e.appear;return n.appearStatus=null,e.in?a?(o=l,n.appearStatus=s):o=f:o=e.unmountOnExit||e.mountOnEnter?u:l,n.state={status:o},n.nextCallback=null,n}e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t;var r=e.prototype;return r.getChildContext=function(){return{transitionGroup:null}},e.getDerivedStateFromProps=function(t,e){return t.in&&e.status===u?{status:l}:null},r.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},r.componentDidUpdate=function(t){var e=null;if(t!==this.props){var r=this.state.status;this.props.in?r!==s&&r!==f&&(e=s):(r===s||r===f)&&(e=p)}this.updateStatus(!1,e)},r.componentWillUnmount=function(){this.cancelNextCallback()},r.getTimeouts=function(){var t,e,r,n=this.props.timeout;return t=e=r=n,null!=n&&"number"!=typeof n&&(t=n.exit,e=n.enter,r=void 0!==n.appear?n.appear:e),{exit:t,enter:e,appear:r}},r.updateStatus=function(t,e){if(void 0===t&&(t=!1),null!==e){this.cancelNextCallback();var r=i.default.findDOMNode(this);e===s?this.performEnter(r,t):this.performExit(r)}else this.props.unmountOnExit&&this.state.status===l&&this.setState({status:u})},r.performEnter=function(t,e){var r=this,n=this.props.enter,o=this.context.transitionGroup?this.context.transitionGroup.isMounting:e,i=this.getTimeouts(),a=o?i.appear:i.enter;if(!e&&!n){this.safeSetState({status:f},function(){r.props.onEntered(t)});return}this.props.onEnter(t,o),this.safeSetState({status:s},function(){r.props.onEntering(t,o),r.onTransitionEnd(t,a,function(){r.safeSetState({status:f},function(){r.props.onEntered(t,o)})})})},r.performExit=function(t){var e=this,r=this.props.exit,n=this.getTimeouts();if(!r){this.safeSetState({status:l},function(){e.props.onExited(t)});return}this.props.onExit(t),this.safeSetState({status:p},function(){e.props.onExiting(t),e.onTransitionEnd(t,n.exit,function(){e.safeSetState({status:l},function(){e.props.onExited(t)})})})},r.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},r.safeSetState=function(t,e){e=this.setNextCallback(e),this.setState(t,e)},r.setNextCallback=function(t){var e=this,r=!0;return this.nextCallback=function(n){r&&(r=!1,e.nextCallback=null,t(n))},this.nextCallback.cancel=function(){r=!1},this.nextCallback},r.onTransitionEnd=function(t,e,r){this.setNextCallback(r);var n=null==e&&!this.props.addEndListener;if(!t||n){setTimeout(this.nextCallback,0);return}this.props.addEndListener&&this.props.addEndListener(t,this.nextCallback),null!=e&&setTimeout(this.nextCallback,e)},r.render=function(){var t=this.state.status;if(t===u)return null;var e=this.props,r=e.children,n=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(e,["children"]);if(delete n.in,delete n.mountOnEnter,delete n.unmountOnExit,delete n.appear,delete n.enter,delete n.exit,delete n.timeout,delete n.addEndListener,delete n.onEnter,delete n.onEntering,delete n.onEntered,delete n.onExit,delete n.onExiting,delete n.onExited,"function"==typeof r)return r(t,n);var i=o.default.Children.only(r);return o.default.cloneElement(i,n)},e}(o.default.Component);function d(){}h.contextTypes={transitionGroup:n.object},h.childContextTypes={transitionGroup:function(){}},h.propTypes={},h.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:d,onEntering:d,onEntered:d,onExit:d,onExiting:d,onExited:d},h.UNMOUNTED=0,h.EXITED=1,h.ENTERING=2,h.ENTERED=3,h.EXITING=4;var y=(0,a.polyfill)(h);e.default=y},92395:(t,e,r)=>{"use strict";e.__esModule=!0,e.default=void 0;var n=c(r(78439)),o=c(r(17577)),i=r(4773),a=r(95371);function c(t){return t&&t.__esModule?t:{default:t}}function u(){return(u=Object.assign||function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,["component","childFactory"]),i=s(this.state.children).map(r);return(delete n.appear,delete n.enter,delete n.exit,null===e)?i:o.default.createElement(e,n,i)},e}(o.default.Component);f.childContextTypes={transitionGroup:n.default.object.isRequired},f.propTypes={},f.defaultProps={component:"div",childFactory:function(t){return t}};var p=(0,i.polyfill)(f);e.default=p,t.exports=e.default},29362:(t,e,r)=>{"use strict";var n=c(r(77454)),o=c(r(5301)),i=c(r(92395)),a=c(r(81842));function c(t){return t&&t.__esModule?t:{default:t}}t.exports={Transition:a.default,TransitionGroup:i.default,ReplaceTransition:o.default,CSSTransition:n.default}},95371:(t,e,r)=>{"use strict";e.__esModule=!0,e.getChildMapping=o,e.mergeChildMappings=i,e.getInitialChildMapping=function(t,e){return o(t.children,function(r){return(0,n.cloneElement)(r,{onExited:e.bind(null,r),in:!0,appear:a(r,"appear",t),enter:a(r,"enter",t),exit:a(r,"exit",t)})})},e.getNextChildMapping=function(t,e,r){var c=o(t.children),u=i(e,c);return Object.keys(u).forEach(function(o){var i=u[o];if((0,n.isValidElement)(i)){var l=o in e,s=o in c,f=e[o],p=(0,n.isValidElement)(f)&&!f.props.in;s&&(!l||p)?u[o]=(0,n.cloneElement)(i,{onExited:r.bind(null,i),in:!0,exit:a(i,"exit",t),enter:a(i,"enter",t)}):s||!l||p?s&&l&&(0,n.isValidElement)(f)&&(u[o]=(0,n.cloneElement)(i,{onExited:r.bind(null,i),in:f.props.in,exit:a(i,"exit",t),enter:a(i,"enter",t)})):u[o]=(0,n.cloneElement)(i,{in:!1})}}),u};var n=r(17577);function o(t,e){var r=Object.create(null);return t&&n.Children.map(t,function(t){return t}).forEach(function(t){r[t.key]=e&&(0,n.isValidElement)(t)?e(t):t}),r}function i(t,e){function r(r){return r in e?e[r]:t[r]}t=t||{},e=e||{};var n,o=Object.create(null),i=[];for(var a in t)a in e?i.length&&(o[a]=i,i=[]):i.push(a);var c={};for(var u in e){if(o[u])for(n=0;n{"use strict";e.__esModule=!0,e.classNamesShape=e.timeoutsShape=void 0,function(t){t&&t.__esModule}(r(78439)),e.timeoutsShape=null,e.classNamesShape=null},98255:(t,e)=>{"use strict";var r="function"==typeof Symbol&&Symbol.for,n=r?Symbol.for("react.element"):60103,o=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,a=r?Symbol.for("react.strict_mode"):60108,c=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,l=r?Symbol.for("react.context"):60110,s=r?Symbol.for("react.async_mode"):60111,f=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,d=(r&&Symbol.for("react.suspense_list"),r?Symbol.for("react.memo"):60115),y=r?Symbol.for("react.lazy"):60116;r&&Symbol.for("react.block"),r&&Symbol.for("react.fundamental"),r&&Symbol.for("react.responder"),r&&Symbol.for("react.scope"),e.isElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===n},e.isFragment=function(t){return function(t){if("object"==typeof t&&null!==t){var e=t.$$typeof;switch(e){case n:switch(t=t.type){case s:case f:case i:case c:case a:case h:return t;default:switch(t=t&&t.$$typeof){case l:case p:case y:case d:case u:return t;default:return e}}case o:return e}}}(t)===i}},29507:(t,e,r)=>{"use strict";t.exports=r(98255)},75668:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>dV});var n={};r.r(n),r.d(n,{scaleBand:()=>tD,scaleDiverging:()=>function t(){var e=eH(ot()(eT));return e.copy=function(){return n4(e,t())},tk.apply(e,arguments)},scaleDivergingLog:()=>function t(){var e=e3(ot()).domain([.1,1,10]);return e.copy=function(){return n4(e,t()).base(e.base())},tk.apply(e,arguments)},scaleDivergingPow:()=>oe,scaleDivergingSqrt:()=>or,scaleDivergingSymlog:()=>function t(){var e=e7(ot());return e.copy=function(){return n4(e,t()).constant(e.constant())},tk.apply(e,arguments)},scaleIdentity:()=>function t(e){var r;function n(t){return null==t||isNaN(t=+t)?r:t}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,ek),n):e.slice()},n.unknown=function(t){return arguments.length?(r=t,n):r},n.copy=function(){return t(e).unknown(r)},e=arguments.length?Array.from(e,ek):[0,1],eH(n)},scaleImplicit:()=>tC,scaleLinear:()=>eZ,scaleLog:()=>function t(){let e=e3(eI()).domain([1,10]);return e.copy=()=>eD(e,t()).base(e.base()),tP.apply(e,arguments),e},scaleOrdinal:()=>tN,scalePoint:()=>tI,scalePow:()=>re,scaleQuantile:()=>function t(){var e,r=[],n=[],o=[];function i(){var t=0,e=Math.max(1,n.length);for(o=Array(e-1);++t=1)return+r(t[n-1],n-1,t);var n,o=(n-1)*e,i=Math.floor(o),a=+r(t[i],i,t);return a+(+r(t[i+1],i+1,t)-a)*(o-i)}}(r,t/e);return a}function a(t){return null==t||isNaN(t=+t)?e:n[tZ(o,t)]}return a.invertExtent=function(t){var e=n.indexOf(t);return e<0?[NaN,NaN]:[e>0?o[e-1]:r[0],efunction t(){var e,r=0,n=1,o=1,i=[.5],a=[0,1];function c(t){return null!=t&&t<=t?a[tZ(i,t,0,o)]:e}function u(){var t=-1;for(i=Array(o);++t=o?[i[o-1],n]:[i[e-1],i[e]]},c.unknown=function(t){return arguments.length&&(e=t),c},c.thresholds=function(){return i.slice()},c.copy=function(){return t().domain([r,n]).range(a).unknown(e)},tP.apply(eH(c),arguments)},scaleRadial:()=>function t(){var e,r=eR(),n=[0,1],o=!1;function i(t){var n,i=Math.sign(n=r(t))*Math.sqrt(Math.abs(n));return isNaN(i)?e:o?Math.round(i):i}return i.invert=function(t){return r.invert(rn(t))},i.domain=function(t){return arguments.length?(r.domain(t),i):r.domain()},i.range=function(t){return arguments.length?(r.range((n=Array.from(t,ek)).map(rn)),i):n.slice()},i.rangeRound=function(t){return i.range(t).round(!0)},i.round=function(t){return arguments.length?(o=!!t,i):o},i.clamp=function(t){return arguments.length?(r.clamp(t),i):r.clamp()},i.unknown=function(t){return arguments.length?(e=t,i):e},i.copy=function(){return t(r.domain(),n).round(o).clamp(r.clamp()).unknown(e)},tP.apply(i,arguments),eH(i)},scaleSequential:()=>function t(){var e=eH(n7()(eT));return e.copy=function(){return n4(e,t())},tk.apply(e,arguments)},scaleSequentialLog:()=>function t(){var e=e3(n7()).domain([1,10]);return e.copy=function(){return n4(e,t()).base(e.base())},tk.apply(e,arguments)},scaleSequentialPow:()=>n8,scaleSequentialQuantile:()=>function t(){var e=[],r=eT;function n(t){if(null!=t&&!isNaN(t=+t))return r((tZ(e,t,1)-1)/(e.length-1))}return n.domain=function(t){if(!arguments.length)return e.slice();for(let r of(e=[],t))null==r||isNaN(r=+r)||e.push(r);return e.sort(tW),n},n.interpolator=function(t){return arguments.length?(r=t,n):r},n.range=function(){return e.map((t,n)=>r(n/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(r,n)=>(function(t,e,r){if(!(!(n=(t=Float64Array.from(function*(t,e){if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(yield e);else{let r=-1;for(let n of t)null!=(n=e(n,++r,t))&&(n=+n)>=n&&(yield n)}}(t,void 0))).length)||isNaN(e=+e))){if(e<=0||n<2)return ri(t);if(e>=1)return ro(t);var n,o=(n-1)*e,i=Math.floor(o),a=ro((function t(e,r,n=0,o=1/0,i){if(r=Math.floor(r),n=Math.floor(Math.max(0,n)),o=Math.floor(Math.min(e.length-1,o)),!(n<=r&&r<=o))return e;for(i=void 0===i?ra:function(t=tW){if(t===tW)return ra;if("function"!=typeof t)throw TypeError("compare is not a function");return(e,r)=>{let n=t(e,r);return n||0===n?n:(0===t(r,r))-(0===t(e,e))}}(i);o>n;){if(o-n>600){let a=o-n+1,c=r-n+1,u=Math.log(a),l=.5*Math.exp(2*u/3),s=.5*Math.sqrt(u*l*(a-l)/a)*(c-a/2<0?-1:1),f=Math.max(n,Math.floor(r-c*l/a+s)),p=Math.min(o,Math.floor(r+(a-c)*l/a+s));t(e,r,f,p,i)}let a=e[r],c=n,u=o;for(rc(e,n,r),i(e[o],a)>0&&rc(e,n,o);ci(e[c],a);)++c;for(;i(e[u],a)>0;)--u}0===i(e[n],a)?rc(e,n,u):rc(e,++u,o),u<=r&&(n=u+1),r<=u&&(o=u-1)}return e})(t,i).subarray(0,i+1));return a+(ri(t.subarray(i+1))-a)*(o-i)}})(e,n/t))},n.copy=function(){return t(r).domain(e)},tk.apply(n,arguments)},scaleSequentialSqrt:()=>n9,scaleSequentialSymlog:()=>function t(){var e=e7(n7());return e.copy=function(){return n4(e,t()).constant(e.constant())},tk.apply(e,arguments)},scaleSqrt:()=>rr,scaleSymlog:()=>function t(){var e=e7(eI());return e.copy=function(){return eD(e,t()).constant(e.constant())},tP.apply(e,arguments)},scaleThreshold:()=>function t(){var e,r=[.5],n=[0,1],o=1;function i(t){return null!=t&&t<=t?n[tZ(r,t,0,o)]:e}return i.domain=function(t){return arguments.length?(o=Math.min((r=Array.from(t)).length,n.length-1),i):r.slice()},i.range=function(t){return arguments.length?(n=Array.from(t),o=Math.min(r.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var e=n.indexOf(t);return[r[e-1],r[e]]},i.unknown=function(t){return arguments.length?(e=t,i):e},i.copy=function(){return t().domain(r).range(n).unknown(e)},tP.apply(i,arguments)},scaleTime:()=>n6,scaleUtc:()=>n5,tickFormat:()=>eX});var o=r(10326),i=r(17577),a=r.n(i),c=r(35047),u=r(32082),l=r(29752),s=r(91664),f=r(41135),p=r(69450),h=r.n(p),d=r(29507),y=r(4891),v=r.n(y),m=r(81719),g=r.n(m),b=r(9459),x=r.n(b),O=r(77717),w=r.n(O),j=function(t){return 0===t?0:t>0?1:-1},S=function(t){return v()(t)&&t.indexOf("%")===t.length-1},A=function(t){return w()(t)&&!g()(t)},E=function(t){return A(t)||v()(t)},P=0,k=function(t){var e=++P;return"".concat(t||"").concat(e)},_=function(t,e){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!A(t)&&!v()(t))return n;if(S(t)){var i=t.indexOf("%");r=e*parseFloat(t.slice(0,i))/100}else r=+t;return g()(r)&&(r=n),o&&r>e&&(r=e),r},T=function(t){if(!t)return null;var e=Object.keys(t);return e&&e.length?t[e[0]]:null},M=function(t){if(!Array.isArray(t))return!1;for(var e=t.length,r={},n=0;n2?r-2:0),o=2;o=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function J(t){return(J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Q={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart"},tt=function(t){return"string"==typeof t?t:t?t.displayName||t.name||"Component":""},te=null,tr=null,tn=function t(e){if(e===te&&Array.isArray(tr))return tr;var r=[];return i.Children.forEach(e,function(e){R()(e)||((0,d.isFragment)(e)?r=r.concat(t(e.props.children)):r.push(e))}),tr=r,te=e,r};function to(t,e){var r=[],n=[];return n=Array.isArray(e)?e.map(function(t){return tt(t)}):[tt(e)],tn(t).forEach(function(t){var e=x()(t,"type.displayName")||x()(t,"type.name");-1!==n.indexOf(e)&&r.push(t)}),r}function ti(t,e){var r=to(t,e);return r&&r[0]}var ta=function(t){if(!t||!t.props)return!1;var e=t.props,r=e.width,n=e.height;return!!A(r)&&!(r<=0)&&!!A(n)&&!(n<=0)},tc=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],tu=function(t,e,r,n){var o,i=null!==(o=null==G?void 0:G[n])&&void 0!==o?o:[];return!L()(t)&&(n&&i.includes(e)||W.includes(e))||r&&V.includes(e)},tl=function(t,e,r){if(!t||"function"==typeof t||"boolean"==typeof t)return null;var n=t;if((0,i.isValidElement)(t)&&(n=t.props),!z()(n))return null;var o={};return Object.keys(n).forEach(function(t){var i;tu(null===(i=n)||void 0===i?void 0:i[t],t,e,r)&&(o[t]=n[t])}),o},ts=function t(e,r){if(e===r)return!0;var n=i.Children.count(e);if(n!==i.Children.count(r))return!1;if(0===n)return!0;if(1===n)return tf(Array.isArray(e)?e[0]:e,Array.isArray(r)?r[0]:r);for(var o=0;o=0)r.push(t);else if(t){var i=tt(t.type),a=e[i]||{},c=a.handler,u=a.once;if(c&&(!u||!n[i])){var l=c(t,i,o);r.push(l),n[i]=!0}}}),r},th=function(t){var e=t&&t.type;return e&&Q[e]?Q[e]:null};function td(t){return(td="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ty(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function tv(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(t=h()(t,O,{trailing:!0,leading:!1}));var e=new ResizeObserver(t),r=P.current.getBoundingClientRect();return C(r.width,r.height),e.observe(P.current),function(){e.disconnect()}},[C,O]);var N=(0,i.useMemo)(function(){var t=T.containerWidth,e=T.containerHeight;if(t<0||e<0)return null;D(S(l)||S(p),"The width(%s) and height(%s) are both fixed numbers,\n maybe you don't need to use a ResponsiveContainer.",l,p),D(!n||n>0,"The aspect(%s) must be greater than zero.",n);var r=S(l)?t:l,o=S(p)?e:p;n&&n>0&&(r?o=r/n:o&&(r=o*n),g&&o>g&&(o=g)),D(r>0||o>0,"The width(%s) and height(%s) of chart should be greater than 0,\n please check the style of container, or the props width(%s) and height(%s),\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\n height and width.",r,o,l,p,v,m,n);var c=!Array.isArray(b)&&(0,d.isElement)(b)&&tt(b.type).endsWith("Chart");return a().Children.map(b,function(t){return(0,d.isElement)(t)?(0,i.cloneElement)(t,tv({width:r,height:o},c?{style:tv({height:"100%",width:"100%",maxHeight:o,maxWidth:r},t.props.style)}:{})):t})},[n,b,p,g,m,v,T,l]);return a().createElement("div",{id:w?"".concat(w):void 0,className:(0,f.Z)("recharts-responsive-container",j),style:tv(tv({},void 0===E?{}:E),{},{width:l,height:p,minWidth:v,minHeight:m,maxHeight:g}),ref:P},N)}),tb=r(65680),tx=r.n(tb),tO=r(77529),tw=r.n(tO),tj=r(9660),tS=r.n(tj),tA=r(10853),tE=r.n(tA);function tP(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function tk(t,e){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof e?this.interpolator(e):this.range(e)}return this}class t_ extends Map{constructor(t,e=tM){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(let[e,r]of t)this.set(e,r)}get(t){return super.get(tT(this,t))}has(t){return super.has(tT(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}(this,t))}}function tT({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function tM(t){return null!==t&&"object"==typeof t?t.valueOf():t}let tC=Symbol("implicit");function tN(){var t=new t_,e=[],r=[],n=tC;function o(o){let i=t.get(o);if(void 0===i){if(n!==tC)return n;t.set(o,i=e.push(o)-1)}return r[i%r.length]}return o.domain=function(r){if(!arguments.length)return e.slice();for(let n of(e=[],t=new t_,r))t.has(n)||t.set(n,e.push(n)-1);return o},o.range=function(t){return arguments.length?(r=Array.from(t),o):r.slice()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return tN(e,r).unknown(n)},tP.apply(o,arguments),o}function tD(){var t,e,r=tN().unknown(void 0),n=r.domain,o=r.range,i=0,a=1,c=!1,u=0,l=0,s=.5;function f(){var r=n().length,f=a=tR?10:u>=tB?5:u>=tL?2:1;return(c<0?(n=Math.round(t*(i=Math.pow(10,-c)/l)),o=Math.round(e*i),n/ie&&--o,i=-i):(n=Math.round(t/(i=Math.pow(10,c)*l)),o=Math.round(e/i),n*ie&&--o),o0))return[];if(t===e)return[t];let n=e=o))return[];let c=i-o+1,u=Array(c);if(n){if(a<0)for(let t=0;te?1:t>=e?0:NaN}function tq(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function tG(t){let e,r,n;function o(t,n,o=0,i=t.length){if(o>>1;0>r(t[e],n)?o=e+1:i=e}while(otW(t(e),r),n=(e,r)=>t(e)-r):(e=t===tW||t===tq?t:tV,r=t,n=t),{left:o,center:function(t,e,r=0,i=t.length){let a=o(t,e,r,i-1);return a>r&&n(t[a-1],e)>-n(t[a],e)?a-1:a},right:function(t,n,o=0,i=t.length){if(o>>1;0>=r(t[e],n)?o=e+1:i=e}while(o>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?eo(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?eo(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=t3.exec(t))?new ea(e[1],e[2],e[3],1):(e=t6.exec(t))?new ea(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=t5.exec(t))?eo(e[1],e[2],e[3],e[4]):(e=t7.exec(t))?eo(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=t4.exec(t))?ep(e[1],e[2]/100,e[3]/100,1):(e=t8.exec(t))?ep(e[1],e[2]/100,e[3]/100,e[4]):t9.hasOwnProperty(t)?en(t9[t]):"transparent"===t?new ea(NaN,NaN,NaN,0):null}function en(t){return new ea(t>>16&255,t>>8&255,255&t,1)}function eo(t,e,r,n){return n<=0&&(t=e=r=NaN),new ea(t,e,r,n)}function ei(t,e,r,n){var o;return 1==arguments.length?((o=t)instanceof tJ||(o=er(o)),o)?new ea((o=o.rgb()).r,o.g,o.b,o.opacity):new ea:new ea(t,e,r,null==n?1:n)}function ea(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function ec(){return`#${ef(this.r)}${ef(this.g)}${ef(this.b)}`}function eu(){let t=el(this.opacity);return`${1===t?"rgb(":"rgba("}${es(this.r)}, ${es(this.g)}, ${es(this.b)}${1===t?")":`, ${t})`}`}function el(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function es(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ef(t){return((t=es(t))<16?"0":"")+t.toString(16)}function ep(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new ed(t,e,r,n)}function eh(t){if(t instanceof ed)return new ed(t.h,t.s,t.l,t.opacity);if(t instanceof tJ||(t=er(t)),!t)return new ed;if(t instanceof ed)return t;var e=(t=t.rgb()).r/255,r=t.g/255,n=t.b/255,o=Math.min(e,r,n),i=Math.max(e,r,n),a=NaN,c=i-o,u=(i+o)/2;return c?(a=e===i?(r-n)/c+(r0&&u<1?0:a,new ed(a,c,u,t.opacity)}function ed(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function ey(t){return(t=(t||0)%360)<0?t+360:t}function ev(t){return Math.max(0,Math.min(1,t||0))}function em(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}function eg(t,e,r,n,o){var i=t*t,a=i*t;return((1-3*t+3*i-a)*e+(4-6*i+3*a)*r+(1+3*t+3*i-3*a)*n+a*o)/6}tY(tJ,er,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:et,formatHex:et,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return eh(this).formatHsl()},formatRgb:ee,toString:ee}),tY(ea,ei,tK(tJ,{brighter(t){return t=null==t?1.4285714285714286:Math.pow(1.4285714285714286,t),new ea(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new ea(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ea(es(this.r),es(this.g),es(this.b),el(this.opacity))},displayable(){return -.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ec,formatHex:ec,formatHex8:function(){return`#${ef(this.r)}${ef(this.g)}${ef(this.b)}${ef((isNaN(this.opacity)?1:this.opacity)*255)}`},formatRgb:eu,toString:eu})),tY(ed,function(t,e,r,n){return 1==arguments.length?eh(t):new ed(t,e,r,null==n?1:n)},tK(tJ,{brighter(t){return t=null==t?1.4285714285714286:Math.pow(1.4285714285714286,t),new ed(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new ed(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,o=2*r-n;return new ea(em(t>=240?t-240:t+120,o,n),em(t,o,n),em(t<120?t+240:t-120,o,n),this.opacity)},clamp(){return new ed(ey(this.h),ev(this.s),ev(this.l),el(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=el(this.opacity);return`${1===t?"hsl(":"hsla("}${ey(this.h)}, ${100*ev(this.s)}%, ${100*ev(this.l)}%${1===t?")":`, ${t})`}`}}));let eb=t=>()=>t;function ex(t,e){var r=e-t;return r?function(e){return t+e*r}:eb(isNaN(t)?e:t)}let eO=function t(e){var r,n=1==(r=+(r=e))?ex:function(t,e){var n,o,i;return e-t?(n=t,o=e,n=Math.pow(n,i=r),o=Math.pow(o,i)-n,i=1/i,function(t){return Math.pow(n+t*o,i)}):eb(isNaN(t)?e:t)};function o(t,e){var r=n((t=ei(t)).r,(e=ei(e)).r),o=n(t.g,e.g),i=n(t.b,e.b),a=ex(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=o(e),t.b=i(e),t.opacity=a(e),t+""}}return o.gamma=t,o}(1);function ew(t){return function(e){var r,n,o=e.length,i=Array(o),a=Array(o),c=Array(o);for(r=0;r=1?(r=1,e-1):Math.floor(r*e),o=t[n],i=t[n+1],a=n>0?t[n-1]:2*o-i,c=nc&&(a=e.slice(c,a),l[u]?l[u]+=a:l[++u]=a),(o=o[0])===(i=i[0])?l[u]?l[u]+=i:l[++u]=i:(l[++u]=null,s.push({i:u,x:ej(o,i)})),c=eA.lastIndex;return ce&&(r=t,t=e,e=r),l=function(r){return Math.max(t,Math.min(e,r))}),n=u>2?eN:eC,o=i=null,f}function f(e){return null==e||isNaN(e=+e)?r:(o||(o=n(a.map(t),c,u)))(t(l(e)))}return f.invert=function(r){return l(e((i||(i=n(c,a.map(t),ej)))(r)))},f.domain=function(t){return arguments.length?(a=Array.from(t,ek),s()):a.slice()},f.range=function(t){return arguments.length?(c=Array.from(t),s()):c.slice()},f.rangeRound=function(t){return c=Array.from(t),u=eP,s()},f.clamp=function(t){return arguments.length?(l=!!t||eT,s()):l!==eT},f.interpolate=function(t){return arguments.length?(u=t,s()):u},f.unknown=function(t){return arguments.length?(r=t,f):r},function(r,n){return t=r,e=n,s()}}function eR(){return eI()(eT,eT)}var eB=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function eL(t){var e;if(!(e=eB.exec(t)))throw Error("invalid format: "+t);return new eU({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function eU(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function ez(t,e){if(!isFinite(t)||0===t)return null;var r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"),n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function eF(t){return(t=ez(Math.abs(t)))?t[1]:NaN}function e$(t,e){var r=ez(t,e);if(!r)return t+"";var n=r[0],o=r[1];return o<0?"0."+Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+Array(o-n.length+2).join("0")}eL.prototype=eU.prototype,eU.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};let eW={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>e$(100*t,e),r:e$,s:function(t,e){var r=ez(t,e);if(!r)return ol=void 0,t.toPrecision(e);var n=r[0],o=r[1],i=o-(ol=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,a=n.length;return i===a?n:i>a?n+Array(i-a+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+Array(1-i).join("0")+ez(t,Math.max(0,e+i-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function eq(t){return t}var eG=Array.prototype.map,eV=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function eX(t,e,r,n){var o,i,a=t$(t,e,r);switch((n=eL(null==n?",f":n)).type){case"s":var c=Math.max(Math.abs(t),Math.abs(e));return null!=n.precision||isNaN(i=Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(eF(c)/3)))-eF(Math.abs(a))))||(n.precision=i),op(n,c);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(i=Math.max(0,eF(Math.abs(Math.max(Math.abs(t),Math.abs(e)))-(o=Math.abs(o=a)))-eF(o))+1)||(n.precision=i-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(i=Math.max(0,-eF(Math.abs(a))))||(n.precision=i-("%"===n.type)*2)}return of(n)}function eH(t){var e=t.domain;return t.ticks=function(t){var r=e();return tz(r[0],r[r.length-1],null==t?10:t)},t.tickFormat=function(t,r){var n=e();return eX(n[0],n[n.length-1],null==t?10:t,r)},t.nice=function(r){null==r&&(r=10);var n,o,i=e(),a=0,c=i.length-1,u=i[a],l=i[c],s=10;for(l0;){if((o=tF(u,l,r))===n)return i[a]=u,i[c]=l,e(i);if(o>0)u=Math.floor(u/o)*o,l=Math.ceil(l/o)*o;else if(o<0)u=Math.ceil(u*o)/o,l=Math.floor(l*o)/o;else break;n=o}return t},t}function eZ(){var t=eR();return t.copy=function(){return eD(t,eZ())},tP.apply(t,arguments),eH(t)}function eY(t,e){t=t.slice();var r,n=0,o=t.length-1,i=t[n],a=t[o];return a-t(-e,r)}function e3(t){let e,r;let n=t(eK,eJ),o=n.domain,i=10;function a(){var a,c;return e=(a=i)===Math.E?Math.log:10===a&&Math.log10||2===a&&Math.log2||(a=Math.log(a),t=>Math.log(t)/a),r=10===(c=i)?e1:c===Math.E?Math.exp:t=>Math.pow(c,t),o()[0]<0?(e=e2(e),r=e2(r),t(eQ,e0)):t(eK,eJ),n}return n.base=function(t){return arguments.length?(i=+t,a()):i},n.domain=function(t){return arguments.length?(o(t),a()):o()},n.ticks=t=>{let n,a;let c=o(),u=c[0],l=c[c.length-1],s=l0){for(;f<=p;++f)for(n=1;nl)break;d.push(a)}}else for(;f<=p;++f)for(n=i-1;n>=1;--n)if(!((a=f>0?n/r(-f):n*r(f))l)break;d.push(a)}2*d.length{if(null==t&&(t=10),null==o&&(o=10===i?"s":","),"function"!=typeof o&&(i%1||null!=(o=eL(o)).precision||(o.trim=!0),o=of(o)),t===1/0)return o;let a=Math.max(1,i*t/n.ticks().length);return t=>{let n=t/r(Math.round(e(t)));return n*io(eY(o(),{floor:t=>r(Math.floor(e(t))),ceil:t=>r(Math.ceil(e(t)))})),n}function e6(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function e5(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function e7(t){var e=1,r=t(e6(1),e5(e));return r.constant=function(r){return arguments.length?t(e6(e=+r),e5(e)):e},eH(r)}function e4(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function e8(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function e9(t){return t<0?-t*t:t*t}function rt(t){var e=t(eT,eT),r=1;return e.exponent=function(e){return arguments.length?1==(r=+e)?t(eT,eT):.5===r?t(e8,e9):t(e4(r),e4(1/r)):r},eH(e)}function re(){var t=rt(eI());return t.copy=function(){return eD(t,re()).exponent(t.exponent())},tP.apply(t,arguments),t}function rr(){return re.apply(null,arguments).exponent(.5)}function rn(t){return Math.sign(t)*t*t}function ro(t,e){let r;if(void 0===e)for(let e of t)null!=e&&(r=e)&&(r=e);else{let n=-1;for(let o of t)null!=(o=e(o,++n,t))&&(r=o)&&(r=o)}return r}function ri(t,e){let r;if(void 0===e)for(let e of t)null!=e&&(r>e||void 0===r&&e>=e)&&(r=e);else{let n=-1;for(let o of t)null!=(o=e(o,++n,t))&&(r>o||void 0===r&&o>=o)&&(r=o)}return r}function ra(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(te?1:0)}function rc(t,e,r){let n=t[e];t[e]=t[r],t[r]=n}of=(os=function(t){var e,r,n,o=void 0===t.grouping||void 0===t.thousands?eq:(e=eG.call(t.grouping,Number),r=t.thousands+"",function(t,n){for(var o=t.length,i=[],a=0,c=e[0],u=0;o>0&&c>0&&(u+c+1>n&&(c=Math.max(1,n-u)),i.push(t.substring(o-=c,o+c)),!((u+=c+1)>n));)c=e[a=(a+1)%e.length];return i.reverse().join(r)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",c=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?eq:(n=eG.call(t.numerals,String),function(t){return t.replace(/[0-9]/g,function(t){return n[+t]})}),l=void 0===t.percent?"%":t.percent+"",s=void 0===t.minus?"−":t.minus+"",f=void 0===t.nan?"NaN":t.nan+"";function p(t,e){var r=(t=eL(t)).fill,n=t.align,p=t.sign,h=t.symbol,d=t.zero,y=t.width,v=t.comma,m=t.precision,g=t.trim,b=t.type;"n"===b?(v=!0,b="g"):eW[b]||(void 0===m&&(m=12),g=!0,b="g"),(d||"0"===r&&"="===n)&&(d=!0,r="0",n="=");var x=(e&&void 0!==e.prefix?e.prefix:"")+("$"===h?i:"#"===h&&/[boxX]/.test(b)?"0"+b.toLowerCase():""),O=("$"===h?a:/[%p]/.test(b)?l:"")+(e&&void 0!==e.suffix?e.suffix:""),w=eW[b],j=/[defgprs%]/.test(b);function S(t){var e,i,a,l=x,h=O;if("c"===b)h=w(t)+h,t="";else{var S=(t=+t)<0||1/t<0;if(t=isNaN(t)?f:w(Math.abs(t),m),g&&(t=function(t){e:for(var e,r=t.length,n=1,o=-1;n0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t}(t)),S&&0==+t&&"+"!==p&&(S=!1),l=(S?"("===p?p:s:"-"===p||"("===p?"":p)+l,h=("s"!==b||isNaN(t)||void 0===ol?"":eV[8+ol/3])+h+(S&&"("===p?")":""),j){for(e=-1,i=t.length;++e(a=t.charCodeAt(e))||a>57){h=(46===a?c+t.slice(e+1):t.slice(e))+h,t=t.slice(0,e);break}}}v&&!d&&(t=o(t,1/0));var A=l.length+t.length+h.length,E=A>1)+l+t+h+E.slice(A);break;default:t=E+l+t+h}return u(t)}return m=void 0===m?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),S.toString=function(){return t+""},S}return{format:p,formatPrefix:function(t,e){var r=3*Math.max(-8,Math.min(8,Math.floor(eF(e)/3))),n=Math.pow(10,-r),o=p(((t=eL(t)).type="f",t),{suffix:eV[8+r/3]});return function(t){return o(n*t)}}}}({thousands:",",grouping:[3],currency:["$",""]})).format,op=os.formatPrefix;let ru=new Date,rl=new Date;function rs(t,e,r,n){function o(e){return t(e=0==arguments.length?new Date:new Date(+e)),e}return o.floor=e=>(t(e=new Date(+e)),e),o.ceil=r=>(t(r=new Date(r-1)),e(r,1),t(r),r),o.round=t=>{let e=o(t),r=o.ceil(t);return t-e(e(t=new Date(+t),null==r?1:Math.floor(r)),t),o.range=(r,n,i)=>{let a;let c=[];if(r=o.ceil(r),i=null==i?1:Math.floor(i),!(r0))return c;do c.push(a=new Date(+r)),e(r,i),t(r);while(ars(e=>{if(e>=e)for(;t(e),!r(e);)e.setTime(e-1)},(t,n)=>{if(t>=t){if(n<0)for(;++n<=0;)for(;e(t,-1),!r(t););else for(;--n>=0;)for(;e(t,1),!r(t););}}),r&&(o.count=(e,n)=>(ru.setTime(+e),rl.setTime(+n),t(ru),t(rl),Math.floor(r(ru,rl))),o.every=t=>isFinite(t=Math.floor(t))&&t>0?t>1?o.filter(n?e=>n(e)%t==0:e=>o.count(0,e)%t==0):o:null),o}let rf=rs(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);rf.every=t=>isFinite(t=Math.floor(t))&&t>0?t>1?rs(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):rf:null,rf.range;let rp=rs(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+1e3*e)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds());rp.range;let rh=rs(t=>{t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},(t,e)=>{t.setTime(+t+6e4*e)},(t,e)=>(e-t)/6e4,t=>t.getMinutes());rh.range;let rd=rs(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+6e4*e)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes());rd.range;let ry=rs(t=>{t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())},(t,e)=>{t.setTime(+t+36e5*e)},(t,e)=>(e-t)/36e5,t=>t.getHours());ry.range;let rv=rs(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+36e5*e)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours());rv.range;let rm=rs(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1);rm.range;let rg=rs(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1);rg.range;let rb=rs(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5));function rx(t){return rs(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+7*e)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}rb.range;let rO=rx(0),rw=rx(1),rj=rx(2),rS=rx(3),rA=rx(4),rE=rx(5),rP=rx(6);function rk(t){return rs(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)},(t,e)=>(e-t)/6048e5)}rO.range,rw.range,rj.range,rS.range,rA.range,rE.range,rP.range;let r_=rk(0),rT=rk(1),rM=rk(2),rC=rk(3),rN=rk(4),rD=rk(5),rI=rk(6);r_.range,rT.range,rM.range,rC.range,rN.range,rD.range,rI.range;let rR=rs(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());rR.range;let rB=rs(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());rB.range;let rL=rs(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());rL.every=t=>isFinite(t=Math.floor(t))&&t>0?rs(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)}):null,rL.range;let rU=rs(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());function rz(t,e,r,n,o,i){let a=[[rp,1,1e3],[rp,5,5e3],[rp,15,15e3],[rp,30,3e4],[i,1,6e4],[i,5,3e5],[i,15,9e5],[i,30,18e5],[o,1,36e5],[o,3,108e5],[o,6,216e5],[o,12,432e5],[n,1,864e5],[n,2,1728e5],[r,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function c(e,r,n){let o=Math.abs(r-e)/n,i=tG(([,,t])=>t).right(a,o);if(i===a.length)return t.every(t$(e/31536e6,r/31536e6,n));if(0===i)return rf.every(Math.max(t$(e,r,n),1));let[c,u]=a[o/a[i-1][2]isFinite(t=Math.floor(t))&&t>0?rs(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)}):null,rU.range;let[rF,r$]=rz(rU,rB,r_,rb,rv,rd),[rW,rq]=rz(rL,rR,rO,rm,ry,rh);function rG(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function rV(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function rX(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}var rH={"-":"",_:" ",0:"0"},rZ=/^\s*\d+/,rY=/^%/,rK=/[\\^$*+?|[\]().{}]/g;function rJ(t,e,r){var n=t<0?"-":"",o=(n?-t:t)+"",i=o.length;return n+(i[t.toLowerCase(),e]))}function r2(t,e,r){var n=rZ.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function r3(t,e,r){var n=rZ.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function r6(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function r5(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function r7(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function r4(t,e,r){var n=rZ.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function r8(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function r9(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function nt(t,e,r){var n=rZ.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function ne(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function nr(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function nn(t,e,r){var n=rZ.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function no(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function ni(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function na(t,e,r){var n=rZ.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function nc(t,e,r){var n=rZ.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function nu(t,e,r){var n=rZ.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function nl(t,e,r){var n=rY.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function ns(t,e,r){var n=rZ.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function nf(t,e,r){var n=rZ.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function np(t,e){return rJ(t.getDate(),e,2)}function nh(t,e){return rJ(t.getHours(),e,2)}function nd(t,e){return rJ(t.getHours()%12||12,e,2)}function ny(t,e){return rJ(1+rm.count(rL(t),t),e,3)}function nv(t,e){return rJ(t.getMilliseconds(),e,3)}function nm(t,e){return nv(t,e)+"000"}function ng(t,e){return rJ(t.getMonth()+1,e,2)}function nb(t,e){return rJ(t.getMinutes(),e,2)}function nx(t,e){return rJ(t.getSeconds(),e,2)}function nO(t){var e=t.getDay();return 0===e?7:e}function nw(t,e){return rJ(rO.count(rL(t)-1,t),e,2)}function nj(t){var e=t.getDay();return e>=4||0===e?rA(t):rA.ceil(t)}function nS(t,e){return t=nj(t),rJ(rA.count(rL(t),t)+(4===rL(t).getDay()),e,2)}function nA(t){return t.getDay()}function nE(t,e){return rJ(rw.count(rL(t)-1,t),e,2)}function nP(t,e){return rJ(t.getFullYear()%100,e,2)}function nk(t,e){return rJ((t=nj(t)).getFullYear()%100,e,2)}function n_(t,e){return rJ(t.getFullYear()%1e4,e,4)}function nT(t,e){var r=t.getDay();return rJ((t=r>=4||0===r?rA(t):rA.ceil(t)).getFullYear()%1e4,e,4)}function nM(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+rJ(e/60|0,"0",2)+rJ(e%60,"0",2)}function nC(t,e){return rJ(t.getUTCDate(),e,2)}function nN(t,e){return rJ(t.getUTCHours(),e,2)}function nD(t,e){return rJ(t.getUTCHours()%12||12,e,2)}function nI(t,e){return rJ(1+rg.count(rU(t),t),e,3)}function nR(t,e){return rJ(t.getUTCMilliseconds(),e,3)}function nB(t,e){return nR(t,e)+"000"}function nL(t,e){return rJ(t.getUTCMonth()+1,e,2)}function nU(t,e){return rJ(t.getUTCMinutes(),e,2)}function nz(t,e){return rJ(t.getUTCSeconds(),e,2)}function nF(t){var e=t.getUTCDay();return 0===e?7:e}function n$(t,e){return rJ(r_.count(rU(t)-1,t),e,2)}function nW(t){var e=t.getUTCDay();return e>=4||0===e?rN(t):rN.ceil(t)}function nq(t,e){return t=nW(t),rJ(rN.count(rU(t),t)+(4===rU(t).getUTCDay()),e,2)}function nG(t){return t.getUTCDay()}function nV(t,e){return rJ(rT.count(rU(t)-1,t),e,2)}function nX(t,e){return rJ(t.getUTCFullYear()%100,e,2)}function nH(t,e){return rJ((t=nW(t)).getUTCFullYear()%100,e,2)}function nZ(t,e){return rJ(t.getUTCFullYear()%1e4,e,4)}function nY(t,e){var r=t.getUTCDay();return rJ((t=r>=4||0===r?rN(t):rN.ceil(t)).getUTCFullYear()%1e4,e,4)}function nK(){return"+0000"}function nJ(){return"%"}function nQ(t){return+t}function n0(t){return Math.floor(+t/1e3)}function n1(t){return new Date(t)}function n2(t){return t instanceof Date?+t:+new Date(+t)}function n3(t,e,r,n,o,i,a,c,u,l){var s=eR(),f=s.invert,p=s.domain,h=l(".%L"),d=l(":%S"),y=l("%I:%M"),v=l("%I %p"),m=l("%a %d"),g=l("%b %d"),b=l("%B"),x=l("%Y");function O(t){return(u(t)1)for(var r,n,o,i=1,a=t[e[0]],c=a.length;i=0;)r[e]=e;return r}function oc(t,e){return t[e]}function ou(t){let e=[];return e.key=t,e}od=(oh=function(t){var e=t.dateTime,r=t.date,n=t.time,o=t.periods,i=t.days,a=t.shortDays,c=t.months,u=t.shortMonths,l=r0(o),s=r1(o),f=r0(i),p=r1(i),h=r0(a),d=r1(a),y=r0(c),v=r1(c),m=r0(u),g=r1(u),b={a:function(t){return a[t.getDay()]},A:function(t){return i[t.getDay()]},b:function(t){return u[t.getMonth()]},B:function(t){return c[t.getMonth()]},c:null,d:np,e:np,f:nm,g:nk,G:nT,H:nh,I:nd,j:ny,L:nv,m:ng,M:nb,p:function(t){return o[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:nQ,s:n0,S:nx,u:nO,U:nw,V:nS,w:nA,W:nE,x:null,X:null,y:nP,Y:n_,Z:nM,"%":nJ},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return i[t.getUTCDay()]},b:function(t){return u[t.getUTCMonth()]},B:function(t){return c[t.getUTCMonth()]},c:null,d:nC,e:nC,f:nB,g:nH,G:nY,H:nN,I:nD,j:nI,L:nR,m:nL,M:nU,p:function(t){return o[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:nQ,s:n0,S:nz,u:nF,U:n$,V:nq,w:nG,W:nV,x:null,X:null,y:nX,Y:nZ,Z:nK,"%":nJ},O={a:function(t,e,r){var n=h.exec(e.slice(r));return n?(t.w=d.get(n[0].toLowerCase()),r+n[0].length):-1},A:function(t,e,r){var n=f.exec(e.slice(r));return n?(t.w=p.get(n[0].toLowerCase()),r+n[0].length):-1},b:function(t,e,r){var n=m.exec(e.slice(r));return n?(t.m=g.get(n[0].toLowerCase()),r+n[0].length):-1},B:function(t,e,r){var n=y.exec(e.slice(r));return n?(t.m=v.get(n[0].toLowerCase()),r+n[0].length):-1},c:function(t,r,n){return S(t,e,r,n)},d:nr,e:nr,f:nu,g:r8,G:r4,H:no,I:no,j:nn,L:nc,m:ne,M:ni,p:function(t,e,r){var n=l.exec(e.slice(r));return n?(t.p=s.get(n[0].toLowerCase()),r+n[0].length):-1},q:nt,Q:ns,s:nf,S:na,u:r3,U:r6,V:r5,w:r2,W:r7,x:function(t,e,n){return S(t,r,e,n)},X:function(t,e,r){return S(t,n,e,r)},y:r8,Y:r4,Z:r9,"%":nl};function w(t,e){return function(r){var n,o,i,a=[],c=-1,u=0,l=t.length;for(r instanceof Date||(r=new Date(+r));++c53)return null;"w"in i||(i.w=1),"Z"in i?(n=(o=(n=rV(rX(i.y,0,1))).getUTCDay())>4||0===o?rT.ceil(n):rT(n),n=rg.offset(n,(i.V-1)*7),i.y=n.getUTCFullYear(),i.m=n.getUTCMonth(),i.d=n.getUTCDate()+(i.w+6)%7):(n=(o=(n=rG(rX(i.y,0,1))).getDay())>4||0===o?rw.ceil(n):rw(n),n=rm.offset(n,(i.V-1)*7),i.y=n.getFullYear(),i.m=n.getMonth(),i.d=n.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),o="Z"in i?rV(rX(i.y,0,1)).getUTCDay():rG(rX(i.y,0,1)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,rV(i)):rG(i)}}function S(t,e,r,n){for(var o,i,a=0,c=e.length,u=r.length;a=u)return -1;if(37===(o=e.charCodeAt(a++))){if(!(i=O[(o=e.charAt(a++))in rH?e.charAt(a++):o])||(n=i(t,r,n))<0)return -1}else if(o!=r.charCodeAt(n++))return -1}return n}return b.x=w(r,b),b.X=w(n,b),b.c=w(e,b),x.x=w(r,x),x.X=w(n,x),x.c=w(e,x),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=j(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=j(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})).format,oh.parse,oy=oh.utcFormat,oh.utcParse,Array.prototype.slice;var ol,os,of,op,oh,od,oy,ov,om,og=r(31955),ob=r.n(og),ox=r(52692),oO=r.n(ox),ow=r(78352),oj=r.n(ow),oS=r(32009),oA=r.n(oS),oE=r(81711),oP=r.n(oE),ok=!0,o_="[DecimalError] ",oT=o_+"Invalid argument: ",oM=o_+"Exponent out of range: ",oC=Math.floor,oN=Math.pow,oD=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,oI=oC(1286742750677284.5),oR={};function oB(t,e){var r,n,o,i,a,c,u,l,s=t.constructor,f=s.precision;if(!t.s||!e.s)return e.s||(e=new s(t)),ok?oX(e,f):e;if(u=t.d,l=e.d,a=t.e,o=e.e,u=u.slice(),i=a-o){for(i<0?(n=u,i=-i,c=l.length):(n=l,o=a,c=u.length),i>(c=(a=Math.ceil(f/7))>c?a+1:c+1)&&(i=c,n.length=1),n.reverse();i--;)n.push(0);n.reverse()}for((c=u.length)-(i=l.length)<0&&(i=c,n=l,l=u,u=n),r=0;i;)r=(u[--i]=u[i]+l[i]+r)/1e7|0,u[i]%=1e7;for(r&&(u.unshift(r),++o),c=u.length;0==u[--c];)u.pop();return e.d=u,e.e=o,ok?oX(e,f):e}function oL(t,e,r){if(t!==~~t||tr)throw Error(oT+t)}function oU(t){var e,r,n,o=t.length-1,i="",a=t[0];if(o>0){for(i+=a,e=1;et.e^this.s<0?1:-1;for(e=0,r=(n=this.d.length)<(o=t.d.length)?n:o;et.d[e]^this.s<0?1:-1;return n===o?0:n>o^this.s<0?1:-1},oR.decimalPlaces=oR.dp=function(){var t=this.d.length-1,e=(t-this.e)*7;if(t=this.d[t])for(;t%10==0;t/=10)e--;return e<0?0:e},oR.dividedBy=oR.div=function(t){return oz(this,new this.constructor(t))},oR.dividedToIntegerBy=oR.idiv=function(t){var e=this.constructor;return oX(oz(this,new e(t),0,1),e.precision)},oR.equals=oR.eq=function(t){return!this.cmp(t)},oR.exponent=function(){return o$(this)},oR.greaterThan=oR.gt=function(t){return this.cmp(t)>0},oR.greaterThanOrEqualTo=oR.gte=function(t){return this.cmp(t)>=0},oR.isInteger=oR.isint=function(){return this.e>this.d.length-2},oR.isNegative=oR.isneg=function(){return this.s<0},oR.isPositive=oR.ispos=function(){return this.s>0},oR.isZero=function(){return 0===this.s},oR.lessThan=oR.lt=function(t){return 0>this.cmp(t)},oR.lessThanOrEqualTo=oR.lte=function(t){return 1>this.cmp(t)},oR.logarithm=oR.log=function(t){var e,r=this.constructor,n=r.precision,o=n+5;if(void 0===t)t=new r(10);else if((t=new r(t)).s<1||t.eq(om))throw Error(o_+"NaN");if(this.s<1)throw Error(o_+(this.s?"NaN":"-Infinity"));return this.eq(om)?new r(0):(ok=!1,e=oz(oG(this,o),oG(t,o),o),ok=!0,oX(e,n))},oR.minus=oR.sub=function(t){return t=new this.constructor(t),this.s==t.s?oH(this,t):oB(this,(t.s=-t.s,t))},oR.modulo=oR.mod=function(t){var e,r=this.constructor,n=r.precision;if(!(t=new r(t)).s)throw Error(o_+"NaN");return this.s?(ok=!1,e=oz(this,t,0,1).times(t),ok=!0,this.minus(e)):oX(new r(this),n)},oR.naturalExponential=oR.exp=function(){return oF(this)},oR.naturalLogarithm=oR.ln=function(){return oG(this)},oR.negated=oR.neg=function(){var t=new this.constructor(this);return t.s=-t.s||0,t},oR.plus=oR.add=function(t){return t=new this.constructor(t),this.s==t.s?oB(this,t):oH(this,(t.s=-t.s,t))},oR.precision=oR.sd=function(t){var e,r,n;if(void 0!==t&&!!t!==t&&1!==t&&0!==t)throw Error(oT+t);if(e=o$(this)+1,r=7*(n=this.d.length-1)+1,n=this.d[n]){for(;n%10==0;n/=10)r--;for(n=this.d[0];n>=10;n/=10)r++}return t&&e>r?e:r},oR.squareRoot=oR.sqrt=function(){var t,e,r,n,o,i,a,c=this.constructor;if(this.s<1){if(!this.s)return new c(0);throw Error(o_+"NaN")}for(t=o$(this),ok=!1,0==(o=Math.sqrt(+this))||o==1/0?(((e=oU(this.d)).length+t)%2==0&&(e+="0"),o=Math.sqrt(e),t=oC((t+1)/2)-(t<0||t%2),n=new c(e=o==1/0?"5e"+t:(e=o.toExponential()).slice(0,e.indexOf("e")+1)+t)):n=new c(o.toString()),o=a=(r=c.precision)+3;;)if(n=(i=n).plus(oz(this,i,a+2)).times(.5),oU(i.d).slice(0,a)===(e=oU(n.d)).slice(0,a)){if(e=e.slice(a-3,a+1),o==a&&"4999"==e){if(oX(i,r+1,0),i.times(i).eq(this)){n=i;break}}else if("9999"!=e)break;a+=4}return ok=!0,oX(n,r)},oR.times=oR.mul=function(t){var e,r,n,o,i,a,c,u,l,s=this.constructor,f=this.d,p=(t=new s(t)).d;if(!this.s||!t.s)return new s(0);for(t.s*=this.s,r=this.e+t.e,(u=f.length)<(l=p.length)&&(i=f,f=p,p=i,a=u,u=l,l=a),i=[],n=a=u+l;n--;)i.push(0);for(n=l;--n>=0;){for(e=0,o=u+n;o>n;)c=i[o]+p[n]*f[o-n-1]+e,i[o--]=c%1e7|0,e=c/1e7|0;i[o]=(i[o]+e)%1e7|0}for(;!i[--a];)i.pop();return e?++r:i.shift(),t.d=i,t.e=r,ok?oX(t,s.precision):t},oR.toDecimalPlaces=oR.todp=function(t,e){var r=this,n=r.constructor;return(r=new n(r),void 0===t)?r:(oL(t,0,1e9),void 0===e?e=n.rounding:oL(e,0,8),oX(r,t+o$(r)+1,e))},oR.toExponential=function(t,e){var r,n=this,o=n.constructor;return void 0===t?r=oZ(n,!0):(oL(t,0,1e9),void 0===e?e=o.rounding:oL(e,0,8),r=oZ(n=oX(new o(n),t+1,e),!0,t+1)),r},oR.toFixed=function(t,e){var r,n,o=this.constructor;return void 0===t?oZ(this):(oL(t,0,1e9),void 0===e?e=o.rounding:oL(e,0,8),r=oZ((n=oX(new o(this),t+o$(this)+1,e)).abs(),!1,t+o$(n)+1),this.isneg()&&!this.isZero()?"-"+r:r)},oR.toInteger=oR.toint=function(){var t=this.constructor;return oX(new t(this),o$(this)+1,t.rounding)},oR.toNumber=function(){return+this},oR.toPower=oR.pow=function(t){var e,r,n,o,i,a,c=this,u=c.constructor,l=+(t=new u(t));if(!t.s)return new u(om);if(!(c=new u(c)).s){if(t.s<1)throw Error(o_+"Infinity");return c}if(c.eq(om))return c;if(n=u.precision,t.eq(om))return oX(c,n);if(a=(e=t.e)>=(r=t.d.length-1),i=c.s,a){if((r=l<0?-l:l)<=9007199254740991){for(o=new u(om),e=Math.ceil(n/7+4),ok=!1;r%2&&oY((o=o.times(c)).d,e),0!==(r=oC(r/2));)oY((c=c.times(c)).d,e);return ok=!0,t.s<0?new u(om).div(o):oX(o,n)}}else if(i<0)throw Error(o_+"NaN");return i=i<0&&1&t.d[Math.max(e,r)]?-1:1,c.s=1,ok=!1,o=t.times(oG(c,n+12)),ok=!0,(o=oF(o)).s=i,o},oR.toPrecision=function(t,e){var r,n,o=this,i=o.constructor;return void 0===t?(r=o$(o),n=oZ(o,r<=i.toExpNeg||r>=i.toExpPos)):(oL(t,1,1e9),void 0===e?e=i.rounding:oL(e,0,8),r=o$(o=oX(new i(o),t,e)),n=oZ(o,t<=r||r<=i.toExpNeg,t)),n},oR.toSignificantDigits=oR.tosd=function(t,e){var r=this.constructor;return void 0===t?(t=r.precision,e=r.rounding):(oL(t,1,1e9),void 0===e?e=r.rounding:oL(e,0,8)),oX(new r(this),t,e)},oR.toString=oR.valueOf=oR.val=oR.toJSON=oR[Symbol.for("nodejs.util.inspect.custom")]=function(){var t=o$(this),e=this.constructor;return oZ(this,t<=e.toExpNeg||t>=e.toExpPos)};var oz=function(){function t(t,e){var r,n=0,o=t.length;for(t=t.slice();o--;)r=t[o]*e+n,t[o]=r%1e7|0,n=r/1e7|0;return n&&t.unshift(n),t}function e(t,e,r,n){var o,i;if(r!=n)i=r>n?1:-1;else for(o=i=0;oe[o]?1:-1;break}return i}function r(t,e,r){for(var n=0;r--;)t[r]-=n,n=t[r]1;)t.shift()}return function(n,o,i,a){var c,u,l,s,f,p,h,d,y,v,m,g,b,x,O,w,j,S,A=n.constructor,E=n.s==o.s?1:-1,P=n.d,k=o.d;if(!n.s)return new A(n);if(!o.s)throw Error(o_+"Division by zero");for(l=0,u=n.e-o.e,j=k.length,O=P.length,d=(h=new A(E)).d=[];k[l]==(P[l]||0);)++l;if(k[l]>(P[l]||0)&&--u,(g=null==i?i=A.precision:a?i+(o$(n)-o$(o))+1:i)<0)return new A(0);if(g=g/7+2|0,l=0,1==j)for(s=0,k=k[0],g++;(l1&&(k=t(k,s),P=t(P,s),j=k.length,O=P.length),x=j,v=(y=P.slice(0,j)).length;v=1e7/2&&++w;do s=0,(c=e(k,y,j,v))<0?(m=y[0],j!=v&&(m=1e7*m+(y[1]||0)),(s=m/w|0)>1?(s>=1e7&&(s=1e7-1),p=(f=t(k,s)).length,v=y.length,1==(c=e(f,y,p,v))&&(s--,r(f,j16)throw Error(oM+o$(t));if(!t.s)return new l(om);for(null==e?(ok=!1,a=s):a=e,i=new l(.03125);t.abs().gte(.1);)t=t.times(i),u+=5;for(a+=Math.log(oN(2,u))/Math.LN10*2+5|0,r=n=o=new l(om),l.precision=a;;){if(n=oX(n.times(t),a),r=r.times(++c),oU((i=o.plus(oz(n,r,a))).d).slice(0,a)===oU(o.d).slice(0,a)){for(;u--;)o=oX(o.times(o),a);return l.precision=s,null==e?(ok=!0,oX(o,s)):o}o=i}}function o$(t){for(var e=7*t.e,r=t.d[0];r>=10;r/=10)e++;return e}function oW(t,e,r){if(e>t.LN10.sd())throw ok=!0,r&&(t.precision=r),Error(o_+"LN10 precision limit exceeded");return oX(new t(t.LN10),e)}function oq(t){for(var e="";t--;)e+="0";return e}function oG(t,e){var r,n,o,i,a,c,u,l,s,f=1,p=t,h=p.d,d=p.constructor,y=d.precision;if(p.s<1)throw Error(o_+(p.s?"NaN":"-Infinity"));if(p.eq(om))return new d(0);if(null==e?(ok=!1,l=y):l=e,p.eq(10))return null==e&&(ok=!0),oW(d,l);if(l+=10,d.precision=l,n=(r=oU(h)).charAt(0),!(15e14>Math.abs(i=o$(p))))return u=oW(d,l+2,y).times(i+""),p=oG(new d(n+"."+r.slice(1)),l-10).plus(u),d.precision=y,null==e?(ok=!0,oX(p,y)):p;for(;n<7&&1!=n||1==n&&r.charAt(1)>3;)n=(r=oU((p=p.times(t)).d)).charAt(0),f++;for(i=o$(p),n>1?(p=new d("0."+r),i++):p=new d(n+"."+r.slice(1)),c=a=p=oz(p.minus(om),p.plus(om),l),s=oX(p.times(p),l),o=3;;){if(a=oX(a.times(s),l),oU((u=c.plus(oz(a,new d(o),l))).d).slice(0,l)===oU(c.d).slice(0,l))return c=c.times(2),0!==i&&(c=c.plus(oW(d,l+2,y).times(i+""))),c=oz(c,new d(f),l),d.precision=y,null==e?(ok=!0,oX(c,y)):c;c=u,o+=2}}function oV(t,e){var r,n,o;for((r=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(r<0&&(r=n),r+=+e.slice(n+1),e=e.substring(0,n)):r<0&&(r=e.length),n=0;48===e.charCodeAt(n);)++n;for(o=e.length;48===e.charCodeAt(o-1);)--o;if(e=e.slice(n,o)){if(o-=n,r=r-n-1,t.e=oC(r/7),t.d=[],n=(r+1)%7,r<0&&(n+=7),noI||t.e<-oI))throw Error(oM+r)}else t.s=0,t.e=0,t.d=[0];return t}function oX(t,e,r){var n,o,i,a,c,u,l,s,f=t.d;for(a=1,i=f[0];i>=10;i/=10)a++;if((n=e-a)<0)n+=7,o=e,l=f[s=0];else{if((s=Math.ceil((n+1)/7))>=(i=f.length))return t;for(a=1,l=i=f[s];i>=10;i/=10)a++;n%=7,o=n-7+a}if(void 0!==r&&(c=l/(i=oN(10,a-o-1))%10|0,u=e<0||void 0!==f[s+1]||l%i,u=r<4?(c||u)&&(0==r||r==(t.s<0?3:2)):c>5||5==c&&(4==r||u||6==r&&(n>0?o>0?l/oN(10,a-o):0:f[s-1])%10&1||r==(t.s<0?8:7))),e<1||!f[0])return u?(i=o$(t),f.length=1,e=e-i-1,f[0]=oN(10,(7-e%7)%7),t.e=oC(-e/7)||0):(f.length=1,f[0]=t.e=t.s=0),t;if(0==n?(f.length=s,i=1,s--):(f.length=s+1,i=oN(10,7-n),f[s]=o>0?(l/oN(10,a-o)%oN(10,o)|0)*i:0),u)for(;;){if(0==s){1e7==(f[0]+=i)&&(f[0]=1,++t.e);break}if(f[s]+=i,1e7!=f[s])break;f[s--]=0,i=1}for(n=f.length;0===f[--n];)f.pop();if(ok&&(t.e>oI||t.e<-oI))throw Error(oM+o$(t));return t}function oH(t,e){var r,n,o,i,a,c,u,l,s,f,p=t.constructor,h=p.precision;if(!t.s||!e.s)return e.s?e.s=-e.s:e=new p(t),ok?oX(e,h):e;if(u=t.d,f=e.d,n=e.e,l=t.e,u=u.slice(),a=l-n){for((s=a<0)?(r=u,a=-a,c=f.length):(r=f,n=l,c=u.length),a>(o=Math.max(Math.ceil(h/7),c)+2)&&(a=o,r.length=1),r.reverse(),o=a;o--;)r.push(0);r.reverse()}else{for((s=(o=u.length)<(c=f.length))&&(c=o),o=0;o0;--o)u[c++]=0;for(o=f.length;o>a;){if(u[--o]0?i=i.charAt(0)+"."+i.slice(1)+oq(n):a>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(o<0?"e":"e+")+o):o<0?(i="0."+oq(-o-1)+i,r&&(n=r-a)>0&&(i+=oq(n))):o>=a?(i+=oq(o+1-a),r&&(n=r-o-1)>0&&(i=i+"."+oq(n))):((n=o+1)0&&(o+1===a&&(i+="."),i+=oq(n))),t.s<0?"-"+i:i}function oY(t,e){if(t.length>e)return t.length=e,!0}function oK(t){if(!t||"object"!=typeof t)throw Error(o_+"Object expected");var e,r,n,o=["precision",1,1e9,"rounding",0,8,"toExpNeg",-1/0,0,"toExpPos",0,1/0];for(e=0;e=o[e+1]&&n<=o[e+2])this[r]=n;else throw Error(oT+r+": "+n)}if(void 0!==(n=t[r="LN10"])){if(n==Math.LN10)this[r]=new this(n);else throw Error(oT+r+": "+n)}return this}var ov=function t(e){var r,n,o;function i(t){if(!(this instanceof i))return new i(t);if(this.constructor=i,t instanceof i){this.s=t.s,this.e=t.e,this.d=(t=t.d)?t.slice():t;return}if("number"==typeof t){if(0*t!=0)throw Error(oT+t);if(t>0)this.s=1;else if(t<0)t=-t,this.s=-1;else{this.s=0,this.e=0,this.d=[0];return}if(t===~~t&&t<1e7){this.e=0,this.d=[t];return}return oV(this,t.toString())}if("string"!=typeof t)throw Error(oT+t);if(45===t.charCodeAt(0)?(t=t.slice(1),this.s=-1):this.s=1,oD.test(t))oV(this,t);else throw Error(oT+t)}if(i.prototype=oR,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=t,i.config=i.set=oK,void 0===e&&(e={}),e)for(r=0,o=["precision","rounding","toExpNeg","toExpPos","LN10"];rt.length)&&(e=t.length);for(var r=0,n=Array(e);r=e?r.apply(void 0,o):t(e-a,o3(function(){for(var t=arguments.length,e=Array(t),n=0;nt.length)&&(e=t.length);for(var r=0,n=Array(e);rn&&(o=n,i=r),[o,i]}function ic(t,e,r){if(t.lte(0))return new oJ(0);var n=it.getDigitCount(t.toNumber()),o=new oJ(10).pow(n),i=t.div(o),a=1!==n?.05:.1,c=new oJ(Math.ceil(i.div(a).toNumber())).add(r).mul(a).mul(o);return e?c:new oJ(Math.ceil(c))}function iu(t,e,r){var n=1,o=new oJ(t);if(!o.isint()&&r){var i=Math.abs(t);i<1?(n=new oJ(10).pow(it.getDigitCount(t)-1),o=new oJ(Math.floor(o.div(n).toNumber())).mul(n)):i>1&&(o=new oJ(Math.floor(t)))}else 0===t?o=new oJ(Math.floor((e-1)/2)):r||(o=new oJ(Math.floor(t)));var a=Math.floor((e-1)/2);return o4(o7(function(t){return o.add(new oJ(t-a).mul(n)).toNumber()}),o5)(0,e)}var il=o9(function(t){var e=ir(t,2),r=e[0],n=e[1],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=Math.max(o,2),c=ir(ia([r,n]),2),u=c[0],l=c[1];if(u===-1/0||l===1/0){var s=l===1/0?[u].concat(ie(o5(0,o-1).map(function(){return 1/0}))):[].concat(ie(o5(0,o-1).map(function(){return-1/0})),[l]);return r>n?o8(s):s}if(u===l)return iu(u,o,i);var f=function t(e,r,n,o){var i,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(!Number.isFinite((r-e)/(n-1)))return{step:new oJ(0),tickMin:new oJ(0),tickMax:new oJ(0)};var c=ic(new oJ(r).sub(e).div(n-1),o,a),u=Math.ceil((i=e<=0&&r>=0?new oJ(0):(i=new oJ(e).add(r).div(2)).sub(new oJ(i).mod(c))).sub(e).div(c).toNumber()),l=Math.ceil(new oJ(r).sub(i).div(c).toNumber()),s=u+l+1;return s>n?t(e,r,n,o,a+1):(s0?l+(n-s):l,u=r>0?u:u+(n-s)),{step:c,tickMin:i.sub(new oJ(u).mul(c)),tickMax:i.add(new oJ(l).mul(c))})}(u,l,a,i),p=f.step,h=f.tickMin,d=f.tickMax,y=it.rangeStep(h,d.add(new oJ(.1).mul(p)),p);return r>n?o8(y):y});o9(function(t){var e=ir(t,2),r=e[0],n=e[1],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=Math.max(o,2),c=ir(ia([r,n]),2),u=c[0],l=c[1];if(u===-1/0||l===1/0)return[r,n];if(u===l)return iu(u,o,i);var s=ic(new oJ(l).sub(u).div(a-1),i,0),f=o4(o7(function(t){return new oJ(u).add(new oJ(t).mul(s)).toNumber()}),o5)(0,a).filter(function(t){return t>=u&&t<=l});return r>n?o8(f):f});var is=o9(function(t,e){var r=ir(t,2),n=r[0],o=r[1],i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=ir(ia([n,o]),2),c=a[0],u=a[1];if(c===-1/0||u===1/0)return[n,o];if(c===u)return[c];var l=ic(new oJ(u).sub(c).div(Math.max(e,2)-1),i,0),s=[].concat(ie(it.rangeStep(new oJ(c),new oJ(u).sub(new oJ(.99).mul(l)),l)),[u]);return n>o?o8(s):s}),ip=["children","className"];function ih(){return(ih=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,ip),i=(0,f.Z)("recharts-layer",n);return a().createElement("g",ih({className:i},tl(o,!0),{ref:e}),r)}),iy=["offset","layout","width","dataKey","data","dataPointFormatter","xAxis","yAxis"];function iv(){return(iv=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,iy)),f=i.map(function(t){var i,f,p=c(t,o),h=p.x,d=p.y,y=p.value,v=p.errorVal;if(!v)return null;var m=[];if(Array.isArray(v)){var g=function(t){if(Array.isArray(t))return t}(v)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,l=!1;try{for(i=(r=r.call(t)).next;!(u=(n=i.call(r)).done)&&(c.push(n.value),2!==c.length);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(v,2)||function(t,e){if(t){if("string"==typeof t)return im(t,2);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return im(t,2)}}(v,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();i=g[0],f=g[1]}else i=f=v;if("vertical"===r){var b=u.scale,x=d+e,O=x+n,w=x-n,j=b(y-i),S=b(y+f);m.push({x1:S,y1:O,x2:S,y2:w}),m.push({x1:j,y1:x,x2:S,y2:x}),m.push({x1:j,y1:O,x2:j,y2:w})}else if("horizontal"===r){var A=l.scale,E=h+e,P=E-n,k=E+n,_=A(y-i),T=A(y+f);m.push({x1:P,y1:T,x2:k,y2:T}),m.push({x1:E,y1:_,x2:E,y2:T}),m.push({x1:P,y1:_,x2:k,y2:_})}return a().createElement(id,iv({className:"recharts-errorBar",key:"bar-".concat(m.map(function(t){return"".concat(t.x1,"-").concat(t.x2,"-").concat(t.y1,"-").concat(t.y2)}))},s),m.map(function(t){return a().createElement("line",iv({},t,{key:"line-".concat(t.x1,"-").concat(t.x2,"-").concat(t.y1,"-").concat(t.y2)}))}))});return a().createElement(id,{className:"recharts-errorBars"},f)}ig.defaultProps={stroke:"black",strokeWidth:1.5,width:5,offset:0,layout:"horizontal"},ig.displayName="ErrorBar";var ib=["children","width","height","viewBox","className","style","title","desc"];function ix(){return(ix=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,ib),p=o||{width:r,height:n,x:0,y:0},h=(0,f.Z)("recharts-surface",i);return a().createElement("svg",ix({},tl(s,!0,"svg"),{className:h,width:r,height:n,style:c,viewBox:"".concat(p.x," ").concat(p.y," ").concat(p.width," ").concat(p.height)}),a().createElement("title",null,u),a().createElement("desc",null,l),e)}let iw=Math.cos,ij=Math.sin,iS=Math.sqrt,iA=Math.PI,iE=2*iA,iP={draw(t,e){let r=iS(e/iA);t.moveTo(r,0),t.arc(0,0,r,0,iE)}},ik=iS(1/3),i_=2*ik,iT=ij(iA/10)/ij(7*iA/10),iM=ij(iE/10)*iT,iC=-iw(iE/10)*iT,iN=iS(3),iD=iS(3)/2,iI=1/iS(12),iR=(iI/2+1)*3,iB=Math.PI,iL=2*iB,iU=iL-1e-6;function iz(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw Error(`invalid digits: ${t}`);if(e>15)return iz;let r=10**e;return function(t){this._+=t[0];for(let e=1,n=t.length;e1e-6){if(Math.abs(s*c-u*l)>1e-6&&o){let p=r-i,h=n-a,d=c*c+u*u,y=Math.sqrt(d),v=Math.sqrt(f),m=o*Math.tan((iB-Math.acos((d+f-(p*p+h*h))/(2*y*v)))/2),g=m/v,b=m/y;Math.abs(g-1)>1e-6&&this._append`L${t+g*l},${e+g*s}`,this._append`A${o},${o},0,0,${+(s*p>l*h)},${this._x1=t+b*c},${this._y1=e+b*u}`}else this._append`L${this._x1=t},${this._y1=e}`}}arc(t,e,r,n,o,i){if(t=+t,e=+e,i=!!i,(r=+r)<0)throw Error(`negative radius: ${r}`);let a=r*Math.cos(n),c=r*Math.sin(n),u=t+a,l=e+c,s=1^i,f=i?n-o:o-n;null===this._x1?this._append`M${u},${l}`:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-l)>1e-6)&&this._append`L${u},${l}`,r&&(f<0&&(f=f%iL+iL),f>iU?this._append`A${r},${r},0,1,${s},${t-a},${e-c}A${r},${r},0,1,${s},${this._x1=u},${this._y1=l}`:f>1e-6&&this._append`A${r},${r},0,${+(f>=iB)},${s},${this._x1=t+r*Math.cos(o)},${this._y1=e+r*Math.sin(o)}`)}rect(t,e,r,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${r=+r}v${+n}h${-r}Z`}toString(){return this._}}function i$(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(null==r)e=null;else{let t=Math.floor(r);if(!(t>=0))throw RangeError(`invalid digits: ${r}`);e=t}return t},()=>new iF(e)}function iW(t){return(iW="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}iF.prototype,iS(3),iS(3);var iq=["type","size","sizeType"];function iG(){return(iG=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,iq)),{},{type:n,size:i,sizeType:u}),s=l.className,p=l.cx,h=l.cy,d=tl(l,!0);return p===+p&&h===+h&&i===+i?a().createElement("path",iG({},d,{className:(0,f.Z)("recharts-symbols",s),transform:"translate(".concat(p,", ").concat(h,")"),d:(e=iH["symbol".concat(oA()(n))]||iP,(function(t,e){let r=null,n=i$(o);function o(){let o;if(r||(r=o=n()),t.apply(this,arguments).draw(r,+e.apply(this,arguments)),o)return r=null,o+""||null}return t="function"==typeof t?t:oi(t||iP),e="function"==typeof e?e:oi(void 0===e?64:+e),o.type=function(e){return arguments.length?(t="function"==typeof e?e:oi(e),o):t},o.size=function(t){return arguments.length?(e="function"==typeof t?t:oi(+t),o):e},o.context=function(t){return arguments.length?(r=null==t?null:t,o):r},o})().type(e).size(iY(i,u,n))())})):null};function iJ(t){return(iJ="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function iQ(){return(iQ=Object.assign?Object.assign.bind():function(t){for(var e=1;e');var y=e.inactive?c:e.color;return a().createElement("li",iQ({className:h,style:l,key:"legend-item-".concat(r)},H(t.props,e,r)),a().createElement(iO,{width:n,height:n,viewBox:u,style:s},t.renderIcon(e)),a().createElement("span",{className:"recharts-legend-item-text",style:{color:y}},p?p(d,e,r):d))})}},{key:"render",value:function(){var t=this.props,e=t.payload,r=t.layout,n=t.align;return e&&e.length?a().createElement("ul",{className:"recharts-default-legend",style:{padding:0,margin:0,textAlign:"horizontal"===r?n:"left"}},this.renderItems()):null}}],function(t,e){for(var r=0;r1||Math.abs(e.height-this.lastBoundingBox.height)>1)&&(this.lastBoundingBox.width=e.width,this.lastBoundingBox.height=e.height,t&&t(e))}else(-1!==this.lastBoundingBox.width||-1!==this.lastBoundingBox.height)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,t&&t(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?ar({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(t){var e,r,n=this.props,o=n.layout,i=n.align,a=n.verticalAlign,c=n.margin,u=n.chartWidth,l=n.chartHeight;return t&&(void 0!==t.left&&null!==t.left||void 0!==t.right&&null!==t.right)||(e="center"===i&&"vertical"===o?{left:((u||0)-this.getBBoxSnapshot().width)/2}:"right"===i?{right:c&&c.right||0}:{left:c&&c.left||0}),t&&(void 0!==t.top&&null!==t.top||void 0!==t.bottom&&null!==t.bottom)||(r="middle"===a?{top:((l||0)-this.getBBoxSnapshot().height)/2}:"bottom"===a?{bottom:c&&c.bottom||0}:{top:c&&c.top||0}),ar(ar({},e),r)}},{key:"render",value:function(){var t=this,e=this.props,r=e.content,n=e.width,o=e.height,i=e.wrapperStyle,c=e.payloadUniqBy,u=e.payload,l=ar(ar({position:"absolute",width:n||"auto",height:o||"auto"},this.getDefaultPosition(i)),i);return a().createElement("div",{className:"recharts-legend-wrapper",style:l,ref:function(e){t.wrapperNode=e}},function(t,e){if(a().isValidElement(t))return a().cloneElement(t,e);if("function"==typeof t)return a().createElement(t,e);e.ref;var r=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(e,at);return a().createElement(i5,r)}(r,ar(ar({},this.props),{},{payload:i8(u,c,al)})))}}],n=[{key:"getWithHeight",value:function(t,e){var r=t.props.layout;return"vertical"===r&&A(t.props.height)?{height:t.props.height}:"horizontal"===r?{width:t.props.width||e}:null}}],r&&an(i.prototype,r),n&&an(i,n),Object.defineProperty(i,"prototype",{writable:!1}),i}(i.PureComponent);function af(t){return(af="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ap(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function ah(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=-1,a=null!==(e=null==r?void 0:r.length)&&void 0!==e?e:0;if(a<=1)return 0;if(o&&"angleAxis"===o.axisType&&1e-6>=Math.abs(Math.abs(o.range[1]-o.range[0])-360))for(var c=o.range,u=0;u0?n[u-1].coordinate:n[a-1].coordinate,s=n[u].coordinate,f=u>=a-1?n[0].coordinate:n[u+1].coordinate,p=void 0;if(j(s-l)!==j(f-s)){var h=[];if(j(f-s)===j(c[1]-c[0])){p=f;var d=s+c[1]-c[0];h[0]=Math.min(d,(d+l)/2),h[1]=Math.max(d,(d+l)/2)}else{p=l;var y=f+c[1]-c[0];h[0]=Math.min(s,(y+s)/2),h[1]=Math.max(s,(y+s)/2)}var v=[Math.min(s,(p+s)/2),Math.max(s,(p+s)/2)];if(t>v[0]&&t<=v[1]||t>=h[0]&&t<=h[1]){i=n[u].index;break}}else{var m=Math.min(l,f),g=Math.max(l,f);if(t>(m+s)/2&&t<=(g+s)/2){i=n[u].index;break}}}else for(var b=0;b0&&b(r[b].coordinate+r[b-1].coordinate)/2&&t<=(r[b].coordinate+r[b+1].coordinate)/2||b===a-1&&t>(r[b].coordinate+r[b-1].coordinate)/2){i=r[b].index;break}return i},aS=function(t){var e,r=t.type.displayName,n=t.props,o=n.stroke,i=n.fill;switch(r){case"Line":e=o;break;case"Area":case"Radar":e=o&&"none"!==o?o:i;break;default:e=i}return e},aA=function(t){var e=t.barSize,r=t.stackGroups,n=void 0===r?{}:r;if(!n)return{};for(var o={},i=Object.keys(n),a=0,c=i.length;a=0});if(y&&y.length){var v=y[0].props.barSize,m=y[0].props[d];o[m]||(o[m]=[]),o[m].push({item:y[0],stackList:y.slice(1),barSize:R()(v)?e:v})}}return o},aE=function(t){var e,r=t.barGap,n=t.barCategoryGap,o=t.bandSize,i=t.sizeList,a=void 0===i?[]:i,c=t.maxBarSize,u=a.length;if(u<1)return null;var l=_(r,o,0,!0),s=[];if(a[0].barSize===+a[0].barSize){var f=!1,p=o/u,h=a.reduce(function(t,e){return t+e.barSize||0},0);(h+=(u-1)*l)>=o&&(h-=(u-1)*l,l=0),h>=o&&p>0&&(f=!0,p*=.9,h=u*p);var d={offset:((o-h)/2>>0)-l,size:0};e=a.reduce(function(t,e){var r={item:e.item,position:{offset:d.offset+d.size+l,size:f?p:e.barSize}},n=[].concat(ab(t),[r]);return d=n[n.length-1].position,e.stackList&&e.stackList.length&&e.stackList.forEach(function(t){n.push({item:t,position:d})}),n},s)}else{var y=_(n,o,0,!0);o-2*y-(u-1)*l<=0&&(l=0);var v=(o-2*y-(u-1)*l)/u;v>1&&(v>>=0);var m=c===+c?Math.min(v,c):v;e=a.reduce(function(t,e,r){var n=[].concat(ab(t),[{item:e.item,position:{offset:y+(v+l)*r+(v-m)/2,size:m}}]);return e.stackList&&e.stackList.length&&e.stackList.forEach(function(t){n.push({item:t,position:n[n.length-1].position})}),n},s)}return e},aP=function(t,e,r,n){var o=r.children,i=r.width,a=r.margin,c=ad({children:o,legendWidth:i-(a.left||0)-(a.right||0)});if(c){var u=n||{},l=u.width,s=u.height,f=c.align,p=c.verticalAlign,h=c.layout;if(("vertical"===h||"horizontal"===h&&"middle"===p)&&"center"!==f&&A(t[f]))return am(am({},t),{},ag({},f,t[f]+(l||0)));if(("horizontal"===h||"vertical"===h&&"center"===f)&&"middle"!==p&&A(t[p]))return am(am({},t),{},ag({},p,t[p]+(s||0)))}return t},ak=function(t,e,r,n,o){var i=to(e.props.children,ig).filter(function(t){var e;return e=t.props.direction,!!R()(o)||("horizontal"===n?"yAxis"===o:"vertical"===n||"x"===e?"xAxis"===o:"y"!==e||"yAxis"===o)});if(i&&i.length){var a=i.map(function(t){return t.props.dataKey});return t.reduce(function(t,e){var n=aO(e,r,0),o=Array.isArray(n)?[oO()(n),ob()(n)]:[n,n],i=a.reduce(function(t,r){var n=aO(e,r,0),i=o[0]-Math.abs(Array.isArray(n)?n[0]:n),a=o[1]+Math.abs(Array.isArray(n)?n[1]:n);return[Math.min(i,t[0]),Math.max(a,t[1])]},[1/0,-1/0]);return[Math.min(i[0],t[0]),Math.max(i[1],t[1])]},[1/0,-1/0])}return null},a_=function(t,e,r,n,o){var i=e.map(function(e){return ak(t,e,r,o,n)}).filter(function(t){return!R()(t)});return i&&i.length?i.reduce(function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]},[1/0,-1/0]):null},aT=function(t,e,r,n,o){var i=e.map(function(e){var i=e.props.dataKey;return"number"===r&&i&&ak(t,e,i,n)||aw(t,i,r,o)});if("number"===r)return i.reduce(function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]},[1/0,-1/0]);var a={};return i.reduce(function(t,e){for(var r=0,n=e.length;r=2?2*j(a[0]-a[1])*u:u,e&&(t.ticks||t.niceTicks))?(t.ticks||t.niceTicks).map(function(t){return{coordinate:n(o?o.indexOf(t):t)+u,value:t,offset:u}}).filter(function(t){return!g()(t.coordinate)}):t.isCategorical&&t.categoricalDomain?t.categoricalDomain.map(function(t,e){return{coordinate:n(t)+u,value:t,index:e,offset:u}}):n.ticks&&!r?n.ticks(t.tickCount).map(function(t){return{coordinate:n(t)+u,value:t,offset:u}}):n.domain().map(function(t,e){return{coordinate:n(t)+u,value:o?o[t]:t,index:e,offset:u}})},aD=new WeakMap,aI=function(t,e){if("function"!=typeof e)return t;aD.has(t)||aD.set(t,new WeakMap);var r=aD.get(t);if(r.has(e))return r.get(e);var n=function(){t.apply(void 0,arguments),e.apply(void 0,arguments)};return r.set(e,n),n},aR=function(t,e,r){var o=t.scale,i=t.type,a=t.layout,c=t.axisType;if("auto"===o)return"radial"===a&&"radiusAxis"===c?{scale:tD(),realScaleType:"band"}:"radial"===a&&"angleAxis"===c?{scale:eZ(),realScaleType:"linear"}:"category"===i&&e&&(e.indexOf("LineChart")>=0||e.indexOf("AreaChart")>=0||e.indexOf("ComposedChart")>=0&&!r)?{scale:tI(),realScaleType:"point"}:"category"===i?{scale:tD(),realScaleType:"band"}:{scale:eZ(),realScaleType:"linear"};if(v()(o)){var u="scale".concat(oA()(o));return{scale:(n[u]||tI)(),realScaleType:n[u]?u:"point"}}return L()(o)?{scale:o}:{scale:tI(),realScaleType:"point"}},aB=function(t){var e=t.domain();if(e&&!(e.length<=2)){var r=e.length,n=t.range(),o=Math.min(n[0],n[1])-1e-4,i=Math.max(n[0],n[1])+1e-4,a=t(e[0]),c=t(e[r-1]);(ai||ci)&&t.domain([e[0],e[r-1]])}},aL=function(t,e){if(!t)return null;for(var r=0,n=t.length;rn)&&(o[1]=n),o[0]>n&&(o[0]=n),o[1]=0?(t[a][r][0]=o,t[a][r][1]=o+c,o=t[a][r][1]):(t[a][r][0]=i,t[a][r][1]=i+c,i=t[a][r][1])}},expand:function(t,e){if((n=t.length)>0){for(var r,n,o,i=0,a=t[0].length;i0){for(var r,n=0,o=t[e[0]],i=o.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,o,i=0,a=1;a=0?(t[i][r][0]=o,t[i][r][1]=o+a,o=t[i][r][1]):(t[i][r][0]=0,t[i][r][1]=0)}}},aF=function(t,e,r){var n=e.map(function(t){return t.props.dataKey}),o=az[r];return(function(){var t=oi([]),e=oa,r=on,n=oc;function o(o){var i,a,c=Array.from(t.apply(this,arguments),ou),u=c.length,l=-1;for(let t of o)for(i=0,++l;i=0?0:o<0?o:n}return r[0]},aX=function(t,e){var r=t.props.stackId;if(E(r)){var n=e[r];if(n){var o=n.items.indexOf(t);return o>=0?n.stackedData[o]:null}}return null},aH=function(t,e,r){return Object.keys(t).reduce(function(n,o){var i=t[o].stackedData.reduce(function(t,n){var o=n.slice(e,r+1).reduce(function(t,e){return[oO()(e.concat([t[0]]).filter(A)),ob()(e.concat([t[1]]).filter(A))]},[1/0,-1/0]);return[Math.min(t[0],o[0]),Math.max(t[1],o[1])]},[1/0,-1/0]);return[Math.min(i[0],n[0]),Math.max(i[1],n[1])]},[1/0,-1/0]).map(function(t){return t===1/0||t===-1/0?0:t})},aZ=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,aY=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,aK=function(t,e,r){if(L()(t))return t(e,r);if(!Array.isArray(t))return e;var n=[];if(A(t[0]))n[0]=r?t[0]:Math.min(t[0],e[0]);else if(aZ.test(t[0])){var o=+aZ.exec(t[0])[1];n[0]=e[0]-o}else L()(t[0])?n[0]=t[0](e[0]):n[0]=e[0];if(A(t[1]))n[1]=r?t[1]:Math.max(t[1],e[1]);else if(aY.test(t[1])){var i=+aY.exec(t[1])[1];n[1]=e[1]+i}else L()(t[1])?n[1]=t[1](e[1]):n[1]=e[1];return n},aJ=function(t,e,r){if(t&&t.scale&&t.scale.bandwidth){var n=t.scale.bandwidth();if(!r||n>0)return n}if(t&&e&&e.length>=2){for(var o=tw()(e,function(t){return t.coordinate}),i=1/0,a=1,c=o.length;at.length)&&(e=t.length);for(var r=0,n=Array(e);r2&&void 0!==arguments[2]?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(r.left||0)-(r.right||0)),Math.abs(e-(r.top||0)-(r.bottom||0)))/2},a9=function(t,e){var r=t.x,n=t.y;return Math.sqrt(Math.pow(r-e.x,2)+Math.pow(n-e.y,2))},ct=function(t,e){var r=t.x,n=t.y,o=e.cx,i=e.cy,a=a9({x:r,y:n},{x:o,y:i});if(a<=0)return{radius:a};var c=Math.acos((r-o)/a);return n>i&&(c=2*Math.PI-c),{radius:a,angle:180*c/Math.PI,angleInRadian:c}},ce=function(t){var e=t.startAngle,r=t.endAngle,n=Math.min(Math.floor(e/360),Math.floor(r/360));return{startAngle:e-360*n,endAngle:r-360*n}},cr=function(t,e){var r,n=ct({x:t.x,y:t.y},e),o=n.radius,i=n.angle,a=e.innerRadius,c=e.outerRadius;if(oc)return!1;if(0===o)return!0;var u=ce(e),l=u.startAngle,s=u.endAngle,f=i;if(l<=s){for(;f>s;)f-=360;for(;f=l&&f<=s}else{for(;f>l;)f-=360;for(;f=s&&f<=l}return r?a3(a3({},e),{},{radius:o,angle:f+360*Math.min(Math.floor(e.startAngle/360),Math.floor(e.endAngle/360))}):null};function cn(t){var e=t.cx,r=t.cy,n=t.radius,o=t.startAngle,i=t.endAngle;return{points:[a4(e,r,n,o),a4(e,r,n,i)],cx:e,cy:r,radius:n,startAngle:o,endAngle:i}}var co={isSsr:!0,get:function(t){return co[t]},set:function(t,e){if("string"==typeof t)co[t]=e;else{var r=Object.keys(t);r&&r.length&&r.forEach(function(e){co[e]=t[e]})}}};function ci(t){return(ci="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ca(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function cc(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||co.isSsr)return{width:0,height:0};var n=(Object.keys(e=cc({},r)).forEach(function(t){e[t]||delete e[t]}),e),o=JSON.stringify({text:t,copyStyle:n});if(cu.widthCache[o])return cu.widthCache[o];try{var i=document.getElementById(cs);i||((i=document.createElement("span")).setAttribute("id",cs),i.setAttribute("aria-hidden","true"),document.body.appendChild(i));var a=cc(cc({},cl),n);Object.assign(i.style,a),i.textContent="".concat(t);var c=i.getBoundingClientRect(),u={width:c.width,height:c.height};return cu.widthCache[o]=u,++cu.cacheCount>2e3&&(cu.cacheCount=0,cu.widthCache={}),u}catch(t){return{width:0,height:0}}},cp=r(13880),ch=r.n(cp),cd=r(78439),cy=r.n(cd);let{getOwnPropertyNames:cv,getOwnPropertySymbols:cm}=Object,{hasOwnProperty:cg}=Object.prototype;function cb(t,e){return function(r,n,o){return t(r,n,o)&&e(r,n,o)}}function cx(t){return function(e,r,n){if(!e||!r||"object"!=typeof e||"object"!=typeof r)return t(e,r,n);let{cache:o}=n,i=o.get(e),a=o.get(r);if(i&&a)return i===r&&a===e;o.set(e,r),o.set(r,e);let c=t(e,r,n);return o.delete(e),o.delete(r),c}}function cO(t){return cv(t).concat(cm(t))}let cw=Object.hasOwn||((t,e)=>cg.call(t,e));function cj(t,e){return t===e||!t&&!e&&t!=t&&e!=e}let{getOwnPropertyDescriptor:cS,keys:cA}=Object;function cE(t,e){return t.byteLength===e.byteLength&&cL(new Uint8Array(t),new Uint8Array(e))}function cP(t,e,r){let n=t.length;if(e.length!==n)return!1;for(;n-- >0;)if(!r.equals(t[n],e[n],n,n,t,e,r))return!1;return!0}function ck(t,e){return t.byteLength===e.byteLength&&cL(new Uint8Array(t.buffer,t.byteOffset,t.byteLength),new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}function c_(t,e){return cj(t.getTime(),e.getTime())}function cT(t,e){return t.name===e.name&&t.message===e.message&&t.cause===e.cause&&t.stack===e.stack}function cM(t,e){return t===e}function cC(t,e,r){let n,o;let i=t.size;if(i!==e.size)return!1;if(!i)return!0;let a=Array(i),c=t.entries(),u=0;for(;(n=c.next())&&!n.done;){let i=e.entries(),c=!1,l=0;for(;(o=i.next())&&!o.done;){if(a[l]){l++;continue}let i=n.value,s=o.value;if(r.equals(i[0],s[0],u,l,t,e,r)&&r.equals(i[1],s[1],i[0],s[0],t,e,r)){c=a[l]=!0;break}l++}if(!c)return!1;u++}return!0}function cN(t,e,r){let n=cA(t),o=n.length;if(cA(e).length!==o)return!1;for(;o-- >0;)if(!cz(t,e,r,n[o]))return!1;return!0}function cD(t,e,r){let n,o,i;let a=cO(t),c=a.length;if(cO(e).length!==c)return!1;for(;c-- >0;)if(!cz(t,e,r,n=a[c])||(o=cS(t,n),i=cS(e,n),(o||i)&&(!o||!i||o.configurable!==i.configurable||o.enumerable!==i.enumerable||o.writable!==i.writable)))return!1;return!0}function cI(t,e){return cj(t.valueOf(),e.valueOf())}function cR(t,e){return t.source===e.source&&t.flags===e.flags}function cB(t,e,r){let n,o;let i=t.size;if(i!==e.size)return!1;if(!i)return!0;let a=Array(i),c=t.values();for(;(n=c.next())&&!n.done;){let i=e.values(),c=!1,u=0;for(;(o=i.next())&&!o.done;){if(!a[u]&&r.equals(n.value,o.value,n.value,o.value,t,e,r)){c=a[u]=!0;break}u++}if(!c)return!1}return!0}function cL(t,e){let r=t.byteLength;if(e.byteLength!==r||t.byteOffset!==e.byteOffset)return!1;for(;r-- >0;)if(t[r]!==e[r])return!1;return!0}function cU(t,e){return t.hostname===e.hostname&&t.pathname===e.pathname&&t.protocol===e.protocol&&t.port===e.port&&t.hash===e.hash&&t.username===e.username&&t.password===e.password}function cz(t,e,r,n){return("_owner"===n||"__o"===n||"__v"===n)&&(!!t.$$typeof||!!e.$$typeof)||cw(e,n)&&r.equals(t[n],e[n],n,n,t,e,r)}let cF={"[object Int8Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Int16Array]":!0,"[object Uint16Array]":!0,"[object Int32Array]":!0,"[object Uint32Array]":!0,"[object Float16Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0,"[object BigInt64Array]":!0,"[object BigUint64Array]":!0},c$=Object.prototype.toString,cW=cq();function cq(t={}){let{circular:e=!1,createInternalComparator:r,createState:n,strict:o=!1}=t,i=function({areArrayBuffersEqual:t,areArraysEqual:e,areDataViewsEqual:r,areDatesEqual:n,areErrorsEqual:o,areFunctionsEqual:i,areMapsEqual:a,areNumbersEqual:c,areObjectsEqual:u,arePrimitiveWrappersEqual:l,areRegExpsEqual:s,areSetsEqual:f,areTypedArraysEqual:p,areUrlsEqual:h,unknownTagComparators:d}){return function(y,v,m){if(y===v)return!0;if(null==y||null==v)return!1;let g=typeof y;if(g!==typeof v)return!1;if("object"!==g)return"number"===g?c(y,v,m):"function"===g&&i(y,v,m);let b=y.constructor;if(b!==v.constructor)return!1;if(b===Object)return u(y,v,m);if(Array.isArray(y))return e(y,v,m);if(b===Date)return n(y,v,m);if(b===RegExp)return s(y,v,m);if(b===Map)return a(y,v,m);if(b===Set)return f(y,v,m);let x=c$.call(y);if("[object Date]"===x)return n(y,v,m);if("[object RegExp]"===x)return s(y,v,m);if("[object Map]"===x)return a(y,v,m);if("[object Set]"===x)return f(y,v,m);if("[object Object]"===x)return"function"!=typeof y.then&&"function"!=typeof v.then&&u(y,v,m);if("[object URL]"===x)return h(y,v,m);if("[object Error]"===x)return o(y,v,m);if("[object Arguments]"===x)return u(y,v,m);if(cF[x])return p(y,v,m);if("[object ArrayBuffer]"===x)return t(y,v,m);if("[object DataView]"===x)return r(y,v,m);if("[object Boolean]"===x||"[object Number]"===x||"[object String]"===x)return l(y,v,m);if(d){let t=d[x];if(!t){let e=null!=y?y[Symbol.toStringTag]:void 0;e&&(t=d[e])}if(t)return t(y,v,m)}return!1}}(function({circular:t,createCustomConfig:e,strict:r}){let n={areArrayBuffersEqual:cE,areArraysEqual:r?cD:cP,areDataViewsEqual:ck,areDatesEqual:c_,areErrorsEqual:cT,areFunctionsEqual:cM,areMapsEqual:r?cb(cC,cD):cC,areNumbersEqual:cj,areObjectsEqual:r?cD:cN,arePrimitiveWrappersEqual:cI,areRegExpsEqual:cR,areSetsEqual:r?cb(cB,cD):cB,areTypedArraysEqual:r?cb(cL,cD):cL,areUrlsEqual:cU,unknownTagComparators:void 0};if(e&&(n=Object.assign({},n,e(n))),t){let t=cx(n.areArraysEqual),e=cx(n.areMapsEqual),r=cx(n.areObjectsEqual),o=cx(n.areSetsEqual);n=Object.assign({},n,{areArraysEqual:t,areMapsEqual:e,areObjectsEqual:r,areSetsEqual:o})}return n}(t)),a=r?r(i):function(t,e,r,n,o,a,c){return i(t,e,c)};return function({circular:t,comparator:e,createState:r,equals:n,strict:o}){if(r)return function(i,a){let{cache:c=t?new WeakMap:void 0,meta:u}=r();return e(i,a,{cache:c,equals:n,meta:u,strict:o})};if(t)return function(t,r){return e(t,r,{cache:new WeakMap,equals:n,meta:void 0,strict:o})};let i={cache:void 0,equals:n,meta:void 0,strict:o};return function(t,r){return e(t,r,i)}}({circular:e,comparator:i,createState:n,equals:a,strict:o})}function cG(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=-1;requestAnimationFrame(function n(o){if(r<0&&(r=o),o-r>e)t(o),r=-1;else{var i;i=n,"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(i)}})}function cV(t){return(cV="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function cX(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rcj}),cq({strict:!0,createInternalComparator:()=>cj}),cq({circular:!0,createInternalComparator:()=>cj}),cq({circular:!0,createInternalComparator:()=>cj,strict:!0});var cJ=["Webkit","Moz","O","ms"],cQ=["-webkit-","-moz-","-o-","-ms-"],c0=["transform","transformOrigin","transition"],c1=function(t){return t},c2=function(t,e){if(-1===c0.indexOf(t))return cK({},t,Number.isNaN(e)?0:e);var r="transition"===t,n=t.replace(/(\w)/,function(t){return t.toUpperCase()}),o=e;return cJ.reduce(function(t,i,a){return r&&(o=e.replace(/(transform|transform-origin)/gim,"".concat(cQ[a],"$1"))),cY(cY({},t),{},cK({},i+n,o))},{})},c3=function(t,e){return Object.keys(e).reduce(function(r,n){return cY(cY({},r),{},cK({},n,t(n,e[n])))},{})},c6=function(t){return Object.keys(t).reduce(function(t,e){return cY(cY({},t),c2(e,t[e]))},t)},c5=function(t,e,r){return t.map(function(t){return"".concat(t.replace(/([A-Z])/g,function(t){return"-".concat(t.toLowerCase())})," ").concat(e,"ms ").concat(r)}).join(",")},c7=function(t,e,r,n,o,i,a,c){};function c4(t,e){if(t){if("string"==typeof t)return c8(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c8(t,e)}}function c8(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0&&t<=1}),"[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s",n);var p=ue(i,c),h=ue(a,u),d=(t=i,e=c,function(r){var n;return ut([].concat(function(t){if(Array.isArray(t))return c8(t)}(n=c9(t,e).map(function(t,e){return t*e}).slice(1))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||c4(n)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[0]),r)}),y=function(t){for(var e=t>1?1:t,r=e,n=0;n<8;++n){var o,i=p(r)-e,a=d(r);if(1e-4>Math.abs(i-e)||a<1e-4)break;r=(o=r-i/a)>1?1:o<0?0:o}return h(r)};return y.isStepper=!1,y},un=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.stiff,r=void 0===e?100:e,n=t.damping,o=void 0===n?8:n,i=t.dt,a=void 0===i?17:i,c=function(t,e,n){var i=n+(-(t-e)*r-n*o)*a/1e3,c=n*a/1e3+t;return 1e-4>Math.abs(c-e)&&1e-4>Math.abs(i)?[e,0]:[c,i]};return c.isStepper=!0,c.dt=a,c},uo=function(){for(var t=arguments.length,e=Array(t),r=0;rt.length)&&(e=t.length);for(var r=0,n=Array(e);rt.length)&&(e=t.length);for(var r=0,n=Array(e);r0?r[o-1]:n,p=l||Object.keys(u);if("function"==typeof c||"spring"===c)return[].concat(ug(t),[e.runJSAnimation.bind(e,{from:f.style,to:u,duration:i,easing:c}),i]);var h=c5(p,i,c),d=uO(uO(uO({},f.style),u),{},{transition:h});return[].concat(ug(t),[d,i,s]).filter(c1)},[a,Math.max(void 0===c?0:c,n)])),[t.onAnimationEnd]))}},{key:"runAnimation",value:function(t){if(!this.manager){var e,r,n;this.manager=(e=function(){return null},r=!1,n=function t(n){if(!r){if(Array.isArray(n)){if(!n.length)return;var o=function(t){if(Array.isArray(t))return t}(n)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||function(t,e){if(t){if("string"==typeof t)return cX(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return cX(t,void 0)}}(n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),i=o[0],a=o.slice(1);if("number"==typeof i){cG(t.bind(null,a),i);return}t(i),cG(t.bind(null,a));return}"object"===cV(n)&&e(n),"function"==typeof n&&n()}},{stop:function(){r=!0},start:function(t){r=!1,n(t)},subscribe:function(t){return e=t,function(){e=function(){return null}}}})}var o=t.begin,i=t.duration,a=t.attributeName,c=t.to,u=t.easing,l=t.onAnimationStart,s=t.onAnimationEnd,f=t.steps,p=t.children,h=this.manager;if(this.unSubscribe=h.subscribe(this.handleStyleChange),"function"==typeof u||"function"==typeof p||"spring"===u){this.runJSAnimation(t);return}if(f.length>1){this.runStepAnimation(t);return}var d=a?uw({},a,c):c,y=c5(Object.keys(d),i,u);h.start([l,o,uO(uO({},d),{},{transition:y}),i,s])}},{key:"render",value:function(){var t=this.props,e=t.children,r=(t.begin,t.duration),n=(t.attributeName,t.easing,t.isActive),o=(t.steps,t.from,t.to,t.canBegin,t.onAnimationEnd,t.shouldReAnimate,t.onAnimationReStart,function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,um)),c=i.Children.count(e),u=c6(this.state.style);if("function"==typeof e)return e(u);if(!n||0===c||r<=0)return e;var l=function(t){var e=t.props,r=e.style,n=e.className;return(0,i.cloneElement)(t,uO(uO({},o),{},{style:uO(uO({},void 0===r?{}:r),u),className:n}))};return 1===c?l(i.Children.only(e)):a().createElement("div",null,i.Children.map(e,function(t){return l(t)}))}}],function(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=t.steps,r=t.duration;return e&&e.length?e.reduce(function(t,e){return t+(Number.isFinite(e.duration)&&e.duration>0?e.duration:0)},0):Number.isFinite(r)?r:0},uF=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&uI(t,e)}(o,t);var e,r,n=(e=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}(),function(){var t,r=uB(o);return t=e?Reflect.construct(r,arguments,uB(this).constructor):r.apply(this,arguments),function(t,e){if(e&&("object"===uM(e)||"function"==typeof e))return e;if(void 0!==e)throw TypeError("Derived constructors may only return object or undefined");return uR(t)}(this,t)});function o(){var t;return function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,o),uL(uR(t=n.call(this)),"handleEnter",function(e,r){var n=t.props,o=n.appearOptions,i=n.enterOptions;t.handleStyleActive(r?o:i)}),uL(uR(t),"handleExit",function(){var e=t.props.leaveOptions;t.handleStyleActive(e)}),t.state={isActive:!1},t}return r=[{key:"handleStyleActive",value:function(t){if(t){var e=t.onAnimationEnd?function(){t.onAnimationEnd()}:null;this.setState(uD(uD({},t),{},{onAnimationEnd:e,isActive:!0}))}}},{key:"parseTimeout",value:function(){var t=this.props,e=t.appearOptions,r=t.enterOptions,n=t.leaveOptions;return uz(e)+uz(r)+uz(n)}},{key:"render",value:function(){var t=this,e=this.props,r=e.children,n=(e.appearOptions,e.enterOptions,e.leaveOptions,function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(e,uT));return a().createElement(u_.Transition,uC({},n,{onEnter:this.handleEnter,onExit:this.handleExit,timeout:this.parseTimeout()}),function(){return a().createElement(uk,t.state,i.Children.only(r))})}}],function(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=Array(e);r=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function lt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return le(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return le(t,e)}}(t,e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function le(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&void 0!==arguments[0]?arguments[0]:[];return t.reduce(function(t,e){var i=e.word,a=e.width,c=t[t.length-1];return c&&(null==n||o||c.width+a+ra||e.reduce(function(t,e){return t.width>e.width?t:e}).width>Number(n),e]},d=0,y=c.length-1,v=0;d<=y&&v<=c.length-1;){var m=Math.floor((d+y)/2),g=lt(h(m-1),2),b=g[0],x=g[1],O=lt(h(m),1)[0];if(b||O||(d=m+1),b&&O&&(y=m-1),!b&&O){i=x;break}v++}return i||p},li=function(t){return[{words:R()(t)?[]:t.toString().split(lr)}]},la=function(t){var e=t.width,r=t.scaleToFit,n=t.children,o=t.style,i=t.breakAll,a=t.maxLines;if((e||r)&&!co.isSsr){var c=ln({breakAll:i,children:n,style:o});return c?lo({breakAll:i,children:n,maxLines:a,style:o},c.wordsWithComputedWidth,c.spaceWidth,e,r):li(n)}return li(n)},lc="#808080",lu=function(t){var e,r=t.x,n=void 0===r?0:r,o=t.y,c=void 0===o?0:o,u=t.lineHeight,l=void 0===u?"1em":u,s=t.capHeight,p=void 0===s?"0.71em":s,h=t.scaleToFit,d=void 0!==h&&h,y=t.textAnchor,v=t.verticalAnchor,m=t.fill,g=void 0===m?lc:m,b=u9(t,u7),x=(0,i.useMemo)(function(){return la({breakAll:b.breakAll,children:b.children,maxLines:b.maxLines,scaleToFit:d,style:b.style,width:b.width})},[b.breakAll,b.children,b.maxLines,d,b.style,b.width]),O=b.dx,w=b.dy,j=b.angle,S=b.className,P=b.breakAll,k=u9(b,u4);if(!E(n)||!E(c))return null;var _=n+(A(O)?O:0),T=c+(A(w)?w:0);switch(void 0===v?"end":v){case"start":e=u5("calc(".concat(p,")"));break;case"middle":e=u5("calc(".concat((x.length-1)/2," * -").concat(l," + (").concat(p," / 2))"));break;default:e=u5("calc(".concat(x.length-1," * -").concat(l,")"))}var M=[];if(d){var C=x[0].width,N=b.width;M.push("scale(".concat((A(N)?N/C:1)/C,")"))}return j&&M.push("rotate(".concat(j,", ").concat(_,", ").concat(T,")")),M.length&&(k.transform=M.join(" ")),a().createElement("text",u8({},tl(k,!0),{x:_,y:T,className:(0,f.Z)("recharts-text",S),textAnchor:void 0===y?"start":y,fill:g.includes("url")?lc:g}),x.map(function(t,r){var n=t.words.join(P?"":" ");return a().createElement("tspan",{x:_,dy:0===r?e:l,key:n},n)}))};function ll(t){return(ll="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var ls=["offset"];function lf(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0?1:-1;"insideStart"===i?(n=y+x*u,o=m):"insideEnd"===i?(n=v-x*u,o=!m):"end"===i&&(n=v+x*u,o=m),o=b<=0?o:!o;var O=a4(s,p,g,n),w=a4(s,p,g,n+(o?1:-1)*359),S="M".concat(O.x,",").concat(O.y,"\n A").concat(g,",").concat(g,",0,1,").concat(o?0:1,",\n ").concat(w.x,",").concat(w.y),A=R()(t.id)?k("recharts-radial-line-"):t.id;return a().createElement("text",ld({},r,{dominantBaseline:"central",className:(0,f.Z)("recharts-radial-bar-label",l)}),a().createElement("defs",null,a().createElement("path",{id:A,d:S})),a().createElement("textPath",{xlinkHref:"#".concat(A)},e))},lm=function(t){var e=t.viewBox,r=t.offset,n=t.position,o=e.cx,i=e.cy,a=e.innerRadius,c=e.outerRadius,u=(e.startAngle+e.endAngle)/2;if("outside"===n){var l=a4(o,i,c+r,u),s=l.x;return{x:s,y:l.y,textAnchor:s>=o?"start":"end",verticalAnchor:"middle"}}if("center"===n)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"middle"};if("centerTop"===n)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"start"};if("centerBottom"===n)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"end"};var f=a4(o,i,(a+c)/2,u);return{x:f.x,y:f.y,textAnchor:"middle",verticalAnchor:"middle"}},lg=function(t){var e=t.viewBox,r=t.parentViewBox,n=t.offset,o=t.position,i=e.x,a=e.y,c=e.width,u=e.height,l=u>=0?1:-1,s=l*n,f=l>0?"end":"start",p=l>0?"start":"end",h=c>=0?1:-1,d=h*n,y=h>0?"end":"start",v=h>0?"start":"end";if("top"===o)return lh(lh({},{x:i+c/2,y:a-l*n,textAnchor:"middle",verticalAnchor:f}),r?{height:Math.max(a-r.y,0),width:c}:{});if("bottom"===o)return lh(lh({},{x:i+c/2,y:a+u+s,textAnchor:"middle",verticalAnchor:p}),r?{height:Math.max(r.y+r.height-(a+u),0),width:c}:{});if("left"===o){var m={x:i-d,y:a+u/2,textAnchor:y,verticalAnchor:"middle"};return lh(lh({},m),r?{width:Math.max(m.x-r.x,0),height:u}:{})}if("right"===o){var g={x:i+c+d,y:a+u/2,textAnchor:v,verticalAnchor:"middle"};return lh(lh({},g),r?{width:Math.max(r.x+r.width-g.x,0),height:u}:{})}var b=r?{width:c,height:u}:{};return"insideLeft"===o?lh({x:i+d,y:a+u/2,textAnchor:v,verticalAnchor:"middle"},b):"insideRight"===o?lh({x:i+c-d,y:a+u/2,textAnchor:y,verticalAnchor:"middle"},b):"insideTop"===o?lh({x:i+c/2,y:a+s,textAnchor:"middle",verticalAnchor:p},b):"insideBottom"===o?lh({x:i+c/2,y:a+u-s,textAnchor:"middle",verticalAnchor:f},b):"insideTopLeft"===o?lh({x:i+d,y:a+s,textAnchor:v,verticalAnchor:p},b):"insideTopRight"===o?lh({x:i+c-d,y:a+s,textAnchor:y,verticalAnchor:p},b):"insideBottomLeft"===o?lh({x:i+d,y:a+u-s,textAnchor:v,verticalAnchor:f},b):"insideBottomRight"===o?lh({x:i+c-d,y:a+u-s,textAnchor:y,verticalAnchor:f},b):z()(o)&&(A(o.x)||S(o.x))&&(A(o.y)||S(o.y))?lh({x:i+_(o.x,c),y:a+_(o.y,u),textAnchor:"end",verticalAnchor:"end"},b):lh({x:i+c/2,y:a+u/2,textAnchor:"middle",verticalAnchor:"middle"},b)};function lb(t){var e,r=t.offset,n=lh({offset:void 0===r?5:r},function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,ls)),o=n.viewBox,c=n.position,u=n.value,l=n.children,s=n.content,p=n.className,h=n.textBreakAll;if(!o||R()(u)&&R()(l)&&!(0,i.isValidElement)(s)&&!L()(s))return null;if((0,i.isValidElement)(s))return(0,i.cloneElement)(s,n);if(L()(s)){if(e=(0,i.createElement)(s,n),(0,i.isValidElement)(e))return e}else e=ly(n);var d="cx"in o&&A(o.cx),y=tl(n,!0);if(d&&("insideStart"===c||"insideEnd"===c||"end"===c))return lv(n,e,y);var v=d?lm(n):lg(n);return a().createElement(lu,ld({className:(0,f.Z)("recharts-label",void 0===p?"":p)},y,v,{breakAll:h}),e)}lb.displayName="Label";var lx=function(t){var e=t.cx,r=t.cy,n=t.angle,o=t.startAngle,i=t.endAngle,a=t.r,c=t.radius,u=t.innerRadius,l=t.outerRadius,s=t.x,f=t.y,p=t.top,h=t.left,d=t.width,y=t.height,v=t.clockWise,m=t.labelViewBox;if(m)return m;if(A(d)&&A(y)){if(A(s)&&A(f))return{x:s,y:f,width:d,height:y};if(A(p)&&A(h))return{x:p,y:h,width:d,height:y}}return A(s)&&A(f)?{x:s,y:f,width:0,height:0}:A(e)&&A(r)?{cx:e,cy:r,startAngle:o||n||0,endAngle:i||n||0,innerRadius:u||0,outerRadius:l||c||a||0,clockWise:v}:t.viewBox?t.viewBox:{}};function lO(t){return(lO="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}lb.parseViewBox=lx,lb.renderCallByParent=function(t,e){var r,n,o=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(!t||!t.children&&o&&!t.label)return null;var c=t.children,u=lx(t),l=to(c,lb).map(function(t,r){return(0,i.cloneElement)(t,{viewBox:e||u,key:"label-".concat(r)})});return o?[(r=t.label,n=e||u,r?!0===r?a().createElement(lb,{key:"label-implicit",viewBox:n}):E(r)?a().createElement(lb,{key:"label-implicit",viewBox:n,value:r}):(0,i.isValidElement)(r)?r.type===lb?(0,i.cloneElement)(r,{key:"label-implicit",viewBox:n}):a().createElement(lb,{key:"label-implicit",content:r,viewBox:n}):L()(r)?a().createElement(lb,{key:"label-implicit",content:r,viewBox:n}):z()(r)?a().createElement(lb,ld({viewBox:n},r,{key:"label-implicit"})):null:null)].concat(function(t){if(Array.isArray(t))return lf(t)}(l)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(l)||function(t,e){if(t){if("string"==typeof t)return lf(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return lf(t,void 0)}}(l)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):l};var lw=["valueAccessor"],lj=["data","dataKey","clockWise","id","textBreakAll"];function lS(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var l_=function(t){return Array.isArray(t.value)?uG()(t.value):t.value};function lT(t){var e=t.valueAccessor,r=void 0===e?l_:e,n=lk(t,lw),o=n.data,i=n.dataKey,c=n.clockWise,u=n.id,l=n.textBreakAll,s=lk(n,lj);return o&&o.length?a().createElement(id,{className:"recharts-label-list"},o.map(function(t,e){var n=R()(i)?r(t,e):aO(t&&t.payload,i),o=R()(u)?{}:{id:"".concat(u,"-").concat(e)};return a().createElement(lb,lA({},tl(t,!0),s,o,{parentViewBox:t.parentViewBox,value:n,textBreakAll:l,viewBox:lb.parseViewBox(R()(c)?t:lP(lP({},t),{},{clockWise:c})),key:"label-".concat(e),index:e}))})):null}lT.displayName="LabelList",lT.renderCallByParent=function(t,e){var r,n=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(!t||!t.children&&n&&!t.label)return null;var o=to(t.children,lT).map(function(t,r){return(0,i.cloneElement)(t,{data:e,key:"labelList-".concat(r)})});return n?[(r=t.label)?!0===r?a().createElement(lT,{key:"labelList-implicit",data:e}):a().isValidElement(r)||L()(r)?a().createElement(lT,{key:"labelList-implicit",data:e,content:r}):z()(r)?a().createElement(lT,lA({data:e},r,{key:"labelList-implicit"})):null:null].concat(function(t){if(Array.isArray(t))return lS(t)}(o)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(o)||function(t,e){if(t){if("string"==typeof t)return lS(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return lS(t,void 0)}}(o)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):o};var lM=r(36153),lC=r.n(lM),lN=r(99388),lD=r.n(lN);function lI(t){return(lI="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function lR(){return(lR=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r=0?1:-1,u=r>=0?1:-1,l=n>=0&&r>=0||n<0&&r<0?1:0;if(a>0&&o instanceof Array){for(var s=[0,0,0,0],f=0;f<4;f++)s[f]=o[f]>a?a:o[f];i="M".concat(t,",").concat(e+c*s[0]),s[0]>0&&(i+="A ".concat(s[0],",").concat(s[0],",0,0,").concat(l,",").concat(t+u*s[0],",").concat(e)),i+="L ".concat(t+r-u*s[1],",").concat(e),s[1]>0&&(i+="A ".concat(s[1],",").concat(s[1],",0,0,").concat(l,",\n ").concat(t+r,",").concat(e+c*s[1])),i+="L ".concat(t+r,",").concat(e+n-c*s[2]),s[2]>0&&(i+="A ".concat(s[2],",").concat(s[2],",0,0,").concat(l,",\n ").concat(t+r-u*s[2],",").concat(e+n)),i+="L ".concat(t+u*s[3],",").concat(e+n),s[3]>0&&(i+="A ".concat(s[3],",").concat(s[3],",0,0,").concat(l,",\n ").concat(t,",").concat(e+n-c*s[3])),i+="Z"}else if(a>0&&o===+o&&o>0){var p=Math.min(a,o);i="M ".concat(t,",").concat(e+c*p,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+u*p,",").concat(e,"\n L ").concat(t+r-u*p,",").concat(e,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+r,",").concat(e+c*p,"\n L ").concat(t+r,",").concat(e+n-c*p,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+r-u*p,",").concat(e+n,"\n L ").concat(t+u*p,",").concat(e+n,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t,",").concat(e+n-c*p," Z")}else i="M ".concat(t,",").concat(e," h ").concat(r," v ").concat(n," h ").concat(-r," Z");return i},lF=function(t,e){if(!t||!e)return!1;var r=t.x,n=t.y,o=e.x,i=e.y,a=e.width,c=e.height;return!!(Math.abs(a)>0&&Math.abs(c)>0)&&r>=Math.min(o,o+a)&&r<=Math.max(o,o+a)&&n>=Math.min(i,i+c)&&n<=Math.max(i,i+c)},l$={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},lW=function(t){var e,r=lU(lU({},l$),t),n=(0,i.useRef)(),o=function(t){if(Array.isArray(t))return t}(e=(0,i.useState)(-1))||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,l=!1;try{for(i=(r=r.call(t)).next;!(u=(n=i.call(r)).done)&&(c.push(n.value),2!==c.length);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(e,2)||function(t,e){if(t){if("string"==typeof t)return lB(t,2);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return lB(t,2)}}(e,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),c=o[0],u=o[1];(0,i.useEffect)(function(){if(n.current&&n.current.getTotalLength)try{var t=n.current.getTotalLength();t&&u(t)}catch(t){}},[]);var l=r.x,s=r.y,p=r.width,h=r.height,d=r.radius,y=r.className,v=r.animationEasing,m=r.animationDuration,g=r.animationBegin,b=r.isAnimationActive,x=r.isUpdateAnimationActive;if(l!==+l||s!==+s||p!==+p||h!==+h||0===p||0===h)return null;var O=(0,f.Z)("recharts-rectangle",y);return x?a().createElement(uk,{canBegin:c>0,from:{width:p,height:h,x:l,y:s},to:{width:p,height:h,x:l,y:s},duration:m,animationEasing:v,isActive:x},function(t){var e=t.width,o=t.height,i=t.x,u=t.y;return a().createElement(uk,{canBegin:c>0,from:"0px ".concat(-1===c?1:c,"px"),to:"".concat(c,"px 0px"),attributeName:"strokeDasharray",begin:g,duration:m,isActive:b,easing:v},a().createElement("path",lR({},tl(r,!0),{className:O,d:lz(i,u,e,o,d),ref:n})))}):a().createElement("path",lR({},tl(r,!0),{className:O,d:lz(l,s,p,h,d)}))};function lq(t){return(lq="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function lG(){return(lG=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r0,from:{upperWidth:0,lowerWidth:0,height:d,x:l,y:s},to:{upperWidth:p,lowerWidth:h,height:d,x:l,y:s},duration:m,animationEasing:v,isActive:b},function(t){var e=t.upperWidth,o=t.lowerWidth,i=t.height,u=t.x,l=t.y;return a().createElement(uk,{canBegin:c>0,from:"0px ".concat(-1===c?1:c,"px"),to:"".concat(c,"px 0px"),attributeName:"strokeDasharray",begin:g,duration:m,easing:v},a().createElement("path",lG({},tl(r,!0),{className:x,d:lZ(u,l,e,o,i),ref:n})))}):a().createElement("g",null,a().createElement("path",lG({},tl(r,!0),{className:x,d:lZ(l,s,p,h,d)})))};function lJ(t){return(lJ="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function lQ(){return(lQ=Object.assign?Object.assign.bind():function(t){for(var e=1;e180),",").concat(+(a>u),",\n ").concat(s.x,",").concat(s.y,"\n ");if(o>0){var p=a4(r,n,o,a),h=a4(r,n,o,u);f+="L ".concat(h.x,",").concat(h.y,"\n A ").concat(o,",").concat(o,",0,\n ").concat(+(Math.abs(c)>180),",").concat(+(a<=u),",\n ").concat(p.x,",").concat(p.y," Z")}else f+="L ".concat(r,",").concat(n," Z");return f},l6=function(t){var e=t.cx,r=t.cy,n=t.innerRadius,o=t.outerRadius,i=t.cornerRadius,a=t.forceCornerRadius,c=t.cornerIsExternal,u=t.startAngle,l=t.endAngle,s=j(l-u),f=l2({cx:e,cy:r,radius:o,angle:u,sign:s,cornerRadius:i,cornerIsExternal:c}),p=f.circleTangency,h=f.lineTangency,d=f.theta,y=l2({cx:e,cy:r,radius:o,angle:l,sign:-s,cornerRadius:i,cornerIsExternal:c}),v=y.circleTangency,m=y.lineTangency,g=y.theta,b=c?Math.abs(u-l):Math.abs(u-l)-d-g;if(b<0)return a?"M ".concat(h.x,",").concat(h.y,"\n a").concat(i,",").concat(i,",0,0,1,").concat(2*i,",0\n a").concat(i,",").concat(i,",0,0,1,").concat(-(2*i),",0\n "):l3({cx:e,cy:r,innerRadius:n,outerRadius:o,startAngle:u,endAngle:l});var x="M ".concat(h.x,",").concat(h.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(s<0),",").concat(p.x,",").concat(p.y,"\n A").concat(o,",").concat(o,",0,").concat(+(b>180),",").concat(+(s<0),",").concat(v.x,",").concat(v.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(s<0),",").concat(m.x,",").concat(m.y,"\n ");if(n>0){var O=l2({cx:e,cy:r,radius:n,angle:u,sign:s,isExternal:!0,cornerRadius:i,cornerIsExternal:c}),w=O.circleTangency,S=O.lineTangency,A=O.theta,E=l2({cx:e,cy:r,radius:n,angle:l,sign:-s,isExternal:!0,cornerRadius:i,cornerIsExternal:c}),P=E.circleTangency,k=E.lineTangency,_=E.theta,T=c?Math.abs(u-l):Math.abs(u-l)-A-_;if(T<0&&0===i)return"".concat(x,"L").concat(e,",").concat(r,"Z");x+="L".concat(k.x,",").concat(k.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(s<0),",").concat(P.x,",").concat(P.y,"\n A").concat(n,",").concat(n,",0,").concat(+(T>180),",").concat(+(s>0),",").concat(w.x,",").concat(w.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(s<0),",").concat(S.x,",").concat(S.y,"Z")}else x+="L".concat(e,",").concat(r,"Z");return x},l5={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},l7=function(t){var e,r=l1(l1({},l5),t),n=r.cx,o=r.cy,i=r.innerRadius,c=r.outerRadius,u=r.cornerRadius,l=r.forceCornerRadius,s=r.cornerIsExternal,p=r.startAngle,h=r.endAngle,d=r.className;if(c0&&360>Math.abs(p-h)?l6({cx:n,cy:o,innerRadius:i,outerRadius:c,cornerRadius:Math.min(m,v/2),forceCornerRadius:l,cornerIsExternal:s,startAngle:p,endAngle:h}):l3({cx:n,cy:o,innerRadius:i,outerRadius:c,startAngle:p,endAngle:h}),a().createElement("path",lQ({},tl(r,!0),{className:y,d:e,role:"img"}))},l4=["option","shapeType","propTransformer","activeClassName","isActive"];function l8(t){return(l8="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l9(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function st(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,l4);if((0,i.isValidElement)(r))e=(0,i.cloneElement)(r,st(st({},l),(0,i.isValidElement)(r)?r.props:r));else if(L()(r))e=r(l);else if(lC()(r)&&!lD()(r)){var s=(void 0===o?function(t,e){return st(st({},e),t)}:o)(r,l);e=a().createElement(se,{shapeType:n,elementProps:s})}else e=a().createElement(se,{shapeType:n,elementProps:l});return u?a().createElement(id,{className:void 0===c?"recharts-active-shape":c},e):e}function sn(t,e){return null!=e&&"trapezoids"in t.props}function so(t,e){return null!=e&&"sectors"in t.props}function si(t,e){return null!=e&&"points"in t.props}function sa(t,e){var r,n,o=t.x===(null==e||null===(r=e.labelViewBox)||void 0===r?void 0:r.x)||t.x===e.x,i=t.y===(null==e||null===(n=e.labelViewBox)||void 0===n?void 0:n.y)||t.y===e.y;return o&&i}function sc(t,e){var r=t.endAngle===e.endAngle,n=t.startAngle===e.startAngle;return r&&n}function su(t,e){var r=t.x===e.x,n=t.y===e.y,o=t.z===e.z;return r&&n&&o}function sl(t){return(sl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var ss=["x","y"];function sf(){return(sf=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,ss),i=parseInt("".concat(r),10),a=parseInt("".concat(n),10),c=parseInt("".concat(e.height||o.height),10),u=parseInt("".concat(e.width||o.width),10);return sh(sh(sh(sh(sh({},e),o),i?{x:i}:{}),a?{y:a}:{}),{},{height:c,width:u,name:e.name,radius:e.radius})}function sy(t){return a().createElement(sr,sf({shapeType:"rectangle",propTransformer:sd,activeClassName:"recharts-active-bar"},t))}var sv=["value","background"];function sm(t){return(sm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function sg(){return(sg=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(e,sv);if(!c)return null;var l=sx(sx(sx(sx(sx({},u),{},{fill:"#eee"},c),i),H(t.props,e,r)),{},{onAnimationStart:t.handleAnimationStart,onAnimationEnd:t.handleAnimationEnd,dataKey:n,index:r,key:"background-bar-".concat(r),className:"recharts-bar-background-rectangle"});return a().createElement(sy,sg({option:t.props.background,isActive:r===o},l))})}},{key:"renderErrorBar",value:function(t,e){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var r=this.props,n=r.data,o=r.xAxis,i=r.yAxis,c=r.layout,u=to(r.children,ig);if(!u)return null;var l="vertical"===c?n[0].height/2:n[0].width/2,s=function(t,e){var r=Array.isArray(t.value)?t.value[1]:t.value;return{x:t.x,y:t.y,value:r,errorVal:aO(t,e)}};return a().createElement(id,{clipPath:t?"url(#clipPath-".concat(e,")"):null},u.map(function(t){return a().cloneElement(t,{key:"error-bar-".concat(e,"-").concat(t.props.dataKey),data:n,xAxis:o,yAxis:i,layout:c,offset:l,dataPointFormatter:s})}))}},{key:"render",value:function(){var t=this.props,e=t.hide,r=t.data,n=t.className,o=t.xAxis,i=t.yAxis,c=t.left,u=t.top,l=t.width,s=t.height,p=t.isAnimationActive,h=t.background,d=t.id;if(e||!r||!r.length)return null;var y=this.state.isAnimationFinished,v=(0,f.Z)("recharts-bar",n),m=o&&o.allowDataOverflow,g=i&&i.allowDataOverflow,b=m||g,x=R()(d)?this.id:d;return a().createElement(id,{className:v},m||g?a().createElement("defs",null,a().createElement("clipPath",{id:"clipPath-".concat(x)},a().createElement("rect",{x:m?c:c-l/2,y:g?u:u-s/2,width:m?l:2*l,height:g?s:2*s}))):null,a().createElement(id,{className:"recharts-bar-rectangles",clipPath:b?"url(#clipPath-".concat(x,")"):null},h?this.renderBackground():null,this.renderRectangles()),this.renderErrorBar(b,x),(!p||y)&&lT.renderCallByParent(this.props,r))}}],n=[{key:"getDerivedStateFromProps",value:function(t,e){return t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curData:t.data,prevData:e.curData}:t.data!==e.curData?{curData:t.data}:null}}],r&&sO(i.prototype,r),n&&sO(i,n),Object.defineProperty(i,"prototype",{writable:!1}),i}(i.PureComponent);function sk(t){return(sk="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function s_(t,e){for(var r=0;r0&&Math.abs(m)0&&Math.abs(y)0&&(S=Math.min((t||0)-(A[e-1]||0),S))});var E=S/j,P="vertical"===y.layout?r.height:r.width;if("gap"===y.padding&&(u=E*P/2),"no-gap"===y.padding){var k=_(t.barCategoryGap,E*P),T=E*P/2;u=T-k-(T-k)/P*k}}l="xAxis"===n?[r.left+(b.left||0)+(u||0),r.left+r.width-(b.right||0)-(u||0)]:"yAxis"===n?"horizontal"===c?[r.top+r.height-(b.bottom||0),r.top+(b.top||0)]:[r.top+(b.top||0)+(u||0),r.top+r.height-(b.bottom||0)-(u||0)]:y.range,O&&(l=[l[1],l[0]]);var M=aR(y,o,f),C=M.scale,N=M.realScaleType;C.domain(m).range(l),aB(C);var D=aW(C,sM(sM({},y),{},{realScaleType:N}));"xAxis"===n?(d="top"===v&&!x||"bottom"===v&&x,p=r.left,h=s[w]-d*y.height):"yAxis"===n&&(d="left"===v&&!x||"right"===v&&x,p=s[w]-d*y.width,h=r.top);var I=sM(sM(sM({},y),D),{},{realScaleType:N,x:p,y:h,scale:C,width:"xAxis"===n?r.width:y.width,height:"yAxis"===n?r.height:y.height});return I.bandSize=aJ(I,D),y.hide||"xAxis"!==n?y.hide||(s[w]+=(d?-1:1)*I.width):s[w]+=(d?-1:1)*I.height,sM(sM({},i),{},sC({},a,I))},{})},sI=function(t,e){var r=t.x,n=t.y,o=e.x,i=e.y;return{x:Math.min(r,o),y:Math.min(n,i),width:Math.abs(o-r),height:Math.abs(i-n)}},sR=function(){var t,e;function r(t){(function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")})(this,r),this.scale=t}return t=[{key:"domain",get:function(){return this.scale.domain}},{key:"range",get:function(){return this.scale.range}},{key:"rangeMin",get:function(){return this.range()[0]}},{key:"rangeMax",get:function(){return this.range()[1]}},{key:"bandwidth",get:function(){return this.scale.bandwidth}},{key:"apply",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.bandAware,n=e.position;if(void 0!==t){if(n)switch(n){case"start":default:return this.scale(t);case"middle":var o=this.bandwidth?this.bandwidth()/2:0;return this.scale(t)+o;case"end":var i=this.bandwidth?this.bandwidth():0;return this.scale(t)+i}if(r){var a=this.bandwidth?this.bandwidth()/2:0;return this.scale(t)+a}return this.scale(t)}}},{key:"isInRange",value:function(t){var e=this.range(),r=e[0],n=e[e.length-1];return r<=n?t>=r&&t<=n:t>=n&&t<=r}}],e=[{key:"create",value:function(t){return new r(t)}}],t&&s_(r.prototype,t),e&&s_(r,e),Object.defineProperty(r,"prototype",{writable:!1}),r}();sC(sR,"EPS",1e-4);var sB=function(t){var e=Object.keys(t).reduce(function(e,r){return sM(sM({},e),{},sC({},r,sR.create(t[r])))},{});return sM(sM({},e),{},{apply:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.bandAware,o=r.position;return ch()(t,function(t,r){return e[r].apply(t,{bandAware:n,position:o})})},isInRange:function(t){return tE()(t,function(t,r){return e[r].isInRange(t)})}})},sL=function(t){var e=t.width,r=t.height,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=(n%180+180)%180*Math.PI/180,i=Math.atan(r/e);return Math.abs(o>i&&ot*o)return!1;var i=r();return t*(e-t*i/2-n)>=0&&t*(e+t*i/2-o)<=0}function sF(t){return(sF="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function s$(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function sW(t){for(var e=1;e=2?j(l[1].coordinate-l[0].coordinate):1,O=(n="width"===m,o=s.x,i=s.y,a=s.width,c=s.height,1===x?{start:n?o:i,end:n?o+a:i+c}:{start:n?o+a:i+c,end:n?o:i});return"equidistantPreserveStart"===h?function(t,e,r,n,o){for(var i,a=(n||[]).slice(),c=e.start,u=e.end,l=0,s=1,f=c;s<=a.length;)if(i=function(){var e,i=null==n?void 0:n[l];if(void 0===i)return{v:sU(n,s)};var a=l,p=function(){return void 0===e&&(e=r(i,a)),e},h=i.coordinate,d=0===l||sz(t,h,p,f,u);d||(l=0,f=c,s+=1),d&&(f=h+t*(p()/2+o),l+=s)}())return i.v;return[]}(x,O,b,l,f):("preserveStart"===h||"preserveStartEnd"===h?function(t,e,r,n,o,i){var a=(n||[]).slice(),c=a.length,u=e.start,l=e.end;if(i){var s=n[c-1],f=r(s,c-1),p=t*(s.coordinate+t*f/2-l);a[c-1]=s=sW(sW({},s),{},{tickCoord:p>0?s.coordinate-p*t:s.coordinate}),sz(t,s.tickCoord,function(){return f},u,l)&&(l=s.tickCoord-t*(f/2+o),a[c-1]=sW(sW({},s),{},{isShow:!0}))}for(var h=i?c-1:c,d=function(e){var n,i=a[e],c=function(){return void 0===n&&(n=r(i,e)),n};if(0===e){var s=t*(i.coordinate-t*c()/2-u);a[e]=i=sW(sW({},i),{},{tickCoord:s<0?i.coordinate-s*t:i.coordinate})}else a[e]=i=sW(sW({},i),{},{tickCoord:i.coordinate});sz(t,i.tickCoord,c,u,l)&&(u=i.tickCoord+t*(c()/2+o),a[e]=sW(sW({},i),{},{isShow:!0}))},y=0;y0?l.coordinate-f*t:l.coordinate})}else i[e]=l=sW(sW({},l),{},{tickCoord:l.coordinate});sz(t,l.tickCoord,s,c,u)&&(u=l.tickCoord-t*(s()/2+o),i[e]=sW(sW({},l),{},{isShow:!0}))},s=a-1;s>=0;s--)l(s);return i}(x,O,b,l,f)).filter(function(t){return t.isShow})}function sG(t){return(sG="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function sV(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);ru[n]+l?Math.max(s,u[n]):Math.max(f,u[n])}function s2(t){return(s2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function s3(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function s6(t){for(var e=1;e1||Math.abs(t.height-this.lastBoundingBox.height)>1)&&(this.lastBoundingBox.width=t.width,this.lastBoundingBox.height=t.height)}else(-1!==this.lastBoundingBox.width||-1!==this.lastBoundingBox.height)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1)}},{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.handleKeyDown),this.updateBBox()}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.handleKeyDown)}},{key:"componentDidUpdate",value:function(){var t,e;this.props.active&&this.updateBBox(),this.state.dismissed&&((null===(t=this.props.coordinate)||void 0===t?void 0:t.x)!==this.state.dismissedAtCoordinate.x||(null===(e=this.props.coordinate)||void 0===e?void 0:e.y)!==this.state.dismissedAtCoordinate.y)&&(this.state.dismissed=!1)}},{key:"render",value:function(){var t,e,r,n,o,i,c,u,l,s,p,h,d,y,v,m,g,b,x,O,w=this,j=this.props,S=j.active,E=j.allowEscapeViewBox,P=j.animationDuration,k=j.animationEasing,_=j.children,T=j.coordinate,M=j.hasPayload,C=j.isAnimationActive,N=j.offset,D=j.position,I=j.reverseDirection,R=j.useTranslate3d,B=j.viewBox,L=j.wrapperStyle,U=(d=(t={allowEscapeViewBox:E,coordinate:T,offsetTopLeft:N,position:D,reverseDirection:I,tooltipBox:{height:this.lastBoundingBox.height,width:this.lastBoundingBox.width},useTranslate3d:R,viewBox:B}).allowEscapeViewBox,y=t.coordinate,v=t.offsetTopLeft,m=t.position,g=t.reverseDirection,b=t.tooltipBox,x=t.useTranslate3d,O=t.viewBox,b.height>0&&b.width>0&&y?(r=(e={translateX:p=s1({allowEscapeViewBox:d,coordinate:y,key:"x",offsetTopLeft:v,position:m,reverseDirection:g,tooltipDimension:b.width,viewBox:O,viewBoxDimension:O.width}),translateY:h=s1({allowEscapeViewBox:d,coordinate:y,key:"y",offsetTopLeft:v,position:m,reverseDirection:g,tooltipDimension:b.height,viewBox:O,viewBoxDimension:O.height}),useTranslate3d:x}).translateX,n=e.translateY,s=c6({transform:e.useTranslate3d?"translate3d(".concat(r,"px, ").concat(n,"px, 0)"):"translate(".concat(r,"px, ").concat(n,"px)")})):s=s0,{cssProperties:s,cssClasses:(c=(o={translateX:p,translateY:h,coordinate:y}).coordinate,u=o.translateX,l=o.translateY,(0,f.Z)(sQ,(sJ(i={},"".concat(sQ,"-right"),A(u)&&c&&A(c.x)&&u>=c.x),sJ(i,"".concat(sQ,"-left"),A(u)&&c&&A(c.x)&&u=c.y),sJ(i,"".concat(sQ,"-top"),A(l)&&c&&A(c.y)&&l0;return a().createElement(ft,{allowEscapeViewBox:n,animationDuration:o,animationEasing:i,isAnimationActive:s,active:r,coordinate:u,hasPayload:x,offset:f,position:d,reverseDirection:y,useTranslate3d:v,viewBox:m,wrapperStyle:g},(t=fn(fn({},this.props),{},{payload:b}),a().isValidElement(c)?a().cloneElement(c,t):"function"==typeof c?a().createElement(c,t):a().createElement(sY,t)))}}],function(t,e){for(var r=0;r=0;--e)o[e]=(a[e]-o[e+1])/i[e];for(e=0,i[n-1]=(t[n]+o[n-1])/2;e=f;--p)c.point(m[p],g[p]);c.lineEnd(),c.areaEnd()}}v&&(m[s]=+t(h,s,l),g[s]=+e(h,s,l),c.point(n?+n(h,s,l):m[s],r?+r(h,s,l):g[s]))}if(d)return c=null,d+""||null}function s(){return fT().defined(o).curve(a).context(i)}return t="function"==typeof t?t:void 0===t?fk:oi(+t),e="function"==typeof e?e:void 0===e?oi(0):oi(+e),r="function"==typeof r?r:void 0===r?f_:oi(+r),l.x=function(e){return arguments.length?(t="function"==typeof e?e:oi(+e),n=null,l):t},l.x0=function(e){return arguments.length?(t="function"==typeof e?e:oi(+e),l):t},l.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:oi(+t),l):n},l.y=function(t){return arguments.length?(e="function"==typeof t?t:oi(+t),r=null,l):e},l.y0=function(t){return arguments.length?(e="function"==typeof t?t:oi(+t),l):e},l.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:oi(+t),l):r},l.lineX0=l.lineY0=function(){return s().x(t).y(e)},l.lineY1=function(){return s().x(t).y(r)},l.lineX1=function(){return s().x(n).y(e)},l.defined=function(t){return arguments.length?(o="function"==typeof t?t:oi(!!t),l):o},l.curve=function(t){return arguments.length?(a=t,null!=i&&(c=a(i)),l):a},l.context=function(t){return arguments.length?(null==t?i=c=null:c=a(i=t),l):i},l}function fC(t){return(fC="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function fN(){return(fN=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}};var fR={curveBasisClosed:function(t){return new fh(t)},curveBasisOpen:function(t){return new fd(t)},curveBasis:function(t){return new fp(t)},curveBumpX:function(t){return new fy(t,!0)},curveBumpY:function(t){return new fy(t,!1)},curveLinearClosed:function(t){return new fv(t)},curveLinear:fg,curveMonotoneX:function(t){return new fw(t)},curveMonotoneY:function(t){return new fj(t)},curveNatural:function(t){return new fA(t)},curveStep:function(t){return new fP(t,.5)},curveStepAfter:function(t){return new fP(t,1)},curveStepBefore:function(t){return new fP(t,0)}},fB=function(t){return t.x===+t.x&&t.y===+t.y},fL=function(t){return t.x},fU=function(t){return t.y},fz=function(t,e){if(L()(t))return t;var r="curve".concat(oA()(t));return("curveMonotone"===r||"curveBump"===r)&&e?fR["".concat(r).concat("vertical"===e?"Y":"X")]:fR[r]||fg},fF=function(t){var e,r=t.type,n=t.points,o=void 0===n?[]:n,i=t.baseLine,a=t.layout,c=t.connectNulls,u=void 0!==c&&c,l=fz(void 0===r?"linear":r,a),s=u?o.filter(function(t){return fB(t)}):o;if(Array.isArray(i)){var f=u?i.filter(function(t){return fB(t)}):i,p=s.map(function(t,e){return fI(fI({},t),{},{base:f[e]})});return(e="vertical"===a?fM().y(fU).x1(fL).x0(function(t){return t.base.x}):fM().x(fL).y1(fU).y0(function(t){return t.base.y})).defined(fB).curve(l),e(p)}return(e="vertical"===a&&A(i)?fM().y(fU).x1(fL).x0(i):A(i)?fM().x(fL).y1(fU).y0(i):fT().x(fL).y(fU)).defined(fB).curve(l),e(s)},f$=function(t){var e=t.className,r=t.points,n=t.path,o=t.pathRef;if((!r||!r.length)&&!n)return null;var i=r&&r.length?fF(t):n;return a().createElement("path",fN({},tl(t),X(t),{className:(0,f.Z)("recharts-curve",e),d:i,ref:o}))};function fW(t){return(fW="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var fq=["x","y","top","left","width","height","className"];function fG(){return(fG=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,fq));return A(r)&&A(o)&&A(p)&&A(d)&&A(c)&&A(l)?a().createElement("path",fG({},tl(v,!0),{className:(0,f.Z)("recharts-cross",y),d:"M".concat(r,",").concat(c,"v").concat(d,"M").concat(l,",").concat(o,"h").concat(p)})):null};function fH(){return(fH=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function f6(t,e){for(var r=0;r0?this.props:s)),n<=0||o<=0||!p||!p.length)?null:a().createElement(id,{className:(0,f.Z)("recharts-cartesian-axis",c),ref:function(e){t.layerReference=e}},r&&this.renderAxisLine(),this.renderTicks(p,this.state.fontSize,this.state.letterSpacing),lb.renderCallByParent(this.props))}}],n=[{key:"renderTickItem",value:function(t,e,r){return a().isValidElement(t)?a().cloneElement(t,e):L()(t)?t(e):a().createElement(lu,f0({},e,{className:"recharts-cartesian-axis-tick-value"}),r)}}],r&&f6(i.prototype,r),n&&f6(i,n),Object.defineProperty(i,"prototype",{writable:!1}),i}(i.Component);function pt(t){return(pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function pe(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function pr(t){for(var e=1;e0&&e.handleDrag(t.changedTouches[0])}),pd(pp(e),"handleDragEnd",function(){e.setState({isTravellerMoving:!1,isSlideMoving:!1},function(){var t=e.props,r=t.endIndex,n=t.onDragEnd,o=t.startIndex;null==n||n({endIndex:r,startIndex:o})}),e.detachDragEndListener()}),pd(pp(e),"handleLeaveWrapper",function(){(e.state.isTravellerMoving||e.state.isSlideMoving)&&(e.leaveTimer=window.setTimeout(e.handleDragEnd,e.props.leaveTimeOut))}),pd(pp(e),"handleEnterSlideOrTraveller",function(){e.setState({isTextActive:!0})}),pd(pp(e),"handleLeaveSlideOrTraveller",function(){e.setState({isTextActive:!1})}),pd(pp(e),"handleSlideDragStart",function(t){var r=pm(t)?t.changedTouches[0]:t;e.setState({isTravellerMoving:!1,isSlideMoving:!0,slideMoveStartX:r.pageX}),e.attachDragEndListener()}),e.travellerDragStartHandlers={startX:e.handleTravellerDragStart.bind(pp(e),"startX"),endX:e.handleTravellerDragStart.bind(pp(e),"endX")},e.state={},e}return r=[{key:"componentWillUnmount",value:function(){this.leaveTimer&&(clearTimeout(this.leaveTimer),this.leaveTimer=null),this.detachDragEndListener()}},{key:"getIndex",value:function(t){var e=t.startX,r=t.endX,n=this.state.scaleValues,o=this.props,i=o.gap,a=o.data.length-1,u=c.getIndexInRange(n,Math.min(e,r)),l=c.getIndexInRange(n,Math.max(e,r));return{startIndex:u-u%i,endIndex:l===a?a:l-l%i}}},{key:"getTextOfTick",value:function(t){var e=this.props,r=e.data,n=e.tickFormatter,o=e.dataKey,i=aO(r[t],o,t);return L()(n)?n(i,t):i}},{key:"attachDragEndListener",value:function(){window.addEventListener("mouseup",this.handleDragEnd,!0),window.addEventListener("touchend",this.handleDragEnd,!0),window.addEventListener("mousemove",this.handleDrag,!0)}},{key:"detachDragEndListener",value:function(){window.removeEventListener("mouseup",this.handleDragEnd,!0),window.removeEventListener("touchend",this.handleDragEnd,!0),window.removeEventListener("mousemove",this.handleDrag,!0)}},{key:"handleSlideDrag",value:function(t){var e=this.state,r=e.slideMoveStartX,n=e.startX,o=e.endX,i=this.props,a=i.x,c=i.width,u=i.travellerWidth,l=i.startIndex,s=i.endIndex,f=i.onChange,p=t.pageX-r;p>0?p=Math.min(p,a+c-u-o,a+c-u-n):p<0&&(p=Math.max(p,a-n,a-o));var h=this.getIndex({startX:n+p,endX:o+p});(h.startIndex!==l||h.endIndex!==s)&&f&&f(h),this.setState({startX:n+p,endX:o+p,slideMoveStartX:t.pageX})}},{key:"handleTravellerDragStart",value:function(t,e){var r=pm(e)?e.changedTouches[0]:e;this.setState({isSlideMoving:!1,isTravellerMoving:!0,movingTravellerId:t,brushMoveStartX:r.pageX}),this.attachDragEndListener()}},{key:"handleTravellerMove",value:function(t){var e,r=this.state,n=r.brushMoveStartX,o=r.movingTravellerId,i=r.endX,a=r.startX,c=this.state[o],u=this.props,l=u.x,s=u.width,f=u.travellerWidth,p=u.onChange,h=u.gap,d=u.data,y={startX:this.state.startX,endX:this.state.endX},v=t.pageX-n;v>0?v=Math.min(v,l+s-f-c):v<0&&(v=Math.max(v,l-c)),y[o]=c+v;var m=this.getIndex(y),g=m.startIndex,b=m.endIndex,x=function(){var t=d.length-1;return"startX"===o&&(i>a?g%h==0:b%h==0)||ia?b%h==0:g%h==0)||i>a&&b===t};this.setState((pd(e={},o,c+v),pd(e,"brushMoveStartX",t.pageX),e),function(){p&&x()&&p(m)})}},{key:"handleTravellerMoveKeyboard",value:function(t,e){var r=this,n=this.state,o=n.scaleValues,i=n.startX,a=n.endX,c=this.state[e],u=o.indexOf(c);if(-1!==u){var l=u+t;if(-1!==l&&!(l>=o.length)){var s=o[l];"startX"===e&&s>=a||"endX"===e&&s<=i||this.setState(pd({},e,s),function(){r.props.onChange(r.getIndex({startX:r.state.startX,endX:r.state.endX}))})}}}},{key:"renderBackground",value:function(){var t=this.props,e=t.x,r=t.y,n=t.width,o=t.height,i=t.fill,c=t.stroke;return a().createElement("rect",{stroke:c,fill:i,x:e,y:r,width:n,height:o})}},{key:"renderPanorama",value:function(){var t=this.props,e=t.x,r=t.y,n=t.width,o=t.height,c=t.data,u=t.children,l=t.padding,s=i.Children.only(u);return s?a().cloneElement(s,{x:e,y:r,width:n,height:o,margin:l,compact:!0,data:c}):null}},{key:"renderTravellerLayer",value:function(t,e){var r=this,n=this.props,o=n.y,i=n.travellerWidth,u=n.height,l=n.traveller,s=n.ariaLabel,f=n.data,p=n.startIndex,h=n.endIndex,d=Math.max(t,this.props.x),y=pl(pl({},tl(this.props)),{},{x:d,y:o,width:i,height:u}),v=s||"Min value: ".concat(f[p].name,", Max value: ").concat(f[h].name);return a().createElement(id,{tabIndex:0,role:"slider","aria-label":v,"aria-valuenow":t,className:"recharts-brush-traveller",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.travellerDragStartHandlers[e],onTouchStart:this.travellerDragStartHandlers[e],onKeyDown:function(t){["ArrowLeft","ArrowRight"].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),r.handleTravellerMoveKeyboard("ArrowRight"===t.key?1:-1,e))},onFocus:function(){r.setState({isTravellerFocused:!0})},onBlur:function(){r.setState({isTravellerFocused:!1})},style:{cursor:"col-resize"}},c.renderTraveller(l,y))}},{key:"renderSlide",value:function(t,e){var r=this.props,n=r.y,o=r.height,i=r.stroke,c=r.travellerWidth;return a().createElement("rect",{className:"recharts-brush-slide",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.handleSlideDragStart,onTouchStart:this.handleSlideDragStart,style:{cursor:"move"},stroke:"none",fill:i,fillOpacity:.2,x:Math.min(t,e)+c,y:n,width:Math.max(Math.abs(e-t)-c,0),height:o})}},{key:"renderText",value:function(){var t=this.props,e=t.startIndex,r=t.endIndex,n=t.y,o=t.height,i=t.travellerWidth,c=t.stroke,u=this.state,l=u.startX,s=u.endX,f={pointerEvents:"none",fill:c};return a().createElement(id,{className:"recharts-brush-texts"},a().createElement(lu,pc({textAnchor:"end",verticalAnchor:"middle",x:Math.min(l,s)-5,y:n+o/2},f),this.getTextOfTick(e)),a().createElement(lu,pc({textAnchor:"start",verticalAnchor:"middle",x:Math.max(l,s)+i+5,y:n+o/2},f),this.getTextOfTick(r)))}},{key:"render",value:function(){var t=this.props,e=t.data,r=t.className,n=t.children,o=t.x,i=t.y,c=t.width,u=t.height,l=t.alwaysShowText,s=this.state,p=s.startX,h=s.endX,d=s.isTextActive,y=s.isSlideMoving,v=s.isTravellerMoving,m=s.isTravellerFocused;if(!e||!e.length||!A(o)||!A(i)||!A(c)||!A(u)||c<=0||u<=0)return null;var g=(0,f.Z)("recharts-brush",r),b=1===a().Children.count(n),x=pi("userSelect","none");return a().createElement(id,{className:g,onMouseLeave:this.handleLeaveWrapper,onTouchMove:this.handleTouchMove,style:x},this.renderBackground(),b&&this.renderPanorama(),this.renderSlide(p,h),this.renderTravellerLayer(p,"startX"),this.renderTravellerLayer(h,"endX"),(d||y||v||m||l)&&this.renderText())}}],n=[{key:"renderDefaultTraveller",value:function(t){var e=t.x,r=t.y,n=t.width,o=t.height,i=t.stroke,c=Math.floor(r+o/2)-1;return a().createElement(a().Fragment,null,a().createElement("rect",{x:e,y:r,width:n,height:o,fill:i,stroke:"none"}),a().createElement("line",{x1:e+1,y1:c,x2:e+n-1,y2:c,fill:"none",stroke:"#fff"}),a().createElement("line",{x1:e+1,y1:c+2,x2:e+n-1,y2:c+2,fill:"none",stroke:"#fff"}))}},{key:"renderTraveller",value:function(t,e){return a().isValidElement(t)?a().cloneElement(t,e):L()(t)?t(e):c.renderDefaultTraveller(e)}},{key:"getDerivedStateFromProps",value:function(t,e){var r=t.data,n=t.width,o=t.x,i=t.travellerWidth,a=t.updateId,c=t.startIndex,u=t.endIndex;if(r!==e.prevData||a!==e.prevUpdateId)return pl({prevData:r,prevTravellerWidth:i,prevUpdateId:a,prevX:o,prevWidth:n},r&&r.length?pv({data:r,width:n,x:o,travellerWidth:i,startIndex:c,endIndex:u}):{scale:null,scaleValues:null});if(e.scale&&(n!==e.prevWidth||o!==e.prevX||i!==e.prevTravellerWidth)){e.scale.range([o,o+n-i]);var l=e.scale.domain().map(function(t){return e.scale(t)});return{prevData:r,prevTravellerWidth:i,prevUpdateId:a,prevX:o,prevWidth:n,startX:e.scale(t.startIndex),endX:e.scale(t.endIndex),scaleValues:l}}return null}},{key:"getIndexInRange",value:function(t,e){for(var r=t.length,n=0,o=r-1;o-n>1;){var i=Math.floor((n+o)/2);t[i]>e?o=i:n=i}return e>=t[o]?o:n}}],r&&ps(c.prototype,r),n&&ps(c,n),Object.defineProperty(c,"prototype",{writable:!1}),c}(i.PureComponent);pd(pg,"displayName","Brush"),pd(pg,"defaultProps",{height:40,travellerWidth:5,gap:1,fill:"#fff",stroke:"#666",padding:{top:1,right:1,bottom:1,left:1},leaveTimeOut:1e3,alwaysShowText:!1});var pb=function(t,e){var r=t.alwaysShow,n=t.ifOverflow;return r&&(n="extendDomain"),n===e};function px(t){return(px="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function pO(){return(pO=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);rt.length)&&(e=t.length);for(var r=0,n=Array(e);r=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function p3(t,e){return(p3=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function p6(t){if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function p5(t){return(p5=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p7(t){return function(t){if(Array.isArray(t))return p8(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||p4(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p4(t,e){if(t){if("string"==typeof t)return p8(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p8(t,e)}}function p8(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0?i:t&&t.length&&A(n)&&A(o)?t.slice(n,o+1):[]};function hu(t){return"number"===t?[0,"auto"]:void 0}var hl=function(t,e,r,n){var o=t.graphicalItems,i=t.tooltipAxis,a=hc(e,t);return r<0||!o||!o.length||r>=a.length?null:o.reduce(function(o,c){if(c.props.hide)return o;var u,l,s=null!==(u=c.props.data)&&void 0!==u?u:e;return(s&&t.dataStartIndex+t.dataEndIndex!==0&&(s=s.slice(t.dataStartIndex,t.dataEndIndex+1)),l=i.dataKey&&!i.allowDuplicatedCategory?N(void 0===s?a:s,i.dataKey,n):s&&s[r]||a[r])?[].concat(p7(o),[a0(c,l)]):o},[])},hs=function(t,e,r,n){var o=n||{x:t.chartX,y:t.chartY},i="horizontal"===r?o.x:"vertical"===r?o.y:"centric"===r?o.angle:o.radius,a=t.orderedTooltipTicks,c=t.tooltipAxis,u=t.tooltipTicks,l=aj(i,a,u,c);if(l>=0&&u){var s=u[l]&&u[l].value,f=hl(t,e,l,s),p=ha(r,a,l,o);return{activeTooltipIndex:l,activeLabel:s,activePayload:f,activeCoordinate:p}}return null},hf=function(t,e){var r=e.axes,n=e.graphicalItems,o=e.axisType,i=e.axisIdKey,a=e.stackGroups,c=e.dataStartIndex,u=e.dataEndIndex,l=t.layout,s=t.children,f=t.stackOffset,p=aM(l,o);return r.reduce(function(e,r){var h=r.props,d=h.type,y=h.dataKey,v=h.allowDataOverflow,m=h.allowDuplicatedCategory,g=h.scale,b=h.ticks,x=h.includeHidden,O=r.props[i];if(e[O])return e;var w=hc(t.data,{graphicalItems:n.filter(function(t){return t.props[i]===O}),dataStartIndex:c,dataEndIndex:u}),j=w.length;(function(t,e,r){if("number"===r&&!0===e&&Array.isArray(t)){var n=null==t?void 0:t[0],o=null==t?void 0:t[1];if(n&&o&&A(n)&&A(o))return!0}return!1})(r.props.domain,v,d)&&(P=aK(r.props.domain,null,v),p&&("number"===d||"auto"!==g)&&(_=aw(w,y,"category")));var S=hu(d);if(!P||0===P.length){var E,P,k,_,T,C=null!==(T=r.props.domain)&&void 0!==T?T:S;if(y){if(P=aw(w,y,d),"category"===d&&p){var N=M(P);m&&N?(k=P,P=tx()(0,j)):m||(P=aQ(C,P,r).reduce(function(t,e){return t.indexOf(e)>=0?t:[].concat(p7(t),[e])},[]))}else if("category"===d)P=m?P.filter(function(t){return""!==t&&!R()(t)}):aQ(C,P,r).reduce(function(t,e){return t.indexOf(e)>=0||""===e||R()(e)?t:[].concat(p7(t),[e])},[]);else if("number"===d){var D=a_(w,n.filter(function(t){return t.props[i]===O&&(x||!t.props.hide)}),y,o,l);D&&(P=D)}p&&("number"===d||"auto"!==g)&&(_=aw(w,y,"category"))}else P=p?tx()(0,j):a&&a[O]&&a[O].hasStack&&"number"===d?"expand"===f?[0,1]:aH(a[O].stackGroups,c,u):aT(w,n.filter(function(t){return t.props[i]===O&&(x||!t.props.hide)}),d,l,!0);"number"===d?(P=pW(s,P,O,o,b),C&&(P=aK(C,P,v))):"category"===d&&C&&P.every(function(t){return C.indexOf(t)>=0})&&(P=C)}return ht(ht({},e),{},he({},O,ht(ht({},r.props),{},{axisType:o,domain:P,categoricalDomain:_,duplicateDomain:k,originalDomain:null!==(E=r.props.domain)&&void 0!==E?E:S,isCategorical:p,layout:l})))},{})},hp=function(t,e){var r=e.graphicalItems,n=e.Axis,o=e.axisType,i=e.axisIdKey,a=e.stackGroups,c=e.dataStartIndex,u=e.dataEndIndex,l=t.layout,s=t.children,f=hc(t.data,{graphicalItems:r,dataStartIndex:c,dataEndIndex:u}),p=f.length,h=aM(l,o),d=-1;return r.reduce(function(t,e){var y,v=e.props[i],m=hu("number");return t[v]?t:(d++,y=h?tx()(0,p):a&&a[v]&&a[v].hasStack?pW(s,y=aH(a[v].stackGroups,c,u),v,o):pW(s,y=aK(m,aT(f,r.filter(function(t){return t.props[i]===v&&!t.props.hide}),"number",l),n.defaultProps.allowDataOverflow),v,o),ht(ht({},t),{},he({},v,ht(ht({axisType:o},n.defaultProps),{},{hide:!0,orientation:x()(hn,"".concat(o,".").concat(d%2),null),domain:y,originalDomain:m,isCategorical:h,layout:l}))))},{})},hh=function(t,e){var r=e.axisType,n=void 0===r?"xAxis":r,o=e.AxisComp,i=e.graphicalItems,a=e.stackGroups,c=e.dataStartIndex,u=e.dataEndIndex,l=t.children,s="".concat(n,"Id"),f=to(l,o),p={};return f&&f.length?p=hf(t,{axes:f,graphicalItems:i,axisType:n,axisIdKey:s,stackGroups:a,dataStartIndex:c,dataEndIndex:u}):i&&i.length&&(p=hp(t,{Axis:o,graphicalItems:i,axisType:n,axisIdKey:s,stackGroups:a,dataStartIndex:c,dataEndIndex:u})),p},hd=function(t){var e=T(t),r=aN(e,!1,!0);return{tooltipTicks:r,orderedTooltipTicks:tw()(r,function(t){return t.coordinate}),tooltipAxis:e,tooltipAxisBandSize:aJ(e,r)}},hy=function(t){var e=t.children,r=t.defaultShowTooltip,n=ti(e,pg),o=0,i=0;return t.data&&0!==t.data.length&&(i=t.data.length-1),n&&n.props&&(n.props.startIndex>=0&&(o=n.props.startIndex),n.props.endIndex>=0&&(i=n.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:o,dataEndIndex:i,activeTooltipIndex:-1,isTooltipActive:!!r}},hv=function(t){return"horizontal"===t?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:"vertical"===t?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:"centric"===t?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},hm=function(t,e){var r=t.props,n=t.graphicalItems,o=t.xAxisMap,i=void 0===o?{}:o,a=t.yAxisMap,c=void 0===a?{}:a,u=r.width,l=r.height,s=r.children,f=r.margin||{},p=ti(s,pg),h=ti(s,as),d=Object.keys(c).reduce(function(t,e){var r=c[e],n=r.orientation;return r.mirror||r.hide?t:ht(ht({},t),{},he({},n,t[n]+r.width))},{left:f.left||0,right:f.right||0}),y=Object.keys(i).reduce(function(t,e){var r=i[e],n=r.orientation;return r.mirror||r.hide?t:ht(ht({},t),{},he({},n,x()(t,"".concat(n))+r.height))},{top:f.top||0,bottom:f.bottom||0}),v=ht(ht({},y),d),m=v.bottom;p&&(v.bottom+=p.props.height||pg.defaultProps.height),h&&e&&(v=aP(v,n,r,e));var g=u-v.left-v.right,b=l-v.top-v.bottom;return ht(ht({brushBottom:m},v),{},{width:Math.max(g,0),height:Math.max(b,0)})},hg=function(t){var e,r=t.chartName,n=t.GraphicalChild,o=t.defaultTooltipEventType,c=void 0===o?"axis":o,u=t.validateTooltipEventTypes,l=void 0===u?["axis"]:u,s=t.axisComponents,p=t.legendContent,d=t.formatAxisMap,y=t.defaultProps,v=function(t,e){var r=e.graphicalItems,n=e.stackGroups,o=e.offset,i=e.updateId,a=e.dataStartIndex,c=e.dataEndIndex,u=t.barSize,l=t.layout,f=t.barGap,p=t.barCategoryGap,h=t.maxBarSize,d=hv(l),y=d.numericAxisName,v=d.cateAxisName,m=!!r&&!!r.length&&r.some(function(t){var e=tt(t&&t.type);return e&&e.indexOf("Bar")>=0})&&aA({barSize:u,stackGroups:n}),g=[];return r.forEach(function(r,u){var d,b=hc(t.data,{graphicalItems:[r],dataStartIndex:a,dataEndIndex:c}),x=r.props,O=x.dataKey,w=x.maxBarSize,j=r.props["".concat(y,"Id")],S=r.props["".concat(v,"Id")],A=s.reduce(function(t,n){var o,i=e["".concat(n.axisType,"Map")],a=r.props["".concat(n.axisType,"Id")];i&&i[a]||"zAxis"===n.axisType||function(t,e){if(!t)throw Error("Invariant failed")}(!1);var c=i[a];return ht(ht({},t),{},(he(o={},n.axisType,c),he(o,"".concat(n.axisType,"Ticks"),aN(c)),o))},{}),E=A[v],P=A["".concat(v,"Ticks")],k=n&&n[j]&&n[j].hasStack&&aX(r,n[j].stackGroups),_=tt(r.type).indexOf("Bar")>=0,T=aJ(E,P),M=[];if(_){var C,N,D=R()(w)?h:w,I=null!==(C=null!==(N=aJ(E,P,!0))&&void 0!==N?N:D)&&void 0!==C?C:0;M=aE({barGap:f,barCategoryGap:p,bandSize:I!==T?I:T,sizeList:m[S],maxBarSize:D}),I!==T&&(M=M.map(function(t){return ht(ht({},t),{},{position:ht(ht({},t.position),{},{offset:t.position.offset-I/2})})}))}var B=r&&r.type&&r.type.getComposedData;B&&g.push({props:ht(ht({},B(ht(ht({},A),{},{displayedData:b,props:t,dataKey:O,item:r,bandSize:T,barPosition:M,offset:o,stackedData:k,layout:l,dataStartIndex:a,dataEndIndex:c}))),{},(he(d={key:r.key||"item-".concat(u)},y,A[y]),he(d,v,A[v]),he(d,"animationId",i),d)),childIndex:tn(t.children).indexOf(r),item:r})}),g},m=function(t,e){var o=t.props,i=t.dataStartIndex,a=t.dataEndIndex,c=t.updateId;if(!ta({props:o}))return null;var u=o.children,l=o.layout,f=o.stackOffset,p=o.data,h=o.reverseStackOrder,y=hv(l),m=y.numericAxisName,g=y.cateAxisName,b=to(u,n),x=a$(p,b,"".concat(m,"Id"),"".concat(g,"Id"),f,h),O=s.reduce(function(t,e){var r="".concat(e.axisType,"Map");return ht(ht({},t),{},he({},r,hh(o,ht(ht({},e),{},{graphicalItems:b,stackGroups:e.axisType===m&&x,dataStartIndex:i,dataEndIndex:a}))))},{}),w=hm(ht(ht({},O),{},{props:o,graphicalItems:b}),null==e?void 0:e.legendBBox);Object.keys(O).forEach(function(t){O[t]=d(o,O[t],w,t.replace("Map",""),r)});var j=hd(O["".concat(g,"Map")]),S=v(o,ht(ht({},O),{},{dataStartIndex:i,dataEndIndex:a,updateId:c,graphicalItems:b,stackGroups:x,offset:w}));return ht(ht({formattedGraphicalItems:S,graphicalItems:b,offset:w,stackGroups:x},j),O)};return e=function(t){(function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&p3(t,e)})(u,t);var e,n,o=(e=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}(),function(){var t,r=p5(u);return t=e?Reflect.construct(r,arguments,p5(this).constructor):r.apply(this,arguments),function(t,e){if(e&&("object"===pQ(e)||"function"==typeof e))return e;if(void 0!==e)throw TypeError("Derived constructors may only return object or undefined");return p6(t)}(this,t)});function u(t){var e,n,a;return function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,u),he(p6(a=o.call(this,t)),"eventEmitterSymbol",Symbol("rechartsEventEmitter")),he(p6(a),"accessibilityManager",new pY),he(p6(a),"handleLegendBBoxUpdate",function(t){if(t){var e=a.state,r=e.dataStartIndex,n=e.dataEndIndex,o=e.updateId;a.setState(ht({legendBBox:t},m({props:a.props,dataStartIndex:r,dataEndIndex:n,updateId:o},ht(ht({},a.state),{},{legendBBox:t}))))}}),he(p6(a),"handleReceiveSyncEvent",function(t,e,r){a.props.syncId===t&&(r!==a.eventEmitterSymbol||"function"==typeof a.props.syncMethod)&&a.applySyncEvent(e)}),he(p6(a),"handleBrushChange",function(t){var e=t.startIndex,r=t.endIndex;if(e!==a.state.dataStartIndex||r!==a.state.dataEndIndex){var n=a.state.updateId;a.setState(function(){return ht({dataStartIndex:e,dataEndIndex:r},m({props:a.props,dataStartIndex:e,dataEndIndex:r,updateId:n},a.state))}),a.triggerSyncEvent({dataStartIndex:e,dataEndIndex:r})}}),he(p6(a),"handleMouseEnter",function(t){var e=a.getMouseInfo(t);if(e){var r=ht(ht({},e),{},{isTooltipActive:!0});a.setState(r),a.triggerSyncEvent(r);var n=a.props.onMouseEnter;L()(n)&&n(r,t)}}),he(p6(a),"triggeredAfterMouseMove",function(t){var e=a.getMouseInfo(t),r=e?ht(ht({},e),{},{isTooltipActive:!0}):{isTooltipActive:!1};a.setState(r),a.triggerSyncEvent(r);var n=a.props.onMouseMove;L()(n)&&n(r,t)}),he(p6(a),"handleItemMouseEnter",function(t){a.setState(function(){return{isTooltipActive:!0,activeItem:t,activePayload:t.tooltipPayload,activeCoordinate:t.tooltipPosition||{x:t.cx,y:t.cy}}})}),he(p6(a),"handleItemMouseLeave",function(){a.setState(function(){return{isTooltipActive:!1}})}),he(p6(a),"handleMouseMove",function(t){t.persist(),a.throttleTriggeredAfterMouseMove(t)}),he(p6(a),"handleMouseLeave",function(t){var e={isTooltipActive:!1};a.setState(e),a.triggerSyncEvent(e);var r=a.props.onMouseLeave;L()(r)&&r(e,t)}),he(p6(a),"handleOuterEvent",function(t){var e,r=th(t),n=x()(a.props,"".concat(r));r&&L()(n)&&n(null!==(e=/.*touch.*/i.test(r)?a.getMouseInfo(t.changedTouches[0]):a.getMouseInfo(t))&&void 0!==e?e:{},t)}),he(p6(a),"handleClick",function(t){var e=a.getMouseInfo(t);if(e){var r=ht(ht({},e),{},{isTooltipActive:!0});a.setState(r),a.triggerSyncEvent(r);var n=a.props.onClick;L()(n)&&n(r,t)}}),he(p6(a),"handleMouseDown",function(t){var e=a.props.onMouseDown;L()(e)&&e(a.getMouseInfo(t),t)}),he(p6(a),"handleMouseUp",function(t){var e=a.props.onMouseUp;L()(e)&&e(a.getMouseInfo(t),t)}),he(p6(a),"handleTouchMove",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&a.throttleTriggeredAfterMouseMove(t.changedTouches[0])}),he(p6(a),"handleTouchStart",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&a.handleMouseDown(t.changedTouches[0])}),he(p6(a),"handleTouchEnd",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&a.handleMouseUp(t.changedTouches[0])}),he(p6(a),"triggerSyncEvent",function(t){void 0!==a.props.syncId&&pG.emit(pV,a.props.syncId,t,a.eventEmitterSymbol)}),he(p6(a),"applySyncEvent",function(t){var e=a.props,r=e.layout,n=e.syncMethod,o=a.state.updateId,i=t.dataStartIndex,c=t.dataEndIndex;if(void 0!==t.dataStartIndex||void 0!==t.dataEndIndex)a.setState(ht({dataStartIndex:i,dataEndIndex:c},m({props:a.props,dataStartIndex:i,dataEndIndex:c,updateId:o},a.state)));else if(void 0!==t.activeTooltipIndex){var u=t.chartX,l=t.chartY,s=t.activeTooltipIndex,f=a.state,p=f.offset,h=f.tooltipTicks;if(!p)return;if("function"==typeof n)s=n(h,t);else if("value"===n){s=-1;for(var d=0;d=0){if(l.dataKey&&!l.allowDuplicatedCategory){var S="function"==typeof l.dataKey?function(t){return"function"==typeof l.dataKey?l.dataKey(t.payload):null}:"payload.".concat(l.dataKey.toString());E=N(d,S,f),P=y&&v&&N(v,S,f)}else E=null==d?void 0:d[s],P=y&&v&&v[s];if(O||x){var A=void 0!==t.props.activeIndex?t.props.activeIndex:s;return[(0,i.cloneElement)(t,ht(ht(ht({},n.props),w),{},{activeIndex:A})),null,null]}if(!R()(E))return[j].concat(p7(a.renderActivePoints({item:n,activePoint:E,basePoint:P,childIndex:s,isRange:y})))}else{var E,P,k,_=(null!==(k=a.getItemByXY(a.state.activeCoordinate))&&void 0!==k?k:{graphicalItem:j}).graphicalItem,T=_.item,M=void 0===T?t:T,C=_.childIndex,D=ht(ht(ht({},n.props),w),{},{activeIndex:C});return[(0,i.cloneElement)(M,D),null,null]}}return y?[j,null,null]:[j,null]}),he(p6(a),"renderCustomized",function(t,e,r){return(0,i.cloneElement)(t,ht(ht({key:"recharts-customized-".concat(r)},a.props),a.state))}),he(p6(a),"renderMap",{CartesianGrid:{handler:a.renderGrid,once:!0},ReferenceArea:{handler:a.renderReferenceElement},ReferenceLine:{handler:a.renderReferenceElement},ReferenceDot:{handler:a.renderReferenceElement},XAxis:{handler:a.renderXAxis},YAxis:{handler:a.renderYAxis},Brush:{handler:a.renderBrush,once:!0},Bar:{handler:a.renderGraphicChild},Line:{handler:a.renderGraphicChild},Area:{handler:a.renderGraphicChild},Radar:{handler:a.renderGraphicChild},RadialBar:{handler:a.renderGraphicChild},Scatter:{handler:a.renderGraphicChild},Pie:{handler:a.renderGraphicChild},Funnel:{handler:a.renderGraphicChild},Tooltip:{handler:a.renderCursor,once:!0},PolarGrid:{handler:a.renderPolarGrid,once:!0},PolarAngleAxis:{handler:a.renderPolarAxis},PolarRadiusAxis:{handler:a.renderPolarAxis},Customized:{handler:a.renderCustomized}}),a.clipPathId="".concat(null!==(e=t.id)&&void 0!==e?e:k("recharts"),"-clip"),a.throttleTriggeredAfterMouseMove=h()(a.triggeredAfterMouseMove,null!==(n=t.throttleDelay)&&void 0!==n?n:1e3/60),a.state={},a}return n=[{key:"componentDidMount",value:function(){var t,e;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:null!==(t=this.props.margin.left)&&void 0!==t?t:0,top:null!==(e=this.props.margin.top)&&void 0!==e?e:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout})}},{key:"getSnapshotBeforeUpdate",value:function(t,e){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==e.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==t.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==t.margin){var r,n;this.accessibilityManager.setDetails({offset:{left:null!==(r=this.props.margin.left)&&void 0!==r?r:0,top:null!==(n=this.props.margin.top)&&void 0!==n?n:0}})}return null}},{key:"componentDidUpdate",value:function(){}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var t=ti(this.props.children,fl);if(t&&"boolean"==typeof t.props.shared){var e=t.props.shared?"axis":"item";return l.indexOf(e)>=0?e:c}return c}},{key:"getMouseInfo",value:function(t){if(!this.container)return null;var e=this.container,r=e.getBoundingClientRect(),n={top:r.top+window.scrollY-document.documentElement.clientTop,left:r.left+window.scrollX-document.documentElement.clientLeft},o={chartX:Math.round(t.pageX-n.left),chartY:Math.round(t.pageY-n.top)},i=r.width/e.offsetWidth||1,a=this.inRange(o.chartX,o.chartY,i);if(!a)return null;var c=this.state,u=c.xAxisMap,l=c.yAxisMap;if("axis"!==this.getTooltipEventType()&&u&&l){var s=T(u).scale,f=T(l).scale,p=s&&s.invert?s.invert(o.chartX):null,h=f&&f.invert?f.invert(o.chartY):null;return ht(ht({},o),{},{xValue:p,yValue:h})}var d=hs(this.state,this.props.data,this.props.layout,a);return d?ht(ht({},o),d):null}},{key:"inRange",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=this.props.layout,o=t/r,i=e/r;if("horizontal"===n||"vertical"===n){var a=this.state.offset;return o>=a.left&&o<=a.left+a.width&&i>=a.top&&i<=a.top+a.height?{x:o,y:i}:null}var c=this.state,u=c.angleAxisMap,l=c.radiusAxisMap;return u&&l?cr({x:o,y:i},T(u)):null}},{key:"parseEventsOfWrapper",value:function(){var t=this.props.children,e=this.getTooltipEventType(),r=ti(t,fl),n={};return r&&"axis"===e&&(n="click"===r.props.trigger?{onClick:this.handleClick}:{onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd}),ht(ht({},X(this.props,this.handleOuterEvent)),n)}},{key:"addListener",value:function(){pG.on(pV,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){pG.removeListener(pV,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(t,e,r){for(var n=this.state.formattedGraphicalItems,o=0,i=n.length;ot.length)&&(e=t.length);for(var r=0,n=Array(e);ra){u=[].concat(hS(n.slice(0,l)),[a-s]);break}var f=u.length%2==0?[0,c]:[c];return[].concat(hS(i.repeat(n,Math.floor(e/o))),hS(u),f).map(function(t){return"".concat(t,"px")}).join(", ")}),hT(hk(t),"id",k("recharts-line-")),hT(hk(t),"pathRef",function(e){t.mainCurve=e}),hT(hk(t),"handleAnimationEnd",function(){t.setState({isAnimationFinished:!0}),t.props.onAnimationEnd&&t.props.onAnimationEnd()}),hT(hk(t),"handleAnimationStart",function(){t.setState({isAnimationFinished:!1}),t.props.onAnimationStart&&t.props.onAnimationStart()}),t}return r=[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var t=this.getTotalLength();this.setState({totalLength:t})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var t=this.getTotalLength();t!==this.state.totalLength&&this.setState({totalLength:t})}}},{key:"getTotalLength",value:function(){var t=this.mainCurve;try{return t&&t.getTotalLength&&t.getTotalLength()||0}catch(t){return 0}}},{key:"renderErrorBar",value:function(t,e){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var r=this.props,n=r.points,o=r.xAxis,i=r.yAxis,c=r.layout,u=to(r.children,ig);if(!u)return null;var l=function(t,e){return{x:t.x,y:t.y,value:t.value,errorVal:aO(t.payload,e)}};return a().createElement(id,{clipPath:t?"url(#clipPath-".concat(e,")"):null},u.map(function(t){return a().cloneElement(t,{key:"bar-".concat(t.props.dataKey),data:n,xAxis:o,yAxis:i,layout:c,dataPointFormatter:l})}))}},{key:"renderDots",value:function(t,e,r){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var n=this.props,o=n.dot,c=n.points,u=n.dataKey,l=tl(this.props),s=tl(o,!0),f=c.map(function(t,e){var r=hj(hj(hj({key:"dot-".concat(e),r:3},l),s),{},{value:t.value,dataKey:u,cx:t.x,cy:t.y,index:e,payload:t.payload});return i.renderDotItem(o,r)}),p={clipPath:t?"url(#clipPath-".concat(e?"":"dots-").concat(r,")"):null};return a().createElement(id,hO({className:"recharts-line-dots",key:"dots"},p),f)}},{key:"renderCurveStatically",value:function(t,e,r,n){var o=this.props,i=o.type,c=o.layout,u=o.connectNulls,l=hj(hj(hj({},tl((o.ref,function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(o,hb)),!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:e?"url(#clipPath-".concat(r,")"):null,points:t},n),{},{type:i,layout:c,connectNulls:u});return a().createElement(f$,hO({},l,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(t,e){var r=this,n=this.props,o=n.points,i=n.strokeDasharray,c=n.isAnimationActive,u=n.animationBegin,l=n.animationDuration,s=n.animationEasing,f=n.animationId,p=n.animateNewValues,h=n.width,d=n.height,y=this.state,v=y.prevPoints,m=y.totalLength;return a().createElement(uk,{begin:u,duration:l,isActive:c,easing:s,from:{t:0},to:{t:1},key:"line-".concat(f),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(n){var a,c=n.t;if(v){var u=v.length/o.length,l=o.map(function(t,e){var r=Math.floor(e*u);if(v[r]){var n=v[r],o=C(n.x,t.x),i=C(n.y,t.y);return hj(hj({},t),{},{x:o(c),y:i(c)})}if(p){var a=C(2*h,t.x),l=C(d/2,t.y);return hj(hj({},t),{},{x:a(c),y:l(c)})}return hj(hj({},t),{},{x:t.x,y:t.y})});return r.renderCurveStatically(l,t,e)}var s=C(0,m)(c);if(i){var f="".concat(i).split(/[,\s]+/gim).map(function(t){return parseFloat(t)});a=r.getStrokeDasharray(s,m,f)}else a=r.generateSimpleStrokeDasharray(m,s);return r.renderCurveStatically(o,t,e,{strokeDasharray:a})})}},{key:"renderCurve",value:function(t,e){var r=this.props,n=r.points,o=r.isAnimationActive,i=this.state,a=i.prevPoints,c=i.totalLength;return o&&n&&n.length&&(!a&&c>0||!oP()(a,n))?this.renderCurveWithAnimation(t,e):this.renderCurveStatically(n,t,e)}},{key:"render",value:function(){var t,e=this.props,r=e.hide,n=e.dot,o=e.points,i=e.className,c=e.xAxis,u=e.yAxis,l=e.top,s=e.left,p=e.width,h=e.height,d=e.isAnimationActive,y=e.id;if(r||!o||!o.length)return null;var v=this.state.isAnimationFinished,m=1===o.length,g=(0,f.Z)("recharts-line",i),b=c&&c.allowDataOverflow,x=u&&u.allowDataOverflow,O=b||x,w=R()(y)?this.id:y,j=null!==(t=tl(n))&&void 0!==t?t:{r:3,strokeWidth:2},S=j.r,A=j.strokeWidth,E=(n&&"object"===J(n)&&"cx"in n&&"cy"in n&&"r"in n?n:{}).clipDot,P=void 0===E||E,k=2*(void 0===S?3:S)+(void 0===A?2:A);return a().createElement(id,{className:g},b||x?a().createElement("defs",null,a().createElement("clipPath",{id:"clipPath-".concat(w)},a().createElement("rect",{x:b?s:s-p/2,y:x?l:l-h/2,width:b?p:2*p,height:x?h:2*h})),!P&&a().createElement("clipPath",{id:"clipPath-dots-".concat(w)},a().createElement("rect",{x:s-k/2,y:l-k/2,width:p+k,height:h+k}))):null,!m&&this.renderCurve(O,w),this.renderErrorBar(O,w),(m||n)&&this.renderDots(O,P,w),(!d||v)&&lT.renderCallByParent(this.props,o))}}],n=[{key:"getDerivedStateFromProps",value:function(t,e){return t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curPoints:t.points,prevPoints:e.curPoints}:t.points!==e.curPoints?{curPoints:t.points}:null}},{key:"repeat",value:function(t,e){for(var r=t.length%2!=0?[].concat(hS(t),[0]):t,n=[],o=0;o=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function hF(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function h$(t){for(var e=1;et+e.revenue,0);return(0,o.jsxs)(l.Zb,{children:[(0,o.jsxs)(l.Ol,{children:[o.jsx(l.ll,{children:"Revenue by Plan"}),(0,o.jsxs)(l.SZ,{children:["Monthly recurring revenue: $",e.toLocaleString()]})]}),o.jsx(l.aY,{children:o.jsx(tg,{width:"100%",height:300,children:(0,o.jsxs)(hY,{data:t,children:[o.jsx(hH,{strokeDasharray:"3 3"}),o.jsx(hN,{dataKey:"plan"}),o.jsx(hD,{}),o.jsx(fl,{formatter:t=>`$${t.toLocaleString()}`}),o.jsx(as,{}),o.jsx(sP,{dataKey:"revenue",fill:"#8884d8",name:"Revenue ($)"}),o.jsx(sP,{dataKey:"count",fill:"#82ca9d",name:"Subscribers"})]})})})]})}var hJ=["points","className","baseLinePoints","connectNulls"];function hQ(){return(hQ=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&void 0!==arguments[0]?arguments[0]:[],e=[[]];return t.forEach(function(t){h2(t)?e[e.length-1].push(t):e[e.length-1].length>0&&e.push([])}),h2(t[0])&&e[e.length-1].push(t[0]),e[e.length-1].length<=0&&(e=e.slice(0,-1)),e},h6=function(t,e){var r=h3(t);e&&(r=[r.reduce(function(t,e){return[].concat(h0(t),h0(e))},[])]);var n=r.map(function(t){return t.reduce(function(t,e,r){return"".concat(t).concat(0===r?"M":"L").concat(e.x,",").concat(e.y)},"")}).join("");return 1===r.length?"".concat(n,"Z"):n},h5=function(t,e,r){var n=h6(t,r);return"".concat("Z"===n.slice(-1)?n.slice(0,-1):n,"L").concat(h6(e.reverse(),r).slice(1))},h7=function(t){var e=t.points,r=t.className,n=t.baseLinePoints,o=t.connectNulls,i=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,hJ);if(!e||!e.length)return null;var c=(0,f.Z)("recharts-polygon",r);if(n&&n.length){var u=i.stroke&&"none"!==i.stroke,l=h5(e,n,o);return a().createElement("g",{className:c},a().createElement("path",hQ({},tl(i,!0),{fill:"Z"===l.slice(-1)?i.fill:"none",stroke:"none",d:l})),u?a().createElement("path",hQ({},tl(i,!0),{fill:"none",d:h6(e,o)})):null,u?a().createElement("path",hQ({},tl(i,!0),{fill:"none",d:h6(n,o)})):null)}var s=h6(e,o);return a().createElement("path",hQ({},tl(i,!0),{fill:"Z"===s.slice(-1)?i.fill:"none",className:c,d:s}))};function h4(t){return(h4="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h8(){return(h8=Object.assign?Object.assign.bind():function(t){for(var e=1;e1e-5?"outer"===e?"start":"end":r<-.00001?"outer"===e?"end":"start":"middle"}},{key:"renderAxisLine",value:function(){var t=this.props,e=t.cx,r=t.cy,n=t.radius,o=t.axisLine,i=t.axisLineType,c=dt(dt({},tl(this.props)),{},{fill:"none"},tl(o));if("circle"===i)return a().createElement(fZ,h8({className:"recharts-polar-angle-axis-line"},c,{cx:e,cy:r,r:n}));var u=this.props.ticks.map(function(t){return a4(e,r,n,t.coordinate)});return a().createElement(h7,h8({className:"recharts-polar-angle-axis-line"},c,{points:u}))}},{key:"renderTicks",value:function(){var t=this,e=this.props,r=e.ticks,n=e.tick,o=e.tickLine,c=e.tickFormatter,u=e.stroke,l=tl(this.props),s=tl(n),f=dt(dt({},l),{},{fill:"none"},tl(o)),p=r.map(function(e,r){var p=t.getTickLineCoord(e),h=dt(dt(dt({textAnchor:t.getTickTextAnchor(e)},l),{},{stroke:"none",fill:u},s),{},{index:r,payload:e,x:p.x2,y:p.y2});return a().createElement(id,h8({className:"recharts-polar-angle-axis-tick",key:"tick-".concat(e.coordinate)},H(t.props,e,r)),o&&a().createElement("line",h8({className:"recharts-polar-angle-axis-tick-line"},f,p)),n&&i.renderTickItem(n,h,c?c(e.value,r):e.value))});return a().createElement(id,{className:"recharts-polar-angle-axis-ticks"},p)}},{key:"render",value:function(){var t=this.props,e=t.ticks,r=t.radius,n=t.axisLine;return!(r<=0)&&e&&e.length?a().createElement(id,{className:"recharts-polar-angle-axis"},n&&this.renderAxisLine(),this.renderTicks()):null}}],n=[{key:"renderTickItem",value:function(t,e,r){return a().isValidElement(t)?a().cloneElement(t,e):L()(t)?t(e):a().createElement(lu,h8({},e,{className:"recharts-polar-angle-axis-tick-value"}),r)}}],r&&de(i.prototype,r),n&&de(i,n),Object.defineProperty(i,"prototype",{writable:!1}),i}(i.PureComponent);di(du,"displayName","PolarAngleAxis"),di(du,"axisType","angleAxis"),di(du,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var dl=r(4344),ds=r.n(dl),df=r(72175),dp=r.n(df),dh=["cx","cy","angle","ticks","axisLine"],dd=["ticks","tick","angle","tickFormatter","stroke"];function dy(t){return(dy="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function dv(){return(dv=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function dx(t,e){for(var r=0;r0?x()(t,"paddingAngle",0):0;if(r){var c=C(r.endAngle-r.startAngle,t.endAngle-t.startAngle),u=d_(d_({},t),{},{startAngle:i+a,endAngle:i+c(n)+a});o.push(u),i=u.endAngle}else{var l=C(0,t.endAngle-t.startAngle)(n),f=d_(d_({},t),{},{startAngle:i+a,endAngle:i+l+a});o.push(f),i=f.endAngle}}),a().createElement(id,null,t.renderSectorsStatically(o))})}},{key:"attachKeyboardHandlers",value:function(t){var e=this;t.onkeydown=function(t){if(!t.altKey)switch(t.key){case"ArrowLeft":var r=++e.state.sectorToFocus%e.sectorRefs.length;e.sectorRefs[r].focus(),e.setState({sectorToFocus:r});break;case"ArrowRight":var n=--e.state.sectorToFocus<0?e.sectorRefs.length-1:e.state.sectorToFocus%e.sectorRefs.length;e.sectorRefs[n].focus(),e.setState({sectorToFocus:n});break;case"Escape":e.sectorRefs[e.state.sectorToFocus].blur(),e.setState({sectorToFocus:0})}}}},{key:"renderSectors",value:function(){var t=this.props,e=t.sectors,r=t.isAnimationActive,n=this.state.prevSectors;return r&&e&&e.length&&(!n||!oP()(n,e))?this.renderSectorsWithAnimation():this.renderSectorsStatically(e)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var t=this,e=this.props,r=e.hide,n=e.sectors,o=e.className,i=e.label,c=e.cx,u=e.cy,l=e.innerRadius,s=e.outerRadius,p=e.isAnimationActive,h=this.state.isAnimationFinished;if(r||!n||!n.length||!A(c)||!A(u)||!A(l)||!A(s))return null;var d=(0,f.Z)("recharts-pie",o);return a().createElement(id,{tabIndex:this.props.rootTabIndex,className:d,ref:function(e){t.pieRef=e}},this.renderSectors(),i&&this.renderLabels(n),lb.renderCallByParent(this.props,null,!1),(!p||h)&&lT.renderCallByParent(this.props,n,!1))}}],n=[{key:"getDerivedStateFromProps",value:function(t,e){return e.prevIsAnimationActive!==t.isAnimationActive?{prevIsAnimationActive:t.isAnimationActive,prevAnimationId:t.animationId,curSectors:t.sectors,prevSectors:[],isAnimationFinished:!0}:t.isAnimationActive&&t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curSectors:t.sectors,prevSectors:e.curSectors,isAnimationFinished:!0}:t.sectors!==e.curSectors?{curSectors:t.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(t,e){return t>e?"start":t=360?x:x-1)*s,w=i.reduce(function(t,e){var r=aO(e,b,0);return t+(A(r)?r:0)},0);return w>0&&(e=i.map(function(t,e){var n,o=aO(t,b,0),i=aO(t,p,e),a=(A(o)?o:0)/w,l=(n=e?r.endAngle+j(m)*s*(0!==o?1:0):u)+j(m)*((0!==o?y:0)+a*O),f=(n+l)/2,h=(v.innerRadius+v.outerRadius)/2,g=[{name:i,value:o,payload:t,dataKey:b,type:d}],x=a4(v.cx,v.cy,h,f);return r=d_(d_(d_({percent:a,cornerRadius:c,name:i,tooltipPayload:g,midAngle:f,middleRadius:h,tooltipPosition:x},t),v),{},{value:aO(t,b),startAngle:n,endAngle:l,payload:t,paddingAngle:j(m)*s})})),d_(d_({},v),{},{sectors:e,data:i})});var dB=hg({chartName:"PieChart",GraphicalChild:dR,validateTooltipEventTypes:["item"],defaultTooltipEventType:"item",legendContent:"children",axisComponents:[{axisType:"angleAxis",AxisComp:du},{axisType:"radiusAxis",AxisComp:dA}],formatAxisMap:function(t,e,r,n,o){var i=t.width,a=t.height,c=t.startAngle,u=t.endAngle,l=_(t.cx,i,i/2),s=_(t.cy,a,a/2),f=a8(i,a,r),p=_(t.innerRadius,f,0),h=_(t.outerRadius,f,.8*f);return Object.keys(e).reduce(function(t,r){var i,a=e[r],f=a.domain,d=a.reversed;if(R()(a.range))"angleAxis"===n?i=[c,u]:"radiusAxis"===n&&(i=[p,h]),d&&(i=[i[1],i[0]]);else{var y,v=function(t){if(Array.isArray(t))return t}(y=i=a.range)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,l=!1;try{for(i=(r=r.call(t)).next;!(u=(n=i.call(r)).done)&&(c.push(n.value),2!==c.length);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(y,2)||function(t,e){if(t){if("string"==typeof t)return a5(t,2);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a5(t,2)}}(y,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();c=v[0],u=v[1]}var m=aR(a,o),g=m.realScaleType,b=m.scale;b.domain(f).range(i),aB(b);var x=aW(b,a3(a3({},a),{},{realScaleType:g})),O=a3(a3(a3({},a),x),{},{range:i,radius:h,realScaleType:g,scale:b,cx:l,cy:s,innerRadius:p,outerRadius:h,startAngle:c,endAngle:u});return a3(a3({},t),{},a6({},r,O))},{})},defaultProps:{layout:"centric",startAngle:0,endAngle:360,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"}});let dL=["#0088FE","#00C49F","#FFBB28"];function dU({metrics:t}){let e=[{name:"OpenAI",value:.6*(t?.total_cost_cents||125e3),tokens:t?.openai_tokens_used||15e6},{name:"Anthropic",value:.32*(t?.total_cost_cents||125e3),tokens:8e6},{name:"Veo",value:.08*(t?.total_cost_cents||125e3),videos:t?.veo_videos_generated||1250}];return(0,o.jsxs)(l.Zb,{children:[(0,o.jsxs)(l.Ol,{children:[o.jsx(l.ll,{children:"AI API Usage"}),(0,o.jsxs)(l.SZ,{children:["Total cost: $",((t?.total_cost_cents||125e3)/100).toFixed(2)]})]}),(0,o.jsxs)(l.aY,{children:[o.jsx(tg,{width:"100%",height:300,children:(0,o.jsxs)(dB,{children:[o.jsx(dR,{data:e,cx:"50%",cy:"50%",labelLine:!1,label:({name:t,percent:e})=>`${t}: ${(100*e).toFixed(0)}%`,outerRadius:80,fill:"#8884d8",dataKey:"value",children:e.map((t,e)=>o.jsx(uW,{fill:dL[e%dL.length]},`cell-${e}`))}),o.jsx(fl,{formatter:t=>`$${(t/100).toFixed(2)}`}),o.jsx(as,{})]})}),(0,o.jsxs)("div",{className:"mt-4 space-y-2",children:[(0,o.jsxs)("div",{className:"flex justify-between text-sm",children:[o.jsx("span",{className:"text-gray-600",children:"OpenAI Tokens:"}),o.jsx("span",{className:"font-semibold",children:(t?.openai_tokens_used||15e6).toLocaleString()})]}),(0,o.jsxs)("div",{className:"flex justify-between text-sm",children:[o.jsx("span",{className:"text-gray-600",children:"Veo Videos:"}),o.jsx("span",{className:"font-semibold",children:(t?.veo_videos_generated||1250).toLocaleString()})]})]})]})]})}var dz=r(76557);let dF=(0,dz.Z)("CheckCircle",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),d$=(0,dz.Z)("AlertCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),dW=(0,dz.Z)("XCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);function dq({health:t}){let[e,r]=(0,i.useState)(null),[n,a]=(0,i.useState)(!0),c=t=>{switch(t){case"healthy":return o.jsx(dF,{className:"h-5 w-5 text-green-600"});case"degraded":return o.jsx(d$,{className:"h-5 w-5 text-yellow-600"});case"down":return o.jsx(dW,{className:"h-5 w-5 text-red-600"});default:return o.jsx(d$,{className:"h-5 w-5 text-gray-400"})}},u=t=>{switch(t){case"healthy":return"text-green-600";case"degraded":return"text-yellow-600";case"down":return"text-red-600";default:return"text-gray-600"}},s=e?.components||{database:{status:t?.database||"healthy",response_time_ms:25},redis:{status:t?.redis||"healthy",response_time_ms:10}},f=e?.overall_status||t?.overall_status||"healthy";return(0,o.jsxs)(l.Zb,{children:[(0,o.jsxs)(l.Ol,{children:[(0,o.jsxs)(l.ll,{className:"flex items-center gap-2",children:["System Health",c(f)]}),o.jsx(l.SZ,{children:"Real-time component health monitoring"})]}),o.jsx(l.aY,{children:(0,o.jsxs)("div",{className:"space-y-4",children:[(0,o.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[o.jsx("span",{className:"font-semibold",children:"Overall Status"}),o.jsx("span",{className:`font-semibold uppercase ${u(f)}`,children:f})]}),Object.entries(s).map(([t,e])=>(0,o.jsxs)("div",{className:"flex items-center justify-between p-3 border rounded-lg",children:[(0,o.jsxs)("div",{className:"flex items-center gap-3",children:[c(e.status),(0,o.jsxs)("div",{children:[o.jsx("p",{className:"font-medium capitalize",children:t}),e.response_time_ms&&(0,o.jsxs)("p",{className:"text-sm text-gray-500",children:[e.response_time_ms,"ms response time"]})]})]}),o.jsx("span",{className:`text-sm font-semibold uppercase ${u(e.status)}`,children:e.status})]},t)),(0,o.jsxs)("div",{className:"text-xs text-gray-500 text-center pt-2",children:["Last checked: ",e?.checked_at?new Date(e.checked_at).toLocaleTimeString():"Just now"]})]})})]})}function dG({user:t}){let[e,r]=(0,i.useState)(null),[n,a]=(0,i.useState)(!0),[c,u]=(0,i.useState)(null),f=async()=>{try{let t=await fetch("http://127.0.0.1:8000/api/v1/admin/metrics/export",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({metric_types:["users","revenue","api_usage"],start_date:new Date(Date.now()-2592e6).toISOString().split("T")[0],end_date:new Date().toISOString().split("T")[0],format:"csv"})});if(!t.ok)throw Error("Export failed");let e=await t.blob(),r=window.URL.createObjectURL(e),n=document.createElement("a");n.href=r,n.download=`metrics_${new Date().toISOString().split("T")[0]}.csv`,document.body.appendChild(n),n.click(),window.URL.revokeObjectURL(r),document.body.removeChild(n)}catch(t){console.error("Export failed:",t)}};return n?o.jsx("div",{className:"flex items-center justify-center min-h-screen",children:o.jsx("p",{className:"text-lg",children:"Loading dashboard..."})}):c?o.jsx("div",{className:"flex items-center justify-center min-h-screen",children:(0,o.jsxs)(l.Zb,{className:"w-96",children:[o.jsx(l.Ol,{children:o.jsx(l.ll,{className:"text-red-600",children:"Error"})}),o.jsx(l.aY,{children:o.jsx("p",{children:c})})]})}):(0,o.jsxs)("div",{className:"container mx-auto py-8 px-4",children:[(0,o.jsxs)("div",{className:"mb-8 flex items-center justify-between",children:[(0,o.jsxs)("div",{children:[o.jsx("h1",{className:"text-3xl font-bold text-gray-900",children:"Admin Dashboard"}),o.jsx("p",{className:"text-gray-600 mt-2",children:"System-wide metrics and monitoring"})]}),o.jsx(s.z,{onClick:f,variant:"outline",children:"Export Metrics"})]}),(0,o.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-6 mb-8",children:[(0,o.jsxs)(l.Zb,{children:[(0,o.jsxs)(l.Ol,{className:"pb-3",children:[o.jsx(l.SZ,{children:"Total Users"}),o.jsx(l.ll,{className:"text-3xl",children:e?.users?.total||0})]}),o.jsx(l.aY,{children:(0,o.jsxs)("p",{className:"text-sm text-green-600",children:["+",e?.users?.new_today||0," today"]})})]}),(0,o.jsxs)(l.Zb,{children:[(0,o.jsxs)(l.Ol,{className:"pb-3",children:[o.jsx(l.SZ,{children:"Active Subscriptions"}),o.jsx(l.ll,{className:"text-3xl",children:e?.users?.active_subscriptions||0})]}),o.jsx(l.aY,{children:(0,o.jsxs)("p",{className:"text-sm text-gray-600",children:[e?.users?.growth_rate_30d||0,"% growth (30d)"]})})]}),(0,o.jsxs)(l.Zb,{children:[(0,o.jsxs)(l.Ol,{className:"pb-3",children:[o.jsx(l.SZ,{children:"Monthly Revenue (MRR)"}),(0,o.jsxs)(l.ll,{className:"text-3xl",children:["$",((e?.revenue?.mrr_cents||0)/100).toFixed(0)]})]}),o.jsx(l.aY,{children:(0,o.jsxs)("p",{className:"text-sm text-gray-600",children:["Total: $",((e?.revenue?.total_revenue_cents||0)/100).toFixed(0)]})})]}),(0,o.jsxs)(l.Zb,{children:[(0,o.jsxs)(l.Ol,{className:"pb-3",children:[o.jsx(l.SZ,{children:"AI API Costs"}),(0,o.jsxs)(l.ll,{className:"text-3xl",children:["$",((e?.api_usage?.total_cost_cents||0)/100).toFixed(0)]})]}),o.jsx(l.aY,{children:(0,o.jsxs)("p",{className:"text-sm text-gray-600",children:[e?.api_usage?.veo_videos_generated||0," videos generated"]})})]})]}),(0,o.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8",children:[o.jsx(hZ,{}),o.jsx(hK,{})]}),(0,o.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[o.jsx(dU,{metrics:e?.api_usage}),o.jsx(dq,{health:e?.system_health})]})]})}function dV(){(0,c.useRouter)();let{user:t,isSignedIn:e,isLoading:r,isAdmin:n}=(0,u.a)();return r?o.jsx("div",{className:"min-h-screen flex items-center justify-center",children:o.jsx("p",{children:"Loading..."})}):e&&n?o.jsx("div",{className:"min-h-screen bg-gray-50",children:o.jsx(dG,{user:t})}):null}},86325:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>j});var n=r(10326),o=r(46465),i=r.n(o);r(23824);var a=r(17577),c=r(10592),u=r(79360),l=r(94019),s=r(51223);let f=c.zt,p=a.forwardRef(({className:t,...e},r)=>n.jsx(c.l_,{ref:r,className:(0,s.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",t),...e}));p.displayName=c.l_.displayName;let h=(0,u.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),d=a.forwardRef(({className:t,variant:e,...r},o)=>n.jsx(c.fC,{ref:o,className:(0,s.cn)(h({variant:e}),t),...r}));d.displayName=c.fC.displayName,a.forwardRef(({className:t,...e},r)=>n.jsx(c.aU,{ref:r,className:(0,s.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...e})).displayName=c.aU.displayName;let y=a.forwardRef(({className:t,...e},r)=>n.jsx(c.x8,{ref:r,className:(0,s.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:n.jsx(l.Z,{className:"h-4 w-4"})}));y.displayName=c.x8.displayName;let v=a.forwardRef(({className:t,...e},r)=>n.jsx(c.Dx,{ref:r,className:(0,s.cn)("text-sm font-semibold",t),...e}));v.displayName=c.Dx.displayName;let m=a.forwardRef(({className:t,...e},r)=>n.jsx(c.dk,{ref:r,className:(0,s.cn)("text-sm opacity-90",t),...e}));m.displayName=c.dk.displayName;var g=r(56627);function b(){let{toasts:t}=(0,g.pm)();return(0,n.jsxs)(f,{children:[t.map(function({id:t,title:e,description:r,action:o,...i}){return(0,n.jsxs)(d,{...i,children:[(0,n.jsxs)("div",{className:"grid gap-1",children:[e&&n.jsx(v,{children:e}),r&&n.jsx(m,{children:r})]}),o,n.jsx(y,{})]},t)}),n.jsx(p,{})]})}var x=r(92876),O=r(74951),w=r(44976);function j({children:t}){let[e]=(0,a.useState)(()=>new O.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return n.jsx("html",{lang:"en",children:n.jsx("body",{className:i().className,children:n.jsx(w.aH,{client:e,children:(0,n.jsxs)(x.Ho,{children:[t,n.jsx(b,{})]})})})})}},92876:(t,e,r)=>{"use strict";r.d(e,{Ho:()=>c,aC:()=>u});var n=r(10326),o=r(17577),i=r(42357);let a=(0,o.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function c({children:t}){let[e,r]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[l,s]=(0,o.useState)(!0),f=async()=>{try{let t=await (0,i.Gg)();t?(r(t.user),u(t.session)):(r(null),u(null))}catch(t){r(null),u(null)}finally{s(!1)}};return n.jsx(a.Provider,{value:{user:e,session:c,loading:l,refetch:f},children:t})}function u(){return(0,o.useContext)(a)}},91664:(t,e,r)=>{"use strict";r.d(e,{z:()=>l});var n=r(10326),o=r(17577),i=r(34214),a=r(79360),c=r(51223);let u=(0,a.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),l=o.forwardRef(({className:t,variant:e,size:r,asChild:o=!1,...a},l)=>{let s=o?i.g7:"button";return n.jsx(s,{className:(0,c.cn)(u({variant:e,size:r,className:t})),ref:l,...a})});l.displayName="Button"},29752:(t,e,r)=>{"use strict";r.d(e,{Ol:()=>c,SZ:()=>l,Zb:()=>a,aY:()=>s,eW:()=>f,ll:()=>u});var n=r(10326),o=r(17577),i=r(51223);let a=o.forwardRef(({className:t,...e},r)=>n.jsx("div",{ref:r,className:(0,i.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...e}));a.displayName="Card";let c=o.forwardRef(({className:t,...e},r)=>n.jsx("div",{ref:r,className:(0,i.cn)("flex flex-col space-y-1.5 p-6",t),...e}));c.displayName="CardHeader";let u=o.forwardRef(({className:t,...e},r)=>n.jsx("h3",{ref:r,className:(0,i.cn)("text-2xl font-semibold leading-none tracking-tight",t),...e}));u.displayName="CardTitle";let l=o.forwardRef(({className:t,...e},r)=>n.jsx("p",{ref:r,className:(0,i.cn)("text-sm text-muted-foreground",t),...e}));l.displayName="CardDescription";let s=o.forwardRef(({className:t,...e},r)=>n.jsx("div",{ref:r,className:(0,i.cn)("p-6 pt-0",t),...e}));s.displayName="CardContent";let f=o.forwardRef(({className:t,...e},r)=>n.jsx("div",{ref:r,className:(0,i.cn)("flex items-center p-6 pt-0",t),...e}));f.displayName="CardFooter"},56627:(t,e,r)=>{"use strict";r.d(e,{pm:()=>p});var n=r(17577);let o=0,i=new Map,a=t=>{if(i.has(t))return;let e=setTimeout(()=>{i.delete(t),s({type:"REMOVE_TOAST",toastId:t})},1e6);i.set(t,e)},c=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,1)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(t=>t.id===e.toast.id?{...t,...e.toast}:t)};case"DISMISS_TOAST":{let{toastId:r}=e;return r?a(r):t.toasts.forEach(t=>{a(t.id)}),{...t,toasts:t.toasts.map(t=>t.id===r||void 0===r?{...t,open:!1}:t)}}case"REMOVE_TOAST":if(void 0===e.toastId)return{...t,toasts:[]};return{...t,toasts:t.toasts.filter(t=>t.id!==e.toastId)}}},u=[],l={toasts:[]};function s(t){l=c(l,t),u.forEach(t=>{t(l)})}function f({...t}){let e=(o=(o+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>s({type:"DISMISS_TOAST",toastId:e});return s({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:t=>{t||r()}}}),{id:e,dismiss:r,update:t=>s({type:"UPDATE_TOAST",toast:{...t,id:e}})}}function p(){let[t,e]=n.useState(l);return n.useEffect(()=>(u.push(e),()=>{let t=u.indexOf(e);t>-1&&u.splice(t,1)}),[t]),{...t,toast:f,dismiss:t=>s({type:"DISMISS_TOAST",toastId:t})}}},32082:(t,e,r)=>{"use strict";r.d(e,{a:()=>o});var n=r(92876);function o(){let{user:t,session:e,loading:r,refetch:o}=(0,n.aC)();return{user:t||null,session:e||null,isLoading:r,isAuthenticated:!!t,isSignedIn:!!t,isAdmin:t?.isAdmin||!1,refreshSession:o}}},42357:(t,e,r)=>{"use strict";r.d(e,{Gg:()=>a,w7:()=>i});let n="http://127.0.0.1:8000",o={async signUp(t,e,r){let o=await fetch(`${n}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:t,password:e,name:r})});if(!o.ok)throw Error((await o.json()).detail||"Registration failed");return o.json()},async signIn(t,e){let r=await fetch(`${n}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:t,password:e})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${n}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let t=await fetch(`${n}/api/v1/auth/session`,{credentials:"include"});if(!t.ok)return null;return t.json()}catch{return null}}};o.signUp,o.signIn;let i=o.signOut,a=o.getSession},51223:(t,e,r)=>{"use strict";r.d(e,{cn:()=>i});var n=r(41135),o=r(31009);function i(...t){return(0,o.m6)((0,n.W)(t))}},44753:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>n});let n=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\admin\page.tsx#default`)},32029:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>n});let n=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},23824:()=>{},39618:t=>{t.exports=function(t){return t&&t.__esModule?t:{default:t}},t.exports.__esModule=!0,t.exports.default=t.exports}};var e=require("../../webpack-runtime.js");e.C(t);var r=t=>e(e.s=t),n=e.X(0,[276,448],()=>r(33704));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/admin/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..32af8f97da38d4d8f4b99f17543dc4939737c050 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../webpack-runtime.js","../../chunks/276.js","../../chunks/448.js","page_client-reference-manifest.js","../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/admin/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..75b137e362de29db58178de54a33b66124bc7f9c --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/admin/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","680","static/chunks/680-fccc5c9a67328074.js","3","static/chunks/app/admin/page-d1ec05d5b8710965.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/users.html b/phase-1-core-infra/frontend/.next/server/app/admin/users.html new file mode 100644 index 0000000000000000000000000000000000000000..ae2351a6dfcbef34a913d167c05419719cb6bca8 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/users.html @@ -0,0 +1 @@ +

          User Management

          Manage user accounts, subscriptions, and access

          User Management

          Showing 0 of 0 users
          Loading...
          Select a user to view details
            \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/users.meta b/phase-1-core-infra/frontend/.next/server/app/admin/users.meta new file mode 100644 index 0000000000000000000000000000000000000000..97b4100dfe6e7ba48ff96f9fe4e0b09cda233a98 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/users.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/admin/layout,_N_T_/admin/users/layout,_N_T_/admin/users/page,_N_T_/admin/users" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/users.rsc b/phase-1-core-infra/frontend/.next/server/app/admin/users.rsc new file mode 100644 index 0000000000000000000000000000000000000000..c0930ed91cf75b508727d16dbeeb5becab943222 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/users.rsc @@ -0,0 +1,9 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[61840,["137","static/chunks/137-ba5a6ccb277ff542.js","674","static/chunks/app/admin/users/page-034c80a4b8d35233.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["admin",{"children":["users",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["admin",{"children":["users",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","admin","children","users","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","admin","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/users/page.js b/phase-1-core-infra/frontend/.next/server/app/admin/users/page.js new file mode 100644 index 0000000000000000000000000000000000000000..86bc0d23ee41b727220fb7eb59a15e16b1a13b1a --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/users/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=674,e.ids=[674],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},83896:(e,s,t)=>{"use strict";t.r(s),t.d(s,{GlobalError:()=>n.a,__next_app__:()=>h,originalPathname:()=>x,pages:()=>o,routeModule:()=>m,tree:()=>d}),t(57459),t(32029),t(35866);var a=t(23191),r=t(88716),i=t(37922),n=t.n(i),l=t(95231),c={};for(let e in l)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(c[e]=()=>l[e]);t.d(s,c);let d=["",{children:["admin",{children:["users",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(t.bind(t,57459)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx"]}]},{}]},{}]},{layout:[()=>Promise.resolve().then(t.bind(t,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(t.t.bind(t,35866,23)),"next/dist/client/components/not-found-error"]}],o=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx"],x="/admin/users/page",h={require:t,loadChunk:()=>Promise.resolve()},m=new a.AppPageRouteModule({definition:{kind:r.x.APP_PAGE,page:"/admin/users/page",pathname:"/admin/users",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},18838:(e,s,t)=>{Promise.resolve().then(t.bind(t,82851))},82851:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>d});var a=t(10326),r=t(17577),i=t(29752),n=t(91664),l=t(41190);function c({onUserSelect:e}){let[s,t]=(0,r.useState)([]),[c,d]=(0,r.useState)(!0),[o,x]=(0,r.useState)(""),[h,m]=(0,r.useState)("all"),[u,p]=(0,r.useState)(0),[g,j]=(0,r.useState)(0),v=async()=>{d(!0);try{let e=new URLSearchParams({limit:"50",offset:(50*g).toString()});o&&e.append("search",o),"all"!==h&&e.append("status",h);let s=await fetch(`/api/admin/users?${e}`,{headers:{Authorization:`Bearer ${localStorage.getItem("token")}`}});if(!s.ok)throw Error("Failed to fetch users");let a=await s.json();t(a.users),p(a.total_count)}catch(e){console.error("Error fetching users:",e)}finally{d(!1)}},f=async e=>{let s=prompt("Enter reason for suspension:");if(s)try{if(!(await fetch(`/api/admin/users/${e}/suspend?reason=${encodeURIComponent(s)}`,{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("token")}`}})).ok)throw Error("Failed to suspend user");alert("User suspended successfully"),v()}catch(e){console.error("Error suspending user:",e),alert("Failed to suspend user")}},y=async e=>{try{if(!(await fetch(`/api/admin/users/${e}/reactivate`,{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("token")}`}})).ok)throw Error("Failed to reactivate user");alert("User reactivated successfully"),v()}catch(e){console.error("Error reactivating user:",e),alert("Failed to reactivate user")}},N=async e=>{let s=prompt("Enter reason for deletion (WARNING: This is permanent):");if(s&&confirm("Are you sure? This action cannot be undone."))try{if(!(await fetch(`/api/admin/users/${e}?reason=${encodeURIComponent(s)}`,{method:"DELETE",headers:{Authorization:`Bearer ${localStorage.getItem("token")}`}})).ok)throw Error("Failed to delete user");alert("User deleted successfully"),v()}catch(e){console.error("Error deleting user:",e),alert("Failed to delete user")}};return(0,a.jsxs)(i.Zb,{className:"p-6",children:[(0,a.jsxs)("div",{className:"mb-6",children:[a.jsx("h2",{className:"text-2xl font-bold mb-4",children:"User Management"}),(0,a.jsxs)("div",{className:"flex gap-4 mb-4",children:[a.jsx(l.I,{type:"text",placeholder:"Search by email or name...",value:o,onChange:e=>x(e.target.value),className:"flex-1"}),(0,a.jsxs)("select",{value:h,onChange:e=>m(e.target.value),className:"px-4 py-2 border rounded-md",children:[a.jsx("option",{value:"all",children:"All Users"}),a.jsx("option",{value:"active",children:"Active"}),a.jsx("option",{value:"suspended",children:"Suspended"})]})]}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:["Showing ",s.length," of ",u," users"]})]}),c?a.jsx("div",{className:"text-center py-8",children:"Loading..."}):(0,a.jsxs)(a.Fragment,{children:[a.jsx("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full",children:[a.jsx("thead",{children:(0,a.jsxs)("tr",{className:"border-b",children:[a.jsx("th",{className:"text-left py-3 px-4",children:"Email"}),a.jsx("th",{className:"text-left py-3 px-4",children:"Name"}),a.jsx("th",{className:"text-left py-3 px-4",children:"Status"}),a.jsx("th",{className:"text-left py-3 px-4",children:"Verified"}),a.jsx("th",{className:"text-left py-3 px-4",children:"Created"}),a.jsx("th",{className:"text-right py-3 px-4",children:"Actions"})]})}),a.jsx("tbody",{children:s.map(s=>(0,a.jsxs)("tr",{className:"border-b hover:bg-gray-50",children:[a.jsx("td",{className:"py-3 px-4",children:a.jsx("button",{onClick:()=>e?.(s.id),className:"text-blue-600 hover:underline",children:s.email})}),a.jsx("td",{className:"py-3 px-4",children:s.name||"-"}),a.jsx("td",{className:"py-3 px-4",children:a.jsx("span",{className:`px-2 py-1 rounded text-xs ${s.is_active?"bg-green-100 text-green-800":"bg-red-100 text-red-800"}`,children:s.is_active?"Active":"Suspended"})}),a.jsx("td",{className:"py-3 px-4",children:s.email_verified?a.jsx("span",{className:"text-green-600",children:"✓"}):a.jsx("span",{className:"text-gray-400",children:"✗"})}),a.jsx("td",{className:"py-3 px-4",children:new Date(s.created_at).toLocaleDateString()}),a.jsx("td",{className:"py-3 px-4 text-right",children:(0,a.jsxs)("div",{className:"flex gap-2 justify-end",children:[s.is_active?a.jsx(n.z,{size:"sm",variant:"outline",onClick:()=>f(s.id),children:"Suspend"}):a.jsx(n.z,{size:"sm",variant:"outline",onClick:()=>y(s.id),children:"Reactivate"}),a.jsx(n.z,{size:"sm",variant:"outline",onClick:()=>N(s.id),className:"text-red-600 hover:text-red-700",children:"Delete"})]})})]},s.id))})]})}),(0,a.jsxs)("div",{className:"flex justify-between items-center mt-4",children:[a.jsx(n.z,{onClick:()=>j(Math.max(0,g-1)),disabled:0===g,children:"Previous"}),(0,a.jsxs)("span",{className:"text-sm text-gray-600",children:["Page ",g+1," of ",Math.ceil(u/50)]}),a.jsx(n.z,{onClick:()=>j(g+1),disabled:(g+1)*50>=u,children:"Next"})]})]})]})}function d(){let[e,s]=(0,r.useState)(null),[t,n]=(0,r.useState)(null),l=async e=>{s(e);try{let s=await fetch(`/api/admin/users/${e}`,{headers:{Authorization:`Bearer ${localStorage.getItem("token")}`}});if(!s.ok)throw Error("Failed to fetch user details");let t=await s.json();n(t)}catch(e){console.error("Error fetching user details:",e)}};return(0,a.jsxs)("div",{className:"container mx-auto py-8 px-4",children:[(0,a.jsxs)("div",{className:"mb-6",children:[a.jsx("h1",{className:"text-3xl font-bold",children:"User Management"}),a.jsx("p",{className:"text-gray-600 mt-2",children:"Manage user accounts, subscriptions, and access"})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[a.jsx("div",{className:"lg:col-span-2",children:a.jsx(c,{onUserSelect:l})}),a.jsx("div",{children:e&&t?(0,a.jsxs)(i.Zb,{className:"p-6 sticky top-4",children:[a.jsx("h3",{className:"text-xl font-semibold mb-4",children:"User Details"}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Email"}),a.jsx("div",{className:"font-semibold",children:t.email})]}),(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Name"}),a.jsx("div",{className:"font-semibold",children:t.name||"-"})]}),(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Status"}),a.jsx("div",{children:a.jsx("span",{className:`px-2 py-1 rounded text-xs ${t.is_active?"bg-green-100 text-green-800":"bg-red-100 text-red-800"}`,children:t.is_active?"Active":"Suspended"})})]}),(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Email Verified"}),a.jsx("div",{children:t.email_verified?"Yes":"No"})]}),(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Created"}),a.jsx("div",{children:new Date(t.created_at).toLocaleString()})]}),t.subscription&&(0,a.jsxs)(a.Fragment,{children:[a.jsx("hr",{className:"my-4"}),(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Subscription Tier"}),a.jsx("div",{className:"font-semibold capitalize",children:t.subscription.tier||"None"})]}),(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Subscription Status"}),a.jsx("div",{className:"capitalize",children:t.subscription.status||"-"})]}),t.subscription.current_period_end&&(0,a.jsxs)("div",{children:[a.jsx("div",{className:"text-sm text-gray-600",children:"Period End"}),a.jsx("div",{children:new Date(t.subscription.current_period_end).toLocaleDateString()})]})]})]})]}):a.jsx(i.Zb,{className:"p-6",children:a.jsx("div",{className:"text-center text-gray-500",children:"Select a user to view details"})})})]})]})}},57459:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>a});let a=(0,t(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\admin\users\page.tsx#default`)}};var s=require("../../../webpack-runtime.js");s.C(e);var t=e=>s(s.s=e),a=s.X(0,[276,448,22],()=>t(83896));module.exports=a})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/users/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/admin/users/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..44be5c4977bca43893b2aee561c37c6ed6db6344 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/users/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/22.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/admin/users/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/admin/users/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..216955751dceb698df81fa12aa9713f7981bcb4a --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/admin/users/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/admin/users/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","674","static/chunks/app/admin/users/page-034c80a4b8d35233.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","680","static/chunks/680-fccc5c9a67328074.js","3","static/chunks/app/admin/page-d1ec05d5b8710965.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/api/auth/[...nextauth]/route.js b/phase-1-core-infra/frontend/.next/server/app/api/auth/[...nextauth]/route.js new file mode 100644 index 0000000000000000000000000000000000000000..ebb0cbc1db40730b1e808bb5ff5b6da84efd0ce3 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/api/auth/[...nextauth]/route.js @@ -0,0 +1,34 @@ +(()=>{var e={};e.id=912,e.ids=[912],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},27790:e=>{"use strict";e.exports=require("assert")},78893:e=>{"use strict";e.exports=require("buffer")},84770:e=>{"use strict";e.exports=require("crypto")},17702:e=>{"use strict";e.exports=require("events")},32615:e=>{"use strict";e.exports=require("http")},35240:e=>{"use strict";e.exports=require("https")},86624:e=>{"use strict";e.exports=require("querystring")},17360:e=>{"use strict";e.exports=require("url")},21764:e=>{"use strict";e.exports=require("util")},71568:e=>{"use strict";e.exports=require("zlib")},25645:(e,t,r)=>{"use strict";r.r(t),r.d(t,{originalPathname:()=>_,patchFetch:()=>m,requestAsyncStorage:()=>f,routeModule:()=>p,serverHooks:()=>y,staticGenerationAsyncStorage:()=>h});var n={};r.r(n),r.d(n,{GET:()=>d,POST:()=>d});var o=r(49303),i=r(88716),a=r(60670),s=r(75571),c=r.n(s),l=r(33302);let u={providers:[(0,r(53797).Z)({name:"Credentials",credentials:{email:{label:"Email",type:"email"},password:{label:"Password",type:"password"}},async authorize(e){if(!e?.email||!e?.password)return null;try{let t=await fetch("http://127.0.0.1:8000/api/v1/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.email,password:e.password})});if(!t.ok)return null;let r=await t.json(),n=await fetch("http://127.0.0.1:8000/api/v1/auth/me",{headers:{Authorization:`Bearer ${r.access_token}`}});if(!n.ok)return null;let o=await n.json();return{id:o.id,email:o.email,name:o.name,accessToken:r.access_token}}catch(e){return console.error("Auth error:",e),null}}}),(0,l.Z)({clientId:process.env.LINKEDIN_CLIENT_ID,clientSecret:process.env.LINKEDIN_CLIENT_SECRET,authorization:{params:{scope:"openid profile email w_member_social"}}})],callbacks:{async jwt({token:e,user:t,account:r}){if(r&&t&&(e.accessToken=t.accessToken||r.access_token,e.refreshToken=r.refresh_token,e.provider=r.provider,e.providerAccountId=r.providerAccountId,"credentials"!==r.provider))try{await fetch("http://127.0.0.1:8000/api/v1/oauth/connect",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.accessToken}`},body:JSON.stringify({platform:r.provider,platform_user_id:r.providerAccountId,access_token:r.access_token,refresh_token:r.refresh_token,token_expires_at:r.expires_at?new Date(1e3*r.expires_at).toISOString():null})})}catch(e){console.error("Failed to save OAuth tokens:",e)}return e},session:async({session:e,token:t})=>(e.accessToken=t.accessToken,e.provider=t.provider,e)},pages:{signIn:"/auth/login",signOut:"/auth/logout",error:"/auth/error"},session:{strategy:"jwt",maxAge:2592e3},secret:process.env.NEXTAUTH_SECRET},d=c()(u),p=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/auth/[...nextauth]/route",pathname:"/api/auth/[...nextauth]",filename:"route",bundlePath:"app/api/auth/[...nextauth]/route"},resolvedPagePath:"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\api\\auth\\[...nextauth]\\route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:f,staticGenerationAsyncStorage:h,serverHooks:y}=p,_="/api/auth/[...nextauth]/route";function m(){return(0,a.patchFetch)({serverHooks:y,staticGenerationAsyncStorage:h})}},55159:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.hkdf=void 0;let n=r(56198);function o(e,t){if("string"==typeof e)return new TextEncoder().encode(e);if(!(e instanceof Uint8Array))throw TypeError(`"${t}"" must be an instance of Uint8Array or a string`);return e}async function i(e,t,r,i,a){return(0,n.default)(function(e){switch(e){case"sha256":case"sha384":case"sha512":case"sha1":return e;default:throw TypeError('unsupported "digest" value')}}(e),function(e){let t=o(e,"ikm");if(!t.byteLength)throw TypeError('"ikm" must be at least one byte in length');return t}(t),o(r,"salt"),function(e){let t=o(e,"info");if(t.byteLength>1024)throw TypeError('"info" must not contain more than 1024 bytes');return t}(i),function(e,t){if("number"!=typeof e||!Number.isInteger(e)||e<1)throw TypeError('"keylen" must be a positive integer');if(e>255*(parseInt(t.substr(3),10)>>3||20))throw TypeError('"keylen" too large');return e}(a,e))}t.hkdf=i,t.default=i},51497:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770);t.default=(e,t,r,o,i)=>{let a=parseInt(e.substr(3),10)>>3||20,s=(0,n.createHmac)(e,r.byteLength?r:new Uint8Array(a)).update(t).digest(),c=Math.ceil(i/a),l=new Uint8Array(a*c+o.byteLength+1),u=0,d=0;for(let t=1;t<=c;t++)l.set(o,d),l[d+o.byteLength]=t,l.set((0,n.createHmac)(e,s).update(l.subarray(u,d+o.byteLength+1)).digest(),d),u=d,d+=a;return l.slice(0,i)}},56198:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0});let o=r(84770),i=r(51497);"function"!=typeof o.hkdf||process.versions.electron||(n=async(...e)=>new Promise((t,r)=>{o.hkdf(...e,(e,n)=>{e?r(e):t(new Uint8Array(n))})})),t.default=async(e,t,r,o,a)=>(n||i.default)(e,t,r,o,a)},43183:(e,t)=>{"use strict";t.parse=function(e,t){if("string"!=typeof e)throw TypeError("argument str must be a string");var r={},o=e.length;if(o<2)return r;var i=t&&t.decode||u,a=0,s=0,d=0;do{if(-1===(s=e.indexOf("=",a)))break;if(-1===(d=e.indexOf(";",a)))d=o;else if(s>d){a=e.lastIndexOf(";",s-1)+1;continue}var p=c(e,a,s),f=l(e,s,p),h=e.slice(p,f);if(!n.call(r,h)){var y=c(e,s+1,d),_=l(e,d,y);34===e.charCodeAt(y)&&34===e.charCodeAt(_-1)&&(y++,_--);var m=e.slice(y,_);r[h]=function(e,t){try{return t(e)}catch(t){return e}}(m,i)}a=d+1}while(ar;){var n=e.charCodeAt(--t);if(32!==n&&9!==n)return t+1}return r}function u(e){return -1!==e.indexOf("%")?decodeURIComponent(e):e}},39797:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.cryptoRuntime=t.base64url=t.generateSecret=t.generateKeyPair=t.errors=t.decodeJwt=t.decodeProtectedHeader=t.importJWK=t.importX509=t.importPKCS8=t.importSPKI=t.exportJWK=t.exportSPKI=t.exportPKCS8=t.UnsecuredJWT=t.createRemoteJWKSet=t.createLocalJWKSet=t.EmbeddedJWK=t.calculateJwkThumbprintUri=t.calculateJwkThumbprint=t.EncryptJWT=t.SignJWT=t.GeneralSign=t.FlattenedSign=t.CompactSign=t.FlattenedEncrypt=t.CompactEncrypt=t.jwtDecrypt=t.jwtVerify=t.generalVerify=t.flattenedVerify=t.compactVerify=t.GeneralEncrypt=t.generalDecrypt=t.flattenedDecrypt=t.compactDecrypt=void 0;var n=r(82569);Object.defineProperty(t,"compactDecrypt",{enumerable:!0,get:function(){return n.compactDecrypt}});var o=r(86166);Object.defineProperty(t,"flattenedDecrypt",{enumerable:!0,get:function(){return o.flattenedDecrypt}});var i=r(1103);Object.defineProperty(t,"generalDecrypt",{enumerable:!0,get:function(){return i.generalDecrypt}});var a=r(38621);Object.defineProperty(t,"GeneralEncrypt",{enumerable:!0,get:function(){return a.GeneralEncrypt}});var s=r(78274);Object.defineProperty(t,"compactVerify",{enumerable:!0,get:function(){return s.compactVerify}});var c=r(73586);Object.defineProperty(t,"flattenedVerify",{enumerable:!0,get:function(){return c.flattenedVerify}});var l=r(52588);Object.defineProperty(t,"generalVerify",{enumerable:!0,get:function(){return l.generalVerify}});var u=r(28146);Object.defineProperty(t,"jwtVerify",{enumerable:!0,get:function(){return u.jwtVerify}});var d=r(78225);Object.defineProperty(t,"jwtDecrypt",{enumerable:!0,get:function(){return d.jwtDecrypt}});var p=r(87355);Object.defineProperty(t,"CompactEncrypt",{enumerable:!0,get:function(){return p.CompactEncrypt}});var f=r(30075);Object.defineProperty(t,"FlattenedEncrypt",{enumerable:!0,get:function(){return f.FlattenedEncrypt}});var h=r(77545);Object.defineProperty(t,"CompactSign",{enumerable:!0,get:function(){return h.CompactSign}});var y=r(21533);Object.defineProperty(t,"FlattenedSign",{enumerable:!0,get:function(){return y.FlattenedSign}});var _=r(80627);Object.defineProperty(t,"GeneralSign",{enumerable:!0,get:function(){return _.GeneralSign}});var m=r(11013);Object.defineProperty(t,"SignJWT",{enumerable:!0,get:function(){return m.SignJWT}});var g=r(95914);Object.defineProperty(t,"EncryptJWT",{enumerable:!0,get:function(){return g.EncryptJWT}});var v=r(92608);Object.defineProperty(t,"calculateJwkThumbprint",{enumerable:!0,get:function(){return v.calculateJwkThumbprint}}),Object.defineProperty(t,"calculateJwkThumbprintUri",{enumerable:!0,get:function(){return v.calculateJwkThumbprintUri}});var w=r(19883);Object.defineProperty(t,"EmbeddedJWK",{enumerable:!0,get:function(){return w.EmbeddedJWK}});var b=r(47721);Object.defineProperty(t,"createLocalJWKSet",{enumerable:!0,get:function(){return b.createLocalJWKSet}});var k=r(98869);Object.defineProperty(t,"createRemoteJWKSet",{enumerable:!0,get:function(){return k.createRemoteJWKSet}});var S=r(42498);Object.defineProperty(t,"UnsecuredJWT",{enumerable:!0,get:function(){return S.UnsecuredJWT}});var E=r(94315);Object.defineProperty(t,"exportPKCS8",{enumerable:!0,get:function(){return E.exportPKCS8}}),Object.defineProperty(t,"exportSPKI",{enumerable:!0,get:function(){return E.exportSPKI}}),Object.defineProperty(t,"exportJWK",{enumerable:!0,get:function(){return E.exportJWK}});var A=r(37872);Object.defineProperty(t,"importSPKI",{enumerable:!0,get:function(){return A.importSPKI}}),Object.defineProperty(t,"importPKCS8",{enumerable:!0,get:function(){return A.importPKCS8}}),Object.defineProperty(t,"importX509",{enumerable:!0,get:function(){return A.importX509}}),Object.defineProperty(t,"importJWK",{enumerable:!0,get:function(){return A.importJWK}});var O=r(28679);Object.defineProperty(t,"decodeProtectedHeader",{enumerable:!0,get:function(){return O.decodeProtectedHeader}});var x=r(34407);Object.defineProperty(t,"decodeJwt",{enumerable:!0,get:function(){return x.decodeJwt}}),t.errors=r(45099);var P=r(68606);Object.defineProperty(t,"generateKeyPair",{enumerable:!0,get:function(){return P.generateKeyPair}});var T=r(86690);Object.defineProperty(t,"generateSecret",{enumerable:!0,get:function(){return T.generateSecret}}),t.base64url=r(74789);var C=r(75440);Object.defineProperty(t,"cryptoRuntime",{enumerable:!0,get:function(){return C.default}})},82569:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compactDecrypt=void 0;let n=r(86166),o=r(45099),i=r(36088);async function a(e,t,r){if(e instanceof Uint8Array&&(e=i.decoder.decode(e)),"string"!=typeof e)throw new o.JWEInvalid("Compact JWE must be a string or Uint8Array");let{0:a,1:s,2:c,3:l,4:u,length:d}=e.split(".");if(5!==d)throw new o.JWEInvalid("Invalid Compact JWE");let p=await (0,n.flattenedDecrypt)({ciphertext:l,iv:c||void 0,protected:a||void 0,tag:u||void 0,encrypted_key:s||void 0},t,r),f={plaintext:p.plaintext,protectedHeader:p.protectedHeader};return"function"==typeof t?{...f,key:p.key}:f}t.compactDecrypt=a},87355:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CompactEncrypt=void 0;let n=r(30075);class o{constructor(e){this._flattened=new n.FlattenedEncrypt(e)}setContentEncryptionKey(e){return this._flattened.setContentEncryptionKey(e),this}setInitializationVector(e){return this._flattened.setInitializationVector(e),this}setProtectedHeader(e){return this._flattened.setProtectedHeader(e),this}setKeyManagementParameters(e){return this._flattened.setKeyManagementParameters(e),this}async encrypt(e,t){let r=await this._flattened.encrypt(e,t);return[r.protected,r.encrypted_key,r.iv,r.ciphertext,r.tag].join(".")}}t.CompactEncrypt=o},86166:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.flattenedDecrypt=void 0;let n=r(75906),o=r(25795),i=r(99359),a=r(45099),s=r(66856),c=r(87144),l=r(44610),u=r(36088),d=r(74053),p=r(98550),f=r(79218);async function h(e,t,r){var h;let y,_,m,g,v,w,b;if(!(0,c.default)(e))throw new a.JWEInvalid("Flattened JWE must be an object");if(void 0===e.protected&&void 0===e.header&&void 0===e.unprotected)throw new a.JWEInvalid("JOSE Header missing");if("string"!=typeof e.iv)throw new a.JWEInvalid("JWE Initialization Vector missing or incorrect type");if("string"!=typeof e.ciphertext)throw new a.JWEInvalid("JWE Ciphertext missing or incorrect type");if("string"!=typeof e.tag)throw new a.JWEInvalid("JWE Authentication Tag missing or incorrect type");if(void 0!==e.protected&&"string"!=typeof e.protected)throw new a.JWEInvalid("JWE Protected Header incorrect type");if(void 0!==e.encrypted_key&&"string"!=typeof e.encrypted_key)throw new a.JWEInvalid("JWE Encrypted Key incorrect type");if(void 0!==e.aad&&"string"!=typeof e.aad)throw new a.JWEInvalid("JWE AAD incorrect type");if(void 0!==e.header&&!(0,c.default)(e.header))throw new a.JWEInvalid("JWE Shared Unprotected Header incorrect type");if(void 0!==e.unprotected&&!(0,c.default)(e.unprotected))throw new a.JWEInvalid("JWE Per-Recipient Unprotected Header incorrect type");if(e.protected)try{let t=(0,n.decode)(e.protected);y=JSON.parse(u.decoder.decode(t))}catch{throw new a.JWEInvalid("JWE Protected Header is invalid")}if(!(0,s.default)(y,e.header,e.unprotected))throw new a.JWEInvalid("JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint");let k={...y,...e.header,...e.unprotected};if((0,p.default)(a.JWEInvalid,new Map,null==r?void 0:r.crit,y,k),void 0!==k.zip){if(!y||!y.zip)throw new a.JWEInvalid('JWE "zip" (Compression Algorithm) Header MUST be integrity protected');if("DEF"!==k.zip)throw new a.JOSENotSupported('Unsupported JWE "zip" (Compression Algorithm) Header Parameter value')}let{alg:S,enc:E}=k;if("string"!=typeof S||!S)throw new a.JWEInvalid("missing JWE Algorithm (alg) in JWE Header");if("string"!=typeof E||!E)throw new a.JWEInvalid("missing JWE Encryption Algorithm (enc) in JWE Header");let A=r&&(0,f.default)("keyManagementAlgorithms",r.keyManagementAlgorithms),O=r&&(0,f.default)("contentEncryptionAlgorithms",r.contentEncryptionAlgorithms);if(A&&!A.has(S))throw new a.JOSEAlgNotAllowed('"alg" (Algorithm) Header Parameter not allowed');if(O&&!O.has(E))throw new a.JOSEAlgNotAllowed('"enc" (Encryption Algorithm) Header Parameter not allowed');if(void 0!==e.encrypted_key)try{_=(0,n.decode)(e.encrypted_key)}catch{throw new a.JWEInvalid("Failed to base64url decode the encrypted_key")}let x=!1;"function"==typeof t&&(t=await t(y,e),x=!0);try{m=await (0,l.default)(S,t,_,k,r)}catch(e){if(e instanceof TypeError||e instanceof a.JWEInvalid||e instanceof a.JOSENotSupported)throw e;m=(0,d.default)(E)}try{g=(0,n.decode)(e.iv)}catch{throw new a.JWEInvalid("Failed to base64url decode the iv")}try{v=(0,n.decode)(e.tag)}catch{throw new a.JWEInvalid("Failed to base64url decode the tag")}let P=u.encoder.encode(null!==(h=e.protected)&&void 0!==h?h:"");w=void 0!==e.aad?(0,u.concat)(P,u.encoder.encode("."),u.encoder.encode(e.aad)):P;try{b=(0,n.decode)(e.ciphertext)}catch{throw new a.JWEInvalid("Failed to base64url decode the ciphertext")}let T=await (0,o.default)(E,m,b,g,v,w);"DEF"===k.zip&&(T=await ((null==r?void 0:r.inflateRaw)||i.inflate)(T));let C={plaintext:T};if(void 0!==e.protected&&(C.protectedHeader=y),void 0!==e.aad)try{C.additionalAuthenticatedData=(0,n.decode)(e.aad)}catch{throw new a.JWEInvalid("Failed to base64url decode the aad")}return(void 0!==e.unprotected&&(C.sharedUnprotectedHeader=e.unprotected),void 0!==e.header&&(C.unprotectedHeader=e.header),x)?{...C,key:t}:C}t.flattenedDecrypt=h},30075:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlattenedEncrypt=t.unprotected=void 0;let n=r(75906),o=r(62519),i=r(99359),a=r(95426),s=r(60730),c=r(45099),l=r(66856),u=r(36088),d=r(98550);t.unprotected=Symbol();class p{constructor(e){if(!(e instanceof Uint8Array))throw TypeError("plaintext must be an instance of Uint8Array");this._plaintext=e}setKeyManagementParameters(e){if(this._keyManagementParameters)throw TypeError("setKeyManagementParameters can only be called once");return this._keyManagementParameters=e,this}setProtectedHeader(e){if(this._protectedHeader)throw TypeError("setProtectedHeader can only be called once");return this._protectedHeader=e,this}setSharedUnprotectedHeader(e){if(this._sharedUnprotectedHeader)throw TypeError("setSharedUnprotectedHeader can only be called once");return this._sharedUnprotectedHeader=e,this}setUnprotectedHeader(e){if(this._unprotectedHeader)throw TypeError("setUnprotectedHeader can only be called once");return this._unprotectedHeader=e,this}setAdditionalAuthenticatedData(e){return this._aad=e,this}setContentEncryptionKey(e){if(this._cek)throw TypeError("setContentEncryptionKey can only be called once");return this._cek=e,this}setInitializationVector(e){if(this._iv)throw TypeError("setInitializationVector can only be called once");return this._iv=e,this}async encrypt(e,r){let p,f,h,y,_,m,g;if(!this._protectedHeader&&!this._unprotectedHeader&&!this._sharedUnprotectedHeader)throw new c.JWEInvalid("either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()");if(!(0,l.default)(this._protectedHeader,this._unprotectedHeader,this._sharedUnprotectedHeader))throw new c.JWEInvalid("JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint");let v={...this._protectedHeader,...this._unprotectedHeader,...this._sharedUnprotectedHeader};if((0,d.default)(c.JWEInvalid,new Map,null==r?void 0:r.crit,this._protectedHeader,v),void 0!==v.zip){if(!this._protectedHeader||!this._protectedHeader.zip)throw new c.JWEInvalid('JWE "zip" (Compression Algorithm) Header MUST be integrity protected');if("DEF"!==v.zip)throw new c.JOSENotSupported('Unsupported JWE "zip" (Compression Algorithm) Header Parameter value')}let{alg:w,enc:b}=v;if("string"!=typeof w||!w)throw new c.JWEInvalid('JWE "alg" (Algorithm) Header Parameter missing or invalid');if("string"!=typeof b||!b)throw new c.JWEInvalid('JWE "enc" (Encryption Algorithm) Header Parameter missing or invalid');if("dir"===w){if(this._cek)throw TypeError("setContentEncryptionKey cannot be called when using Direct Encryption")}else if("ECDH-ES"===w&&this._cek)throw TypeError("setContentEncryptionKey cannot be called when using Direct Key Agreement");{let n;({cek:f,encryptedKey:p,parameters:n}=await (0,s.default)(w,b,e,this._cek,this._keyManagementParameters)),n&&(r&&t.unprotected in r?this._unprotectedHeader?this._unprotectedHeader={...this._unprotectedHeader,...n}:this.setUnprotectedHeader(n):this._protectedHeader?this._protectedHeader={...this._protectedHeader,...n}:this.setProtectedHeader(n))}if(this._iv||(this._iv=(0,a.default)(b)),y=this._protectedHeader?u.encoder.encode((0,n.encode)(JSON.stringify(this._protectedHeader))):u.encoder.encode(""),this._aad?(_=(0,n.encode)(this._aad),h=(0,u.concat)(y,u.encoder.encode("."),u.encoder.encode(_))):h=y,"DEF"===v.zip){let e=await ((null==r?void 0:r.deflateRaw)||i.deflate)(this._plaintext);({ciphertext:m,tag:g}=await (0,o.default)(b,e,f,this._iv,h))}else({ciphertext:m,tag:g}=await (0,o.default)(b,this._plaintext,f,this._iv,h));let k={ciphertext:(0,n.encode)(m),iv:(0,n.encode)(this._iv),tag:(0,n.encode)(g)};return p&&(k.encrypted_key=(0,n.encode)(p)),_&&(k.aad=_),this._protectedHeader&&(k.protected=u.decoder.decode(y)),this._sharedUnprotectedHeader&&(k.unprotected=this._sharedUnprotectedHeader),this._unprotectedHeader&&(k.header=this._unprotectedHeader),k}}t.FlattenedEncrypt=p},1103:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.generalDecrypt=void 0;let n=r(86166),o=r(45099),i=r(87144);async function a(e,t,r){if(!(0,i.default)(e))throw new o.JWEInvalid("General JWE must be an object");if(!Array.isArray(e.recipients)||!e.recipients.every(i.default))throw new o.JWEInvalid("JWE Recipients missing or incorrect type");if(!e.recipients.length)throw new o.JWEInvalid("JWE Recipients has no members");for(let o of e.recipients)try{return await (0,n.flattenedDecrypt)({aad:e.aad,ciphertext:e.ciphertext,encrypted_key:o.encrypted_key,header:o.header,iv:e.iv,protected:e.protected,tag:e.tag,unprotected:e.unprotected},t,r)}catch{}throw new o.JWEDecryptionFailed}t.generalDecrypt=a},38621:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GeneralEncrypt=void 0;let n=r(30075),o=r(45099),i=r(74053),a=r(66856),s=r(60730),c=r(75906),l=r(98550);class u{constructor(e,t,r){this.parent=e,this.key=t,this.options=r}setUnprotectedHeader(e){if(this.unprotectedHeader)throw TypeError("setUnprotectedHeader can only be called once");return this.unprotectedHeader=e,this}addRecipient(...e){return this.parent.addRecipient(...e)}encrypt(...e){return this.parent.encrypt(...e)}done(){return this.parent}}class d{constructor(e){this._recipients=[],this._plaintext=e}addRecipient(e,t){let r=new u(this,e,{crit:null==t?void 0:t.crit});return this._recipients.push(r),r}setProtectedHeader(e){if(this._protectedHeader)throw TypeError("setProtectedHeader can only be called once");return this._protectedHeader=e,this}setSharedUnprotectedHeader(e){if(this._unprotectedHeader)throw TypeError("setSharedUnprotectedHeader can only be called once");return this._unprotectedHeader=e,this}setAdditionalAuthenticatedData(e){return this._aad=e,this}async encrypt(e){var t,r,u;let d;if(!this._recipients.length)throw new o.JWEInvalid("at least one recipient must be added");if(e={deflateRaw:null==e?void 0:e.deflateRaw},1===this._recipients.length){let[t]=this._recipients,r=await new n.FlattenedEncrypt(this._plaintext).setAdditionalAuthenticatedData(this._aad).setProtectedHeader(this._protectedHeader).setSharedUnprotectedHeader(this._unprotectedHeader).setUnprotectedHeader(t.unprotectedHeader).encrypt(t.key,{...t.options,...e}),o={ciphertext:r.ciphertext,iv:r.iv,recipients:[{}],tag:r.tag};return r.aad&&(o.aad=r.aad),r.protected&&(o.protected=r.protected),r.unprotected&&(o.unprotected=r.unprotected),r.encrypted_key&&(o.recipients[0].encrypted_key=r.encrypted_key),r.header&&(o.recipients[0].header=r.header),o}for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmbeddedJWK=void 0;let n=r(37872),o=r(87144),i=r(45099);async function a(e,t){let r={...e,...null==t?void 0:t.header};if(!(0,o.default)(r.jwk))throw new i.JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a JSON object');let a=await (0,n.importJWK)({...r.jwk,ext:!0},r.alg,!0);if(a instanceof Uint8Array||"public"!==a.type)throw new i.JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a public key');return a}t.EmbeddedJWK=a},92608:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.calculateJwkThumbprintUri=t.calculateJwkThumbprint=void 0;let n=r(53078),o=r(75906),i=r(45099),a=r(36088),s=r(87144),c=(e,t)=>{if("string"!=typeof e||!e)throw new i.JWKInvalid(`${t} missing or invalid`)};async function l(e,t){let r;if(!(0,s.default)(e))throw TypeError("JWK must be an object");if(null!=t||(t="sha256"),"sha256"!==t&&"sha384"!==t&&"sha512"!==t)throw TypeError('digestAlgorithm must one of "sha256", "sha384", or "sha512"');switch(e.kty){case"EC":c(e.crv,'"crv" (Curve) Parameter'),c(e.x,'"x" (X Coordinate) Parameter'),c(e.y,'"y" (Y Coordinate) Parameter'),r={crv:e.crv,kty:e.kty,x:e.x,y:e.y};break;case"OKP":c(e.crv,'"crv" (Subtype of Key Pair) Parameter'),c(e.x,'"x" (Public Key) Parameter'),r={crv:e.crv,kty:e.kty,x:e.x};break;case"RSA":c(e.e,'"e" (Exponent) Parameter'),c(e.n,'"n" (Modulus) Parameter'),r={e:e.e,kty:e.kty,n:e.n};break;case"oct":c(e.k,'"k" (Key Value) Parameter'),r={k:e.k,kty:e.kty};break;default:throw new i.JOSENotSupported('"kty" (Key Type) Parameter missing or unsupported')}let l=a.encoder.encode(JSON.stringify(r));return(0,o.encode)(await (0,n.default)(t,l))}async function u(e,t){null!=t||(t="sha256");let r=await l(e,t);return`urn:ietf:params:oauth:jwk-thumbprint:sha-${t.slice(-3)}:${r}`}t.calculateJwkThumbprint=l,t.calculateJwkThumbprintUri=u},47721:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createLocalJWKSet=t.LocalJWKSet=t.isJWKSLike=void 0;let n=r(37872),o=r(45099),i=r(87144);function a(e){return e&&"object"==typeof e&&Array.isArray(e.keys)&&e.keys.every(s)}function s(e){return(0,i.default)(e)}t.isJWKSLike=a;class c{constructor(e){if(this._cached=new WeakMap,!a(e))throw new o.JWKSInvalid("JSON Web Key Set malformed");this._jwks=function(e){return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}(e)}async getKey(e,t){let{alg:r,kid:n}={...e,...null==t?void 0:t.header},i=function(e){switch("string"==typeof e&&e.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new o.JOSENotSupported('Unsupported "alg" value for a JSON Web Key Set')}}(r),a=this._jwks.keys.filter(e=>{let t=i===e.kty;if(t&&"string"==typeof n&&(t=n===e.kid),t&&"string"==typeof e.alg&&(t=r===e.alg),t&&"string"==typeof e.use&&(t="sig"===e.use),t&&Array.isArray(e.key_ops)&&(t=e.key_ops.includes("verify")),t&&"EdDSA"===r&&(t="Ed25519"===e.crv||"Ed448"===e.crv),t)switch(r){case"ES256":t="P-256"===e.crv;break;case"ES256K":t="secp256k1"===e.crv;break;case"ES384":t="P-384"===e.crv;break;case"ES512":t="P-521"===e.crv}return t}),{0:s,length:c}=a;if(0===c)throw new o.JWKSNoMatchingKey;if(1!==c){let e=new o.JWKSMultipleMatchingKeys,{_cached:t}=this;throw e[Symbol.asyncIterator]=async function*(){for(let e of a)try{yield await l(t,e,r)}catch{continue}},e}return l(this._cached,s,r)}}async function l(e,t,r){let i=e.get(t)||e.set(t,{}).get(t);if(void 0===i[r]){let e=await (0,n.importJWK)({...t,ext:!0},r);if(e instanceof Uint8Array||"public"!==e.type)throw new o.JWKSInvalid("JSON Web Key Set members must be public keys");i[r]=e}return i[r]}t.LocalJWKSet=c,t.createLocalJWKSet=function(e){let t=new c(e);return async function(e,r){return t.getKey(e,r)}}},98869:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createRemoteJWKSet=void 0;let n=r(65828),o=r(45099),i=r(47721);class a extends i.LocalJWKSet{constructor(e,t){if(super({keys:[]}),this._jwks=void 0,!(e instanceof URL))throw TypeError("url must be an instance of URL");this._url=new URL(e.href),this._options={agent:null==t?void 0:t.agent,headers:null==t?void 0:t.headers},this._timeoutDuration="number"==typeof(null==t?void 0:t.timeoutDuration)?null==t?void 0:t.timeoutDuration:5e3,this._cooldownDuration="number"==typeof(null==t?void 0:t.cooldownDuration)?null==t?void 0:t.cooldownDuration:3e4,this._cacheMaxAge="number"==typeof(null==t?void 0:t.cacheMaxAge)?null==t?void 0:t.cacheMaxAge:6e5}coolingDown(){return"number"==typeof this._jwksTimestamp&&Date.now(){if(!(0,i.isJWKSLike)(e))throw new o.JWKSInvalid("JSON Web Key Set malformed");this._jwks={keys:e.keys},this._jwksTimestamp=Date.now(),this._pendingFetch=void 0}).catch(e=>{throw this._pendingFetch=void 0,e})),await this._pendingFetch}}t.createRemoteJWKSet=function(e,t){let r=new a(e,t);return async function(e,t){return r.getKey(e,t)}}},77545:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CompactSign=void 0;let n=r(21533);class o{constructor(e){this._flattened=new n.FlattenedSign(e)}setProtectedHeader(e){return this._flattened.setProtectedHeader(e),this}async sign(e,t){let r=await this._flattened.sign(e,t);if(void 0===r.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${r.protected}.${r.payload}.${r.signature}`}}t.CompactSign=o},78274:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compactVerify=void 0;let n=r(73586),o=r(45099),i=r(36088);async function a(e,t,r){if(e instanceof Uint8Array&&(e=i.decoder.decode(e)),"string"!=typeof e)throw new o.JWSInvalid("Compact JWS must be a string or Uint8Array");let{0:a,1:s,2:c,length:l}=e.split(".");if(3!==l)throw new o.JWSInvalid("Invalid Compact JWS");let u=await (0,n.flattenedVerify)({payload:s,protected:a,signature:c},t,r),d={payload:u.payload,protectedHeader:u.protectedHeader};return"function"==typeof t?{...d,key:u.key}:d}t.compactVerify=a},21533:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlattenedSign=void 0;let n=r(75906),o=r(88752),i=r(66856),a=r(45099),s=r(36088),c=r(13410),l=r(98550);class u{constructor(e){if(!(e instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this._payload=e}setProtectedHeader(e){if(this._protectedHeader)throw TypeError("setProtectedHeader can only be called once");return this._protectedHeader=e,this}setUnprotectedHeader(e){if(this._unprotectedHeader)throw TypeError("setUnprotectedHeader can only be called once");return this._unprotectedHeader=e,this}async sign(e,t){let r;if(!this._protectedHeader&&!this._unprotectedHeader)throw new a.JWSInvalid("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!(0,i.default)(this._protectedHeader,this._unprotectedHeader))throw new a.JWSInvalid("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let u={...this._protectedHeader,...this._unprotectedHeader},d=(0,l.default)(a.JWSInvalid,new Map([["b64",!0]]),null==t?void 0:t.crit,this._protectedHeader,u),p=!0;if(d.has("b64")&&"boolean"!=typeof(p=this._protectedHeader.b64))throw new a.JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:f}=u;if("string"!=typeof f||!f)throw new a.JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');(0,c.default)(f,e,"sign");let h=this._payload;p&&(h=s.encoder.encode((0,n.encode)(h))),r=this._protectedHeader?s.encoder.encode((0,n.encode)(JSON.stringify(this._protectedHeader))):s.encoder.encode("");let y=(0,s.concat)(r,s.encoder.encode("."),h),_=await (0,o.default)(f,e,y),m={signature:(0,n.encode)(_),payload:""};return p&&(m.payload=s.decoder.decode(h)),this._unprotectedHeader&&(m.header=this._unprotectedHeader),this._protectedHeader&&(m.protected=s.decoder.decode(r)),m}}t.FlattenedSign=u},73586:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.flattenedVerify=void 0;let n=r(75906),o=r(34545),i=r(45099),a=r(36088),s=r(66856),c=r(87144),l=r(13410),u=r(98550),d=r(79218);async function p(e,t,r){var p;let f,h;if(!(0,c.default)(e))throw new i.JWSInvalid("Flattened JWS must be an object");if(void 0===e.protected&&void 0===e.header)throw new i.JWSInvalid('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==e.protected&&"string"!=typeof e.protected)throw new i.JWSInvalid("JWS Protected Header incorrect type");if(void 0===e.payload)throw new i.JWSInvalid("JWS Payload missing");if("string"!=typeof e.signature)throw new i.JWSInvalid("JWS Signature missing or incorrect type");if(void 0!==e.header&&!(0,c.default)(e.header))throw new i.JWSInvalid("JWS Unprotected Header incorrect type");let y={};if(e.protected)try{let t=(0,n.decode)(e.protected);y=JSON.parse(a.decoder.decode(t))}catch{throw new i.JWSInvalid("JWS Protected Header is invalid")}if(!(0,s.default)(y,e.header))throw new i.JWSInvalid("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let _={...y,...e.header},m=(0,u.default)(i.JWSInvalid,new Map([["b64",!0]]),null==r?void 0:r.crit,y,_),g=!0;if(m.has("b64")&&"boolean"!=typeof(g=y.b64))throw new i.JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:v}=_;if("string"!=typeof v||!v)throw new i.JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');let w=r&&(0,d.default)("algorithms",r.algorithms);if(w&&!w.has(v))throw new i.JOSEAlgNotAllowed('"alg" (Algorithm) Header Parameter not allowed');if(g){if("string"!=typeof e.payload)throw new i.JWSInvalid("JWS Payload must be a string")}else if("string"!=typeof e.payload&&!(e.payload instanceof Uint8Array))throw new i.JWSInvalid("JWS Payload must be a string or an Uint8Array instance");let b=!1;"function"==typeof t&&(t=await t(y,e),b=!0),(0,l.default)(v,t,"verify");let k=(0,a.concat)(a.encoder.encode(null!==(p=e.protected)&&void 0!==p?p:""),a.encoder.encode("."),"string"==typeof e.payload?a.encoder.encode(e.payload):e.payload);try{f=(0,n.decode)(e.signature)}catch{throw new i.JWSInvalid("Failed to base64url decode the signature")}if(!await (0,o.default)(v,t,f,k))throw new i.JWSSignatureVerificationFailed;if(g)try{h=(0,n.decode)(e.payload)}catch{throw new i.JWSInvalid("Failed to base64url decode the payload")}else h="string"==typeof e.payload?a.encoder.encode(e.payload):e.payload;let S={payload:h};return(void 0!==e.protected&&(S.protectedHeader=y),void 0!==e.header&&(S.unprotectedHeader=e.header),b)?{...S,key:t}:S}t.flattenedVerify=p},80627:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GeneralSign=void 0;let n=r(21533),o=r(45099);class i{constructor(e,t,r){this.parent=e,this.key=t,this.options=r}setProtectedHeader(e){if(this.protectedHeader)throw TypeError("setProtectedHeader can only be called once");return this.protectedHeader=e,this}setUnprotectedHeader(e){if(this.unprotectedHeader)throw TypeError("setUnprotectedHeader can only be called once");return this.unprotectedHeader=e,this}addSignature(...e){return this.parent.addSignature(...e)}sign(...e){return this.parent.sign(...e)}done(){return this.parent}}class a{constructor(e){this._signatures=[],this._payload=e}addSignature(e,t){let r=new i(this,e,t);return this._signatures.push(r),r}async sign(){if(!this._signatures.length)throw new o.JWSInvalid("at least one signature must be added");let e={signatures:[],payload:""};for(let t=0;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.generalVerify=void 0;let n=r(73586),o=r(45099),i=r(87144);async function a(e,t,r){if(!(0,i.default)(e))throw new o.JWSInvalid("General JWS must be an object");if(!Array.isArray(e.signatures)||!e.signatures.every(i.default))throw new o.JWSInvalid("JWS Signatures missing or incorrect type");for(let o of e.signatures)try{return await (0,n.flattenedVerify)({header:o.header,payload:e.payload,protected:o.protected,signature:o.signature},t,r)}catch{}throw new o.JWSSignatureVerificationFailed}t.generalVerify=a},78225:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.jwtDecrypt=void 0;let n=r(82569),o=r(44545),i=r(45099);async function a(e,t,r){let a=await (0,n.compactDecrypt)(e,t,r),s=(0,o.default)(a.protectedHeader,a.plaintext,r),{protectedHeader:c}=a;if(void 0!==c.iss&&c.iss!==s.iss)throw new i.JWTClaimValidationFailed('replicated "iss" claim header parameter mismatch',"iss","mismatch");if(void 0!==c.sub&&c.sub!==s.sub)throw new i.JWTClaimValidationFailed('replicated "sub" claim header parameter mismatch',"sub","mismatch");if(void 0!==c.aud&&JSON.stringify(c.aud)!==JSON.stringify(s.aud))throw new i.JWTClaimValidationFailed('replicated "aud" claim header parameter mismatch',"aud","mismatch");let l={payload:s,protectedHeader:c};return"function"==typeof t?{...l,key:a.key}:l}t.jwtDecrypt=a},95914:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncryptJWT=void 0;let n=r(87355),o=r(36088),i=r(92498);class a extends i.ProduceJWT{setProtectedHeader(e){if(this._protectedHeader)throw TypeError("setProtectedHeader can only be called once");return this._protectedHeader=e,this}setKeyManagementParameters(e){if(this._keyManagementParameters)throw TypeError("setKeyManagementParameters can only be called once");return this._keyManagementParameters=e,this}setContentEncryptionKey(e){if(this._cek)throw TypeError("setContentEncryptionKey can only be called once");return this._cek=e,this}setInitializationVector(e){if(this._iv)throw TypeError("setInitializationVector can only be called once");return this._iv=e,this}replicateIssuerAsHeader(){return this._replicateIssuerAsHeader=!0,this}replicateSubjectAsHeader(){return this._replicateSubjectAsHeader=!0,this}replicateAudienceAsHeader(){return this._replicateAudienceAsHeader=!0,this}async encrypt(e,t){let r=new n.CompactEncrypt(o.encoder.encode(JSON.stringify(this._payload)));return this._replicateIssuerAsHeader&&(this._protectedHeader={...this._protectedHeader,iss:this._payload.iss}),this._replicateSubjectAsHeader&&(this._protectedHeader={...this._protectedHeader,sub:this._payload.sub}),this._replicateAudienceAsHeader&&(this._protectedHeader={...this._protectedHeader,aud:this._payload.aud}),r.setProtectedHeader(this._protectedHeader),this._iv&&r.setInitializationVector(this._iv),this._cek&&r.setContentEncryptionKey(this._cek),this._keyManagementParameters&&r.setKeyManagementParameters(this._keyManagementParameters),r.encrypt(e,t)}}t.EncryptJWT=a},92498:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProduceJWT=void 0;let n=r(68205),o=r(87144),i=r(55831);class a{constructor(e){if(!(0,o.default)(e))throw TypeError("JWT Claims Set MUST be an object");this._payload=e}setIssuer(e){return this._payload={...this._payload,iss:e},this}setSubject(e){return this._payload={...this._payload,sub:e},this}setAudience(e){return this._payload={...this._payload,aud:e},this}setJti(e){return this._payload={...this._payload,jti:e},this}setNotBefore(e){return"number"==typeof e?this._payload={...this._payload,nbf:e}:this._payload={...this._payload,nbf:(0,n.default)(new Date)+(0,i.default)(e)},this}setExpirationTime(e){return"number"==typeof e?this._payload={...this._payload,exp:e}:this._payload={...this._payload,exp:(0,n.default)(new Date)+(0,i.default)(e)},this}setIssuedAt(e){return void 0===e?this._payload={...this._payload,iat:(0,n.default)(new Date)}:this._payload={...this._payload,iat:e},this}}t.ProduceJWT=a},11013:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SignJWT=void 0;let n=r(77545),o=r(45099),i=r(36088),a=r(92498);class s extends a.ProduceJWT{setProtectedHeader(e){return this._protectedHeader=e,this}async sign(e,t){var r;let a=new n.CompactSign(i.encoder.encode(JSON.stringify(this._payload)));if(a.setProtectedHeader(this._protectedHeader),Array.isArray(null===(r=this._protectedHeader)||void 0===r?void 0:r.crit)&&this._protectedHeader.crit.includes("b64")&&!1===this._protectedHeader.b64)throw new o.JWTInvalid("JWTs MUST NOT use unencoded payload");return a.sign(e,t)}}t.SignJWT=s},42498:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UnsecuredJWT=void 0;let n=r(75906),o=r(36088),i=r(45099),a=r(44545),s=r(92498);class c extends s.ProduceJWT{encode(){let e=n.encode(JSON.stringify({alg:"none"})),t=n.encode(JSON.stringify(this._payload));return`${e}.${t}.`}static decode(e,t){let r;if("string"!=typeof e)throw new i.JWTInvalid("Unsecured JWT must be a string");let{0:s,1:c,2:l,length:u}=e.split(".");if(3!==u||""!==l)throw new i.JWTInvalid("Invalid Unsecured JWT");try{if(r=JSON.parse(o.decoder.decode(n.decode(s))),"none"!==r.alg)throw Error()}catch{throw new i.JWTInvalid("Invalid Unsecured JWT")}return{payload:(0,a.default)(r,n.decode(c),t),header:r}}}t.UnsecuredJWT=c},28146:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.jwtVerify=void 0;let n=r(78274),o=r(44545),i=r(45099);async function a(e,t,r){var a;let s=await (0,n.compactVerify)(e,t,r);if((null===(a=s.protectedHeader.crit)||void 0===a?void 0:a.includes("b64"))&&!1===s.protectedHeader.b64)throw new i.JWTInvalid("JWTs MUST NOT use unencoded payload");let c={payload:(0,o.default)(s.protectedHeader,s.payload,r),protectedHeader:s.protectedHeader};return"function"==typeof t?{...c,key:s.key}:c}t.jwtVerify=a},94315:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.exportJWK=t.exportPKCS8=t.exportSPKI=void 0;let n=r(50502),o=r(50502),i=r(13465);async function a(e){return(0,n.toSPKI)(e)}async function s(e){return(0,o.toPKCS8)(e)}async function c(e){return(0,i.default)(e)}t.exportSPKI=a,t.exportPKCS8=s,t.exportJWK=c},68606:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.generateKeyPair=void 0;let n=r(80138);async function o(e,t){return(0,n.generateKeyPair)(e,t)}t.generateKeyPair=o},86690:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.generateSecret=void 0;let n=r(80138);async function o(e,t){return(0,n.generateSecret)(e,t)}t.generateSecret=o},37872:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.importJWK=t.importPKCS8=t.importX509=t.importSPKI=void 0;let n=r(75906),o=r(50502),i=r(57083),a=r(45099),s=r(87144);async function c(e,t,r){if("string"!=typeof e||0!==e.indexOf("-----BEGIN PUBLIC KEY-----"))throw TypeError('"spki" must be SPKI formatted string');return(0,o.fromSPKI)(e,t,r)}async function l(e,t,r){if("string"!=typeof e||0!==e.indexOf("-----BEGIN CERTIFICATE-----"))throw TypeError('"x509" must be X.509 formatted string');return(0,o.fromX509)(e,t,r)}async function u(e,t,r){if("string"!=typeof e||0!==e.indexOf("-----BEGIN PRIVATE KEY-----"))throw TypeError('"pkcs8" must be PKCS#8 formatted string');return(0,o.fromPKCS8)(e,t,r)}async function d(e,t,r){var o;if(!(0,s.default)(e))throw TypeError("JWK must be an object");switch(t||(t=e.alg),e.kty){case"oct":if("string"!=typeof e.k||!e.k)throw TypeError('missing "k" (Key Value) Parameter value');if(null!=r||(r=!0!==e.ext),r)return(0,i.default)({...e,alg:t,ext:null!==(o=e.ext)&&void 0!==o&&o});return(0,n.decode)(e.k);case"RSA":if(void 0!==e.oth)throw new a.JOSENotSupported('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case"EC":case"OKP":return(0,i.default)({...e,alg:t});default:throw new a.JOSENotSupported('Unsupported "kty" (Key Type) Parameter value')}}t.importSPKI=c,t.importX509=l,t.importPKCS8=u,t.importJWK=d},66168:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unwrap=t.wrap=void 0;let n=r(62519),o=r(25795),i=r(95426),a=r(75906);async function s(e,t,r,o){let s=e.slice(0,7);o||(o=(0,i.default)(s));let{ciphertext:c,tag:l}=await (0,n.default)(s,r,t,o,new Uint8Array(0));return{encryptedKey:c,iv:(0,a.encode)(o),tag:(0,a.encode)(l)}}async function c(e,t,r,n,i){let a=e.slice(0,7);return(0,o.default)(a,t,r,n,i,new Uint8Array(0))}t.wrap=s,t.unwrap=c},36088:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.concatKdf=t.lengthAndInput=t.uint32be=t.uint64be=t.p2s=t.concat=t.decoder=t.encoder=void 0;let n=r(53078);function o(...e){let t=new Uint8Array(e.reduce((e,{length:t})=>e+t,0)),r=0;return e.forEach(e=>{t.set(e,r),r+=e.length}),t}function i(e,t,r){if(t<0||t>=4294967296)throw RangeError(`value must be >= 0 and <= ${4294967296-1}. Received ${t}`);e.set([t>>>24,t>>>16,t>>>8,255&t],r)}function a(e){let t=new Uint8Array(4);return i(t,e),t}async function s(e,t,r){let o=Math.ceil((t>>3)/32),i=new Uint8Array(32*o);for(let t=0;t>3)}t.encoder=new TextEncoder,t.decoder=new TextDecoder,t.concat=o,t.p2s=function(e,r){return o(t.encoder.encode(e),new Uint8Array([0]),r)},t.uint64be=function(e){let t=new Uint8Array(8);return i(t,Math.floor(e/4294967296),0),i(t,e%4294967296,4),t},t.uint32be=a,t.lengthAndInput=function(e){return o(a(e.length),e)},t.concatKdf=s},74053:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bitLength=void 0;let n=r(45099),o=r(74344);function i(e){switch(e){case"A128GCM":return 128;case"A192GCM":return 192;case"A256GCM":case"A128CBC-HS256":return 256;case"A192CBC-HS384":return 384;case"A256CBC-HS512":return 512;default:throw new n.JOSENotSupported(`Unsupported JWE Algorithm: ${e}`)}}t.bitLength=i,t.default=e=>(0,o.default)(new Uint8Array(i(e)>>3))},31602:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(45099),o=r(95426);t.default=(e,t)=>{if(t.length<<3!==(0,o.bitLength)(e))throw new n.JWEInvalid("Invalid Initialization Vector length")}},13410:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(32585),o=r(81943),i=(e,t)=>{if(!(t instanceof Uint8Array)){if(!(0,o.default)(t))throw TypeError((0,n.withAlg)(e,t,...o.types,"Uint8Array"));if("secret"!==t.type)throw TypeError(`${o.types.join(" or ")} instances for symmetric algorithms must be of type "secret"`)}},a=(e,t,r)=>{if(!(0,o.default)(t))throw TypeError((0,n.withAlg)(e,t,...o.types));if("secret"===t.type)throw TypeError(`${o.types.join(" or ")} instances for asymmetric algorithms must not be of type "secret"`);if("sign"===r&&"public"===t.type)throw TypeError(`${o.types.join(" or ")} instances for asymmetric algorithm signing must be of type "private"`);if("decrypt"===r&&"public"===t.type)throw TypeError(`${o.types.join(" or ")} instances for asymmetric algorithm decryption must be of type "private"`);if(t.algorithm&&"verify"===r&&"private"===t.type)throw TypeError(`${o.types.join(" or ")} instances for asymmetric algorithm verifying must be of type "public"`);if(t.algorithm&&"encrypt"===r&&"private"===t.type)throw TypeError(`${o.types.join(" or ")} instances for asymmetric algorithm encryption must be of type "public"`)};t.default=(e,t,r)=>{e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(e)?i(e,t):a(e,t,r)}},15732:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(45099);t.default=function(e){if(!(e instanceof Uint8Array)||e.length<8)throw new n.JWEInvalid("PBES2 Salt Input must be 8 or more octets")}},49023:(e,t)=>{"use strict";function r(e,t="algorithm.name"){return TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`)}function n(e,t){return e.name===t}function o(e){return parseInt(e.name.slice(4),10)}function i(e,t){if(t.length&&!t.some(t=>e.usages.includes(t))){let e="CryptoKey does not support this operation, its usages must include ";if(t.length>2){let r=t.pop();e+=`one of ${t.join(", ")}, or ${r}.`}else 2===t.length?e+=`one of ${t[0]} or ${t[1]}.`:e+=`${t[0]}.`;throw TypeError(e)}}Object.defineProperty(t,"__esModule",{value:!0}),t.checkEncCryptoKey=t.checkSigCryptoKey=void 0,t.checkSigCryptoKey=function(e,t,...a){switch(t){case"HS256":case"HS384":case"HS512":{if(!n(e.algorithm,"HMAC"))throw r("HMAC");let i=parseInt(t.slice(2),10);if(o(e.algorithm.hash)!==i)throw r(`SHA-${i}`,"algorithm.hash");break}case"RS256":case"RS384":case"RS512":{if(!n(e.algorithm,"RSASSA-PKCS1-v1_5"))throw r("RSASSA-PKCS1-v1_5");let i=parseInt(t.slice(2),10);if(o(e.algorithm.hash)!==i)throw r(`SHA-${i}`,"algorithm.hash");break}case"PS256":case"PS384":case"PS512":{if(!n(e.algorithm,"RSA-PSS"))throw r("RSA-PSS");let i=parseInt(t.slice(2),10);if(o(e.algorithm.hash)!==i)throw r(`SHA-${i}`,"algorithm.hash");break}case"EdDSA":if("Ed25519"!==e.algorithm.name&&"Ed448"!==e.algorithm.name)throw r("Ed25519 or Ed448");break;case"ES256":case"ES384":case"ES512":{if(!n(e.algorithm,"ECDSA"))throw r("ECDSA");let o=function(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw Error("unreachable")}}(t);if(e.algorithm.namedCurve!==o)throw r(o,"algorithm.namedCurve");break}default:throw TypeError("CryptoKey does not support this operation")}i(e,a)},t.checkEncCryptoKey=function(e,t,...a){switch(t){case"A128GCM":case"A192GCM":case"A256GCM":{if(!n(e.algorithm,"AES-GCM"))throw r("AES-GCM");let o=parseInt(t.slice(1,4),10);if(e.algorithm.length!==o)throw r(o,"algorithm.length");break}case"A128KW":case"A192KW":case"A256KW":{if(!n(e.algorithm,"AES-KW"))throw r("AES-KW");let o=parseInt(t.slice(1,4),10);if(e.algorithm.length!==o)throw r(o,"algorithm.length");break}case"ECDH":switch(e.algorithm.name){case"ECDH":case"X25519":case"X448":break;default:throw r("ECDH, X25519, or X448")}break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":if(!n(e.algorithm,"PBKDF2"))throw r("PBKDF2");break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":{if(!n(e.algorithm,"RSA-OAEP"))throw r("RSA-OAEP");let i=parseInt(t.slice(9),10)||1;if(o(e.algorithm.hash)!==i)throw r(`SHA-${i}`,"algorithm.hash");break}default:throw TypeError("CryptoKey does not support this operation")}i(e,a)}},44610:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(91988),o=r(57734),i=r(96679),a=r(86332),s=r(75906),c=r(45099),l=r(74053),u=r(37872),d=r(13410),p=r(87144),f=r(66168);async function h(e,t,r,h,y){switch((0,d.default)(e,t,"decrypt"),e){case"dir":if(void 0!==r)throw new c.JWEInvalid("Encountered unexpected JWE Encrypted Key");return t;case"ECDH-ES":if(void 0!==r)throw new c.JWEInvalid("Encountered unexpected JWE Encrypted Key");case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{let i,a;if(!(0,p.default)(h.epk))throw new c.JWEInvalid('JOSE Header "epk" (Ephemeral Public Key) missing or invalid');if(!o.ecdhAllowed(t))throw new c.JOSENotSupported("ECDH with the provided key is not allowed or not supported by your javascript runtime");let d=await (0,u.importJWK)(h.epk,e);if(void 0!==h.apu){if("string"!=typeof h.apu)throw new c.JWEInvalid('JOSE Header "apu" (Agreement PartyUInfo) invalid');try{i=(0,s.decode)(h.apu)}catch{throw new c.JWEInvalid("Failed to base64url decode the apu")}}if(void 0!==h.apv){if("string"!=typeof h.apv)throw new c.JWEInvalid('JOSE Header "apv" (Agreement PartyVInfo) invalid');try{a=(0,s.decode)(h.apv)}catch{throw new c.JWEInvalid("Failed to base64url decode the apv")}}let f=await o.deriveKey(d,t,"ECDH-ES"===e?h.enc:e,"ECDH-ES"===e?(0,l.bitLength)(h.enc):parseInt(e.slice(-5,-2),10),i,a);if("ECDH-ES"===e)return f;if(void 0===r)throw new c.JWEInvalid("JWE Encrypted Key missing");return(0,n.unwrap)(e.slice(-6),f,r)}case"RSA1_5":case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":if(void 0===r)throw new c.JWEInvalid("JWE Encrypted Key missing");return(0,a.decrypt)(e,t,r);case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":{let n;if(void 0===r)throw new c.JWEInvalid("JWE Encrypted Key missing");if("number"!=typeof h.p2c)throw new c.JWEInvalid('JOSE Header "p2c" (PBES2 Count) missing or invalid');let o=(null==y?void 0:y.maxPBES2Count)||1e4;if(h.p2c>o)throw new c.JWEInvalid('JOSE Header "p2c" (PBES2 Count) out is of acceptable bounds');if("string"!=typeof h.p2s)throw new c.JWEInvalid('JOSE Header "p2s" (PBES2 Salt) missing or invalid');try{n=(0,s.decode)(h.p2s)}catch{throw new c.JWEInvalid("Failed to base64url decode the p2s")}return(0,i.decrypt)(e,t,r,h.p2c,n)}case"A128KW":case"A192KW":case"A256KW":if(void 0===r)throw new c.JWEInvalid("JWE Encrypted Key missing");return(0,n.unwrap)(e,t,r);case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":{let n,o;if(void 0===r)throw new c.JWEInvalid("JWE Encrypted Key missing");if("string"!=typeof h.iv)throw new c.JWEInvalid('JOSE Header "iv" (Initialization Vector) missing or invalid');if("string"!=typeof h.tag)throw new c.JWEInvalid('JOSE Header "tag" (Authentication Tag) missing or invalid');try{n=(0,s.decode)(h.iv)}catch{throw new c.JWEInvalid("Failed to base64url decode the iv")}try{o=(0,s.decode)(h.tag)}catch{throw new c.JWEInvalid("Failed to base64url decode the tag")}return(0,f.unwrap)(e,t,r,n,o)}default:throw new c.JOSENotSupported('Invalid or unsupported "alg" (JWE Algorithm) header value')}}t.default=h},60730:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(91988),o=r(57734),i=r(96679),a=r(86332),s=r(75906),c=r(74053),l=r(45099),u=r(94315),d=r(13410),p=r(66168);async function f(e,t,r,f,h={}){let y,_,m;switch((0,d.default)(e,r,"encrypt"),e){case"dir":m=r;break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{if(!o.ecdhAllowed(r))throw new l.JOSENotSupported("ECDH with the provided key is not allowed or not supported by your javascript runtime");let{apu:i,apv:a}=h,{epk:d}=h;d||(d=(await o.generateEpk(r)).privateKey);let{x:p,y:g,crv:v,kty:w}=await (0,u.exportJWK)(d),b=await o.deriveKey(r,d,"ECDH-ES"===e?t:e,"ECDH-ES"===e?(0,c.bitLength)(t):parseInt(e.slice(-5,-2),10),i,a);if(_={epk:{x:p,crv:v,kty:w}},"EC"===w&&(_.epk.y=g),i&&(_.apu=(0,s.encode)(i)),a&&(_.apv=(0,s.encode)(a)),"ECDH-ES"===e){m=b;break}m=f||(0,c.default)(t);let k=e.slice(-6);y=await (0,n.wrap)(k,b,m);break}case"RSA1_5":case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":m=f||(0,c.default)(t),y=await (0,a.encrypt)(e,r,m);break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":{m=f||(0,c.default)(t);let{p2c:n,p2s:o}=h;({encryptedKey:y,..._}=await (0,i.encrypt)(e,r,m,n,o));break}case"A128KW":case"A192KW":case"A256KW":m=f||(0,c.default)(t),y=await (0,n.wrap)(e,r,m);break;case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":{m=f||(0,c.default)(t);let{iv:n}=h;({encryptedKey:y,..._}=await (0,p.wrap)(e,r,m,n));break}default:throw new l.JOSENotSupported('Invalid or unsupported "alg" (JWE Algorithm) header value')}return{cek:m,encryptedKey:y,parameters:_}}t.default=f},68205:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>Math.floor(e.getTime()/1e3)},32585:(e,t)=>{"use strict";function r(e,t,...n){if(n.length>2){let t=n.pop();e+=`one of type ${n.join(", ")}, or ${t}.`}else 2===n.length?e+=`one of type ${n[0]} or ${n[1]}.`:e+=`of type ${n[0]}.`;return null==t?e+=` Received ${t}`:"function"==typeof t&&t.name?e+=` Received function ${t.name}`:"object"==typeof t&&null!=t&&t.constructor&&t.constructor.name&&(e+=` Received an instance of ${t.constructor.name}`),e}Object.defineProperty(t,"__esModule",{value:!0}),t.withAlg=void 0,t.default=(e,...t)=>r("Key must be ",e,...t),t.withAlg=function(e,t,...n){return r(`Key for the ${e} algorithm must be `,t,...n)}},66856:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=(...e)=>{let t;let r=e.filter(Boolean);if(0===r.length||1===r.length)return!0;for(let e of r){let r=Object.keys(e);if(!t||0===t.size){t=new Set(r);continue}for(let e of r){if(t.has(e))return!1;t.add(e)}}return!0}},87144:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(!("object"==typeof e&&null!==e)||"[object Object]"!==Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}},95426:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bitLength=void 0;let n=r(45099),o=r(74344);function i(e){switch(e){case"A128GCM":case"A128GCMKW":case"A192GCM":case"A192GCMKW":case"A256GCM":case"A256GCMKW":return 96;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":return 128;default:throw new n.JOSENotSupported(`Unsupported JWE Algorithm: ${e}`)}}t.bitLength=i,t.default=e=>(0,o.default)(new Uint8Array(i(e)>>3))},44545:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(45099),o=r(36088),i=r(68205),a=r(55831),s=r(87144),c=e=>e.toLowerCase().replace(/^application\//,""),l=(e,t)=>"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)));t.default=(e,t,r={})=>{let u,d;let{typ:p}=r;if(p&&("string"!=typeof e.typ||c(e.typ)!==c(p)))throw new n.JWTClaimValidationFailed('unexpected "typ" JWT header value',"typ","check_failed");try{u=JSON.parse(o.decoder.decode(t))}catch{}if(!(0,s.default)(u))throw new n.JWTInvalid("JWT Claims Set must be a top-level JSON object");let{requiredClaims:f=[],issuer:h,subject:y,audience:_,maxTokenAge:m}=r;for(let e of(void 0!==m&&f.push("iat"),void 0!==_&&f.push("aud"),void 0!==y&&f.push("sub"),void 0!==h&&f.push("iss"),new Set(f.reverse())))if(!(e in u))throw new n.JWTClaimValidationFailed(`missing required "${e}" claim`,e,"missing");if(h&&!(Array.isArray(h)?h:[h]).includes(u.iss))throw new n.JWTClaimValidationFailed('unexpected "iss" claim value',"iss","check_failed");if(y&&u.sub!==y)throw new n.JWTClaimValidationFailed('unexpected "sub" claim value',"sub","check_failed");if(_&&!l(u.aud,"string"==typeof _?[_]:_))throw new n.JWTClaimValidationFailed('unexpected "aud" claim value',"aud","check_failed");switch(typeof r.clockTolerance){case"string":d=(0,a.default)(r.clockTolerance);break;case"number":d=r.clockTolerance;break;case"undefined":d=0;break;default:throw TypeError("Invalid clockTolerance option type")}let{currentDate:g}=r,v=(0,i.default)(g||new Date);if((void 0!==u.iat||m)&&"number"!=typeof u.iat)throw new n.JWTClaimValidationFailed('"iat" claim must be a number',"iat","invalid");if(void 0!==u.nbf){if("number"!=typeof u.nbf)throw new n.JWTClaimValidationFailed('"nbf" claim must be a number',"nbf","invalid");if(u.nbf>v+d)throw new n.JWTClaimValidationFailed('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==u.exp){if("number"!=typeof u.exp)throw new n.JWTClaimValidationFailed('"exp" claim must be a number',"exp","invalid");if(u.exp<=v-d)throw new n.JWTExpired('"exp" claim timestamp check failed',"exp","check_failed")}if(m){let e=v-u.iat;if(e-d>("number"==typeof m?m:(0,a.default)(m)))throw new n.JWTExpired('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(e<0-d)throw new n.JWTClaimValidationFailed('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return u}},55831:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let r=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i;t.default=e=>{let t=r.exec(e);if(!t)throw TypeError("Invalid time period format");let n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(86400*n);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}}},79218:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{if(void 0!==t&&(!Array.isArray(t)||t.some(e=>"string"!=typeof e)))throw TypeError(`"${e}" option must be an array of strings`);if(t)return new Set(t)}},98550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(45099);t.default=function(e,t,r,o,i){let a;if(void 0!==i.crit&&void 0===o.crit)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!o||void 0===o.crit)return new Set;if(!Array.isArray(o.crit)||0===o.crit.length||o.crit.some(e=>"string"!=typeof e||0===e.length))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');for(let s of(a=void 0!==r?new Map([...Object.entries(r),...t.entries()]):t,o.crit)){if(!a.has(s))throw new n.JOSENotSupported(`Extension Header Parameter "${s}" is not recognized`);if(void 0===i[s])throw new e(`Extension Header Parameter "${s}" is missing`);if(a.get(s)&&void 0===o[s])throw new e(`Extension Header Parameter "${s}" MUST be integrity protected`)}return new Set(o.crit)}},91988:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unwrap=t.wrap=void 0;let n=r(78893),o=r(84770),i=r(45099),a=r(36088),s=r(84426),c=r(49023),l=r(83312),u=r(32585),d=r(29239),p=r(81943);function f(e,t){if(e.symmetricKeySize<<3!==parseInt(t.slice(1,4),10))throw TypeError(`Invalid key size for alg: ${t}`)}function h(e,t,r){if((0,l.default)(e))return e;if(e instanceof Uint8Array)return(0,o.createSecretKey)(e);if((0,s.isCryptoKey)(e))return(0,c.checkEncCryptoKey)(e,t,r),o.KeyObject.from(e);throw TypeError((0,u.default)(e,...p.types,"Uint8Array"))}t.wrap=(e,t,r)=>{let s=parseInt(e.slice(1,4),10),c=`aes${s}-wrap`;if(!(0,d.default)(c))throw new i.JOSENotSupported(`alg ${e} is not supported either by JOSE or your javascript runtime`);let l=h(t,e,"wrapKey");f(l,e);let u=(0,o.createCipheriv)(c,l,n.Buffer.alloc(8,166));return(0,a.concat)(u.update(r),u.final())},t.unwrap=(e,t,r)=>{let s=parseInt(e.slice(1,4),10),c=`aes${s}-wrap`;if(!(0,d.default)(c))throw new i.JOSENotSupported(`alg ${e} is not supported either by JOSE or your javascript runtime`);let l=h(t,e,"unwrapKey");f(l,e);let u=(0,o.createDecipheriv)(c,l,n.Buffer.alloc(8,166));return(0,a.concat)(u.update(r),u.final())}},50502:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fromX509=t.fromSPKI=t.fromPKCS8=t.toPKCS8=t.toSPKI=void 0;let n=r(84770),o=r(78893),i=r(84426),a=r(83312),s=r(32585),c=r(81943),l=(e,t,r)=>{let o;if((0,i.isCryptoKey)(r)){if(!r.extractable)throw TypeError("CryptoKey is not extractable");o=n.KeyObject.from(r)}else if((0,a.default)(r))o=r;else throw TypeError((0,s.default)(r,...c.types));if(o.type!==e)throw TypeError(`key is not a ${e} key`);return o.export({format:"pem",type:t})};t.toSPKI=e=>l("public","spki",e),t.toPKCS8=e=>l("private","pkcs8",e),t.fromPKCS8=e=>(0,n.createPrivateKey)({key:o.Buffer.from(e.replace(/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g,""),"base64"),type:"pkcs8",format:"der"}),t.fromSPKI=e=>(0,n.createPublicKey)({key:o.Buffer.from(e.replace(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\s)/g,""),"base64"),type:"spki",format:"der"}),t.fromX509=e=>(0,n.createPublicKey)({key:e,type:"spki",format:"pem"})},51282:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e){if(48!==e[0]||(this.buffer=e,this.offset=1,this.decodeLength()!==e.length-this.offset))throw TypeError()}decodeLength(){let e=this.buffer[this.offset++];if(128&e){let t=-129&e;e=0;for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(78893),o=r(45099),i=n.Buffer.from([0]),a=n.Buffer.from([2]),s=n.Buffer.from([3]),c=n.Buffer.from([48]),l=n.Buffer.from([4]),u=e=>{if(e<128)return n.Buffer.from([e]);let t=n.Buffer.alloc(5);t.writeUInt32BE(e,1);let r=1;for(;0===t[r];)r++;return t[r-1]=128|5-r,t.slice(r-1)},d=new Map([["P-256",n.Buffer.from("06 08 2A 86 48 CE 3D 03 01 07".replace(/ /g,""),"hex")],["secp256k1",n.Buffer.from("06 05 2B 81 04 00 0A".replace(/ /g,""),"hex")],["P-384",n.Buffer.from("06 05 2B 81 04 00 22".replace(/ /g,""),"hex")],["P-521",n.Buffer.from("06 05 2B 81 04 00 23".replace(/ /g,""),"hex")],["ecPublicKey",n.Buffer.from("06 07 2A 86 48 CE 3D 02 01".replace(/ /g,""),"hex")],["X25519",n.Buffer.from("06 03 2B 65 6E".replace(/ /g,""),"hex")],["X448",n.Buffer.from("06 03 2B 65 6F".replace(/ /g,""),"hex")],["Ed25519",n.Buffer.from("06 03 2B 65 70".replace(/ /g,""),"hex")],["Ed448",n.Buffer.from("06 03 2B 65 71".replace(/ /g,""),"hex")]]);class p{constructor(){this.length=0,this.elements=[]}oidFor(e){let t=d.get(e);if(!t)throw new o.JOSENotSupported("Invalid or unsupported OID");this.elements.push(t),this.length+=t.length}zero(){this.elements.push(a,n.Buffer.from([1]),i),this.length+=3}one(){this.elements.push(a,n.Buffer.from([1]),n.Buffer.from([1])),this.length+=3}unsignedInteger(e){if(128&e[0]){let t=u(e.length+1);this.elements.push(a,t,i,e),this.length+=2+t.length+e.length}else{let t=0;for(;0===e[t]&&(128&e[t+1])==0;)t++;let r=u(e.length-t);this.elements.push(a,u(e.length-t),e.slice(t)),this.length+=1+r.length+e.length-t}}octStr(e){let t=u(e.length);this.elements.push(l,u(e.length),e),this.length+=1+t.length+e.length}bitStr(e){let t=u(e.length+1);this.elements.push(s,u(e.length+1),i,e),this.length+=1+t.length+e.length+1}add(e){this.elements.push(e),this.length+=e.length}end(e=c){let t=u(this.length);return n.Buffer.concat([e,t,...this.elements],1+t.length+this.length)}}t.default=p},75906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=t.encodeBase64=t.decodeBase64=void 0;let n=r(78893),o=r(36088);n.Buffer.isEncoding("base64url")?t.encode=e=>n.Buffer.from(e).toString("base64url"):t.encode=e=>n.Buffer.from(e).toString("base64").replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"),t.decodeBase64=e=>n.Buffer.from(e,"base64"),t.encodeBase64=e=>n.Buffer.from(e).toString("base64"),t.decode=e=>n.Buffer.from(function(e){let t=e;return t instanceof Uint8Array&&(t=o.decoder.decode(t)),t}(e),"base64")},71718:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770),o=r(36088);t.default=function(e,t,r,i,a,s){let c=(0,o.concat)(e,t,r,(0,o.uint64be)(e.length<<3)),l=(0,n.createHmac)(`sha${i}`,a);return l.update(c),l.digest().slice(0,s>>3)}},50300:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(45099),o=r(83312);t.default=(e,t)=>{let r;switch(e){case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":r=parseInt(e.slice(-3),10);break;case"A128GCM":case"A192GCM":case"A256GCM":r=parseInt(e.slice(1,4),10);break;default:throw new n.JOSENotSupported(`Content Encryption Algorithm ${e} is not supported either by JOSE or your javascript runtime`)}if(t instanceof Uint8Array){let e=t.byteLength<<3;if(e!==r)throw new n.JWEInvalid(`Invalid Content Encryption Key length. Expected ${r} bits, got ${e} bits`);return}if((0,o.default)(t)&&"secret"===t.type){let e=t.symmetricKeySize<<3;if(e!==r)throw new n.JWEInvalid(`Invalid Content Encryption Key length. Expected ${r} bits, got ${e} bits`);return}throw TypeError("Invalid Content Encryption Key type")}},80822:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setModulusLength=t.weakMap=void 0,t.weakMap=new WeakMap;let r=(e,t)=>{let n=e.readUInt8(1);if((128&n)==0)return 0===t?n:r(e.subarray(2+n),t-1);let o=127&n;n=0;for(let t=0;t{let n=e.readUInt8(1);return(128&n)==0?r(e.subarray(2),t):r(e.subarray(2+(127&n)),t)},o=e=>{var r,o;if(t.weakMap.has(e))return t.weakMap.get(e);let i=null!==(o=null===(r=e.asymmetricKeyDetails)||void 0===r?void 0:r.modulusLength)&&void 0!==o?o:n(e.export({format:"der",type:"pkcs1"}),"private"===e.type?1:0)-1<<3;return t.weakMap.set(e,i),i};t.setModulusLength=(e,r)=>{t.weakMap.set(e,r)},t.default=(e,t)=>{if(2048>o(e))throw TypeError(`${t} requires key modulusLength to be 2048 bits or larger`)}},29239:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0});let o=r(84770);t.default=e=>(n||(n=new Set((0,o.getCiphers)())),n.has(e))},25795:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770),o=r(31602),i=r(50300),a=r(36088),s=r(45099),c=r(21203),l=r(71718),u=r(84426),d=r(49023),p=r(83312),f=r(32585),h=r(29239),y=r(81943);t.default=(e,t,r,_,m,g)=>{let v;if((0,u.isCryptoKey)(t))(0,d.checkEncCryptoKey)(t,e,"decrypt"),v=n.KeyObject.from(t);else if(t instanceof Uint8Array||(0,p.default)(t))v=t;else throw TypeError((0,f.default)(t,...y.types,"Uint8Array"));switch((0,i.default)(e,v),(0,o.default)(e,_),e){case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":return function(e,t,r,o,i,u){let d,f;let y=parseInt(e.slice(1,4),10);(0,p.default)(t)&&(t=t.export());let _=t.subarray(y>>3),m=t.subarray(0,y>>3),g=parseInt(e.slice(-3),10),v=`aes-${y}-cbc`;if(!(0,h.default)(v))throw new s.JOSENotSupported(`alg ${e} is not supported by your javascript runtime`);let w=(0,l.default)(u,o,r,g,m,y);try{d=(0,c.default)(i,w)}catch{}if(!d)throw new s.JWEDecryptionFailed;try{let e=(0,n.createDecipheriv)(v,_,o);f=(0,a.concat)(e.update(r),e.final())}catch{}if(!f)throw new s.JWEDecryptionFailed;return f}(e,v,r,_,m,g);case"A128GCM":case"A192GCM":case"A256GCM":return function(e,t,r,o,i,a){let c=parseInt(e.slice(1,4),10),l=`aes-${c}-gcm`;if(!(0,h.default)(l))throw new s.JOSENotSupported(`alg ${e} is not supported by your javascript runtime`);try{let e=(0,n.createDecipheriv)(l,t,o,{authTagLength:16});e.setAuthTag(i),a.byteLength&&e.setAAD(a,{plaintextLength:r.length});let s=e.update(r);return e.final(),s}catch{throw new s.JWEDecryptionFailed}}(e,v,r,_,m,g);default:throw new s.JOSENotSupported("Unsupported JWE Content Encryption Algorithm")}}},53078:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770);t.default=(e,t)=>(0,n.createHash)(e).update(t).digest()},34967:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(45099);t.default=function(e){switch(e){case"PS256":case"RS256":case"ES256":case"ES256K":return"sha256";case"PS384":case"RS384":case"ES384":return"sha384";case"PS512":case"RS512":case"ES512":return"sha512";case"EdDSA":return;default:throw new n.JOSENotSupported(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}},57734:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ecdhAllowed=t.generateEpk=t.deriveKey=void 0;let n=r(84770),o=r(21764),i=r(64219),a=r(36088),s=r(45099),c=r(84426),l=r(49023),u=r(83312),d=r(32585),p=r(81943),f=(0,o.promisify)(n.generateKeyPair);async function h(e,t,r,o,i=new Uint8Array(0),s=new Uint8Array(0)){let f,h;if((0,c.isCryptoKey)(e))(0,l.checkEncCryptoKey)(e,"ECDH"),f=n.KeyObject.from(e);else if((0,u.default)(e))f=e;else throw TypeError((0,d.default)(e,...p.types));if((0,c.isCryptoKey)(t))(0,l.checkEncCryptoKey)(t,"ECDH","deriveBits"),h=n.KeyObject.from(t);else if((0,u.default)(t))h=t;else throw TypeError((0,d.default)(t,...p.types));let y=(0,a.concat)((0,a.lengthAndInput)(a.encoder.encode(r)),(0,a.lengthAndInput)(i),(0,a.lengthAndInput)(s),(0,a.uint32be)(o)),_=(0,n.diffieHellman)({privateKey:h,publicKey:f});return(0,a.concatKdf)(_,o,y)}async function y(e){let t;if((0,c.isCryptoKey)(e))t=n.KeyObject.from(e);else if((0,u.default)(e))t=e;else throw TypeError((0,d.default)(e,...p.types));switch(t.asymmetricKeyType){case"x25519":return f("x25519");case"x448":return f("x448");case"ec":return f("ec",{namedCurve:(0,i.default)(t)});default:throw new s.JOSENotSupported("Invalid or unsupported EPK")}}t.deriveKey=h,t.generateEpk=y,t.ecdhAllowed=e=>["P-256","P-384","P-521","X25519","X448"].includes((0,i.default)(e))},62519:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770),o=r(31602),i=r(50300),a=r(36088),s=r(71718),c=r(84426),l=r(49023),u=r(83312),d=r(32585),p=r(45099),f=r(29239),h=r(81943);t.default=(e,t,r,y,_)=>{let m;if((0,c.isCryptoKey)(r))(0,l.checkEncCryptoKey)(r,e,"encrypt"),m=n.KeyObject.from(r);else if(r instanceof Uint8Array||(0,u.default)(r))m=r;else throw TypeError((0,d.default)(r,...h.types,"Uint8Array"));switch((0,i.default)(e,m),(0,o.default)(e,y),e){case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":return function(e,t,r,o,i){let c=parseInt(e.slice(1,4),10);(0,u.default)(r)&&(r=r.export());let l=r.subarray(c>>3),d=r.subarray(0,c>>3),h=`aes-${c}-cbc`;if(!(0,f.default)(h))throw new p.JOSENotSupported(`alg ${e} is not supported by your javascript runtime`);let y=(0,n.createCipheriv)(h,l,o),_=(0,a.concat)(y.update(t),y.final()),m=parseInt(e.slice(-3),10),g=(0,s.default)(i,o,_,m,d,c);return{ciphertext:_,tag:g}}(e,t,m,y,_);case"A128GCM":case"A192GCM":case"A256GCM":return function(e,t,r,o,i){let a=parseInt(e.slice(1,4),10),s=`aes-${a}-gcm`;if(!(0,f.default)(s))throw new p.JOSENotSupported(`alg ${e} is not supported by your javascript runtime`);let c=(0,n.createCipheriv)(s,r,o,{authTagLength:16});i.byteLength&&c.setAAD(i,{plaintextLength:t.length});let l=c.update(t);return c.final(),{ciphertext:l,tag:c.getAuthTag()}}(e,t,m,y,_);default:throw new p.JOSENotSupported("Unsupported JWE Content Encryption Algorithm")}}},65828:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(32615),o=r(35240),i=r(17702),a=r(45099),s=r(36088),c=async(e,t,r)=>{let c;switch(e.protocol){case"https:":c=o.get;break;case"http:":c=n.get;break;default:throw TypeError("Unsupported URL protocol.")}let{agent:l,headers:u}=r,d=c(e.href,{agent:l,timeout:t,headers:u}),[p]=await Promise.race([(0,i.once)(d,"response"),(0,i.once)(d,"timeout")]);if(!p)throw d.destroy(),new a.JWKSTimeout;if(200!==p.statusCode)throw new a.JOSEError("Expected 200 OK from the JSON Web Key Set HTTP response");let f=[];for await(let e of p)f.push(e);try{return JSON.parse(s.decoder.decode((0,s.concat)(...f)))}catch{throw new a.JOSEError("Failed to parse the JSON Web Key Set HTTP response as JSON")}};t.default=c},77637:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.jwkImport=t.jwkExport=t.rsaPssParams=t.oneShotCallback=void 0;let[r,n]=process.versions.node.split(".").map(e=>parseInt(e,10));t.oneShotCallback=r>=16||15===r&&n>=13,t.rsaPssParams=!("electron"in process.versions)&&(r>=17||16===r&&n>=9),t.jwkExport=r>=16||15===r&&n>=9,t.jwkImport=r>=16||15===r&&n>=12},80138:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.generateKeyPair=t.generateSecret=void 0;let n=r(84770),o=r(21764),i=r(74344),a=r(80822),s=r(45099),c=(0,o.promisify)(n.generateKeyPair);async function l(e,t){let r;switch(e){case"HS256":case"HS384":case"HS512":case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":r=parseInt(e.slice(-3),10);break;case"A128KW":case"A192KW":case"A256KW":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":case"A128GCM":case"A192GCM":case"A256GCM":r=parseInt(e.slice(1,4),10);break;default:throw new s.JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}return(0,n.createSecretKey)((0,i.default)(new Uint8Array(r>>3)))}async function u(e,t){var r,n;switch(e){case"RS256":case"RS384":case"RS512":case"PS256":case"PS384":case"PS512":case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":case"RSA1_5":{let e=null!==(r=null==t?void 0:t.modulusLength)&&void 0!==r?r:2048;if("number"!=typeof e||e<2048)throw new s.JOSENotSupported("Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used");let n=await c("rsa",{modulusLength:e,publicExponent:65537});return(0,a.setModulusLength)(n.privateKey,e),(0,a.setModulusLength)(n.publicKey,e),n}case"ES256":return c("ec",{namedCurve:"P-256"});case"ES256K":return c("ec",{namedCurve:"secp256k1"});case"ES384":return c("ec",{namedCurve:"P-384"});case"ES512":return c("ec",{namedCurve:"P-521"});case"EdDSA":switch(null==t?void 0:t.crv){case void 0:case"Ed25519":return c("ed25519");case"Ed448":return c("ed448");default:throw new s.JOSENotSupported("Invalid or unsupported crv option provided, supported values are Ed25519 and Ed448")}case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":let o=null!==(n=null==t?void 0:t.crv)&&void 0!==n?n:"P-256";switch(o){case void 0:case"P-256":case"P-384":case"P-521":return c("ec",{namedCurve:o});case"X25519":return c("x25519");case"X448":return c("x448");default:throw new s.JOSENotSupported("Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, X25519, and X448")}default:throw new s.JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}}t.generateSecret=l,t.generateKeyPair=u},64219:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setCurve=t.weakMap=void 0;let n=r(78893),o=r(84770),i=r(45099),a=r(84426),s=r(83312),c=r(32585),l=r(81943),u=n.Buffer.from([42,134,72,206,61,3,1,7]),d=n.Buffer.from([43,129,4,0,34]),p=n.Buffer.from([43,129,4,0,35]),f=n.Buffer.from([43,129,4,0,10]);t.weakMap=new WeakMap;let h=e=>{switch(e){case"prime256v1":return"P-256";case"secp384r1":return"P-384";case"secp521r1":return"P-521";case"secp256k1":return"secp256k1";default:throw new i.JOSENotSupported("Unsupported key curve for this operation")}},y=(e,r)=>{var n;let _;if((0,a.isCryptoKey)(e))_=o.KeyObject.from(e);else if((0,s.default)(e))_=e;else throw TypeError((0,c.default)(e,...l.types));if("secret"===_.type)throw TypeError('only "private" or "public" type keys can be used for this operation');switch(_.asymmetricKeyType){case"ed25519":case"ed448":return`Ed${_.asymmetricKeyType.slice(2)}`;case"x25519":case"x448":return`X${_.asymmetricKeyType.slice(1)}`;case"ec":{if(t.weakMap.has(_))return t.weakMap.get(_);let e=null===(n=_.asymmetricKeyDetails)||void 0===n?void 0:n.namedCurve;if(e||"private"!==_.type){if(!e){let t=_.export({format:"der",type:"spki"}),r=t[1]<128?14:15,n=t[r],o=t.slice(r+1,r+1+n);if(o.equals(u))e="prime256v1";else if(o.equals(d))e="secp384r1";else if(o.equals(p))e="secp521r1";else if(o.equals(f))e="secp256k1";else throw new i.JOSENotSupported("Unsupported key curve for this operation")}}else e=y((0,o.createPublicKey)(_),!0);if(r)return e;let a=h(e);return t.weakMap.set(_,a),a}default:throw TypeError("Invalid asymmetric key type for this operation")}};t.setCurve=function(e,r){t.weakMap.set(e,r)},t.default=y},20474:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770),o=r(84426),i=r(49023),a=r(32585),s=r(81943);t.default=function(e,t,r){if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw TypeError((0,a.default)(t,...s.types));return(0,n.createSecretKey)(t)}if(t instanceof n.KeyObject)return t;if((0,o.isCryptoKey)(t))return(0,i.checkSigCryptoKey)(t,e,r),n.KeyObject.from(t);throw TypeError((0,a.default)(t,...s.types,"Uint8Array"))}},49258:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(45099);t.default=function(e){switch(e){case"HS256":return"sha256";case"HS384":return"sha384";case"HS512":return"sha512";default:throw new n.JOSENotSupported(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}},81943:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.types=void 0;let n=r(84426),o=r(83312);t.default=e=>(0,o.default)(e)||(0,n.isCryptoKey)(e);let i=["KeyObject"];t.types=i,(globalThis.CryptoKey||(null===n.default||void 0===n.default?void 0:n.default.CryptoKey))&&i.push("CryptoKey")},83312:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770),o=r(21764);t.default=o.types.isKeyObject?e=>o.types.isKeyObject(e):e=>null!=e&&e instanceof n.KeyObject},57083:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(78893),o=r(84770),i=r(75906),a=r(45099),s=r(64219),c=r(80822),l=r(17179),u=r(77637);t.default=e=>{if(u.jwkImport&&"oct"!==e.kty)return e.d?(0,o.createPrivateKey)({format:"jwk",key:e}):(0,o.createPublicKey)({format:"jwk",key:e});switch(e.kty){case"oct":return(0,o.createSecretKey)((0,i.decode)(e.k));case"RSA":{let t=new l.default,r=void 0!==e.d,i=n.Buffer.from(e.n,"base64"),a=n.Buffer.from(e.e,"base64");r?(t.zero(),t.unsignedInteger(i),t.unsignedInteger(a),t.unsignedInteger(n.Buffer.from(e.d,"base64")),t.unsignedInteger(n.Buffer.from(e.p,"base64")),t.unsignedInteger(n.Buffer.from(e.q,"base64")),t.unsignedInteger(n.Buffer.from(e.dp,"base64")),t.unsignedInteger(n.Buffer.from(e.dq,"base64")),t.unsignedInteger(n.Buffer.from(e.qi,"base64"))):(t.unsignedInteger(i),t.unsignedInteger(a));let s={key:t.end(),format:"der",type:"pkcs1"},u=r?(0,o.createPrivateKey)(s):(0,o.createPublicKey)(s);return(0,c.setModulusLength)(u,i.length<<3),u}case"EC":{let t=new l.default,r=void 0!==e.d,i=n.Buffer.concat([n.Buffer.alloc(1,4),n.Buffer.from(e.x,"base64"),n.Buffer.from(e.y,"base64")]);if(r){t.zero();let r=new l.default;r.oidFor("ecPublicKey"),r.oidFor(e.crv),t.add(r.end());let a=new l.default;a.one(),a.octStr(n.Buffer.from(e.d,"base64"));let c=new l.default;c.bitStr(i);let u=c.end(n.Buffer.from([161]));a.add(u);let d=a.end(),p=new l.default;p.add(d);let f=p.end(n.Buffer.from([4]));t.add(f);let h=t.end(),y=(0,o.createPrivateKey)({key:h,format:"der",type:"pkcs8"});return(0,s.setCurve)(y,e.crv),y}let a=new l.default;a.oidFor("ecPublicKey"),a.oidFor(e.crv),t.add(a.end()),t.bitStr(i);let c=t.end(),u=(0,o.createPublicKey)({key:c,format:"der",type:"spki"});return(0,s.setCurve)(u,e.crv),u}case"OKP":{let t=new l.default;if(void 0!==e.d){t.zero();let r=new l.default;r.oidFor(e.crv),t.add(r.end());let i=new l.default;i.octStr(n.Buffer.from(e.d,"base64"));let a=i.end(n.Buffer.from([4]));t.add(a);let s=t.end();return(0,o.createPrivateKey)({key:s,format:"der",type:"pkcs8"})}let r=new l.default;r.oidFor(e.crv),t.add(r.end()),t.bitStr(n.Buffer.from(e.x,"base64"));let i=t.end();return(0,o.createPublicKey)({key:i,format:"der",type:"spki"})}default:throw new a.JOSENotSupported('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}}},13465:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770),o=r(75906),i=r(51282),a=r(45099),s=r(64219),c=r(84426),l=r(83312),u=r(32585),d=r(81943),p=r(77637),f=e=>{let t;if((0,c.isCryptoKey)(e)){if(!e.extractable)throw TypeError("CryptoKey is not extractable");t=n.KeyObject.from(e)}else if((0,l.default)(e))t=e;else if(e instanceof Uint8Array)return{kty:"oct",k:(0,o.encode)(e)};else throw TypeError((0,u.default)(e,...d.types,"Uint8Array"));if(p.jwkExport){if("secret"!==t.type&&!["rsa","ec","ed25519","x25519","ed448","x448"].includes(t.asymmetricKeyType))throw new a.JOSENotSupported("Unsupported key asymmetricKeyType");return t.export({format:"jwk"})}switch(t.type){case"secret":return{kty:"oct",k:(0,o.encode)(t.export())};case"private":case"public":switch(t.asymmetricKeyType){case"rsa":{let e;let r=t.export({format:"der",type:"pkcs1"}),n=new i.default(r);"private"===t.type&&n.unsignedInteger();let a=(0,o.encode)(n.unsignedInteger()),s=(0,o.encode)(n.unsignedInteger());return"private"===t.type&&(e={d:(0,o.encode)(n.unsignedInteger()),p:(0,o.encode)(n.unsignedInteger()),q:(0,o.encode)(n.unsignedInteger()),dp:(0,o.encode)(n.unsignedInteger()),dq:(0,o.encode)(n.unsignedInteger()),qi:(0,o.encode)(n.unsignedInteger())}),n.end(),{kty:"RSA",n:a,e:s,...e}}case"ec":{let e,r,i;let c=(0,s.default)(t);switch(c){case"secp256k1":e=64,r=33,i=-1;break;case"P-256":e=64,r=36,i=-1;break;case"P-384":e=96,r=35,i=-3;break;case"P-521":e=132,r=35,i=-3;break;default:throw new a.JOSENotSupported("Unsupported curve")}if("public"===t.type){let r=t.export({type:"spki",format:"der"});return{kty:"EC",crv:c,x:(0,o.encode)(r.subarray(-e,-e/2)),y:(0,o.encode)(r.subarray(-e/2))}}let l=t.export({type:"pkcs8",format:"der"});return l.length<100&&(r+=i),{...f((0,n.createPublicKey)(t)),d:(0,o.encode)(l.subarray(r,r+e/2))}}case"ed25519":case"x25519":{let e=(0,s.default)(t);if("public"===t.type){let r=t.export({type:"spki",format:"der"});return{kty:"OKP",crv:e,x:(0,o.encode)(r.subarray(-32))}}let r=t.export({type:"pkcs8",format:"der"});return{...f((0,n.createPublicKey)(t)),d:(0,o.encode)(r.subarray(-32))}}case"ed448":case"x448":{let e=(0,s.default)(t);if("public"===t.type){let r=t.export({type:"spki",format:"der"});return{kty:"OKP",crv:e,x:(0,o.encode)(r.subarray("Ed448"===e?-57:-56))}}let r=t.export({type:"pkcs8",format:"der"});return{...f((0,n.createPublicKey)(t)),d:(0,o.encode)(r.subarray("Ed448"===e?-57:-56))}}default:throw new a.JOSENotSupported("Unsupported key asymmetricKeyType")}default:throw new a.JOSENotSupported("Unsupported key type")}};t.default=f},62132:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770),o=r(64219),i=r(45099),a=r(80822),s=r(77637),c={padding:n.constants.RSA_PKCS1_PSS_PADDING,saltLength:n.constants.RSA_PSS_SALTLEN_DIGEST},l=new Map([["ES256","P-256"],["ES256K","secp256k1"],["ES384","P-384"],["ES512","P-521"]]);t.default=function(e,t){switch(e){case"EdDSA":if(!["ed25519","ed448"].includes(t.asymmetricKeyType))throw TypeError("Invalid key for this operation, its asymmetricKeyType must be ed25519 or ed448");return t;case"RS256":case"RS384":case"RS512":if("rsa"!==t.asymmetricKeyType)throw TypeError("Invalid key for this operation, its asymmetricKeyType must be rsa");return(0,a.default)(t,e),t;case s.rsaPssParams&&"PS256":case s.rsaPssParams&&"PS384":case s.rsaPssParams&&"PS512":if("rsa-pss"===t.asymmetricKeyType){let{hashAlgorithm:r,mgf1HashAlgorithm:n,saltLength:o}=t.asymmetricKeyDetails,i=parseInt(e.slice(-3),10);if(void 0!==r&&(r!==`sha${i}`||n!==r))throw TypeError(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${e}`);if(void 0!==o&&o>i>>3)throw TypeError(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${e}`)}else if("rsa"!==t.asymmetricKeyType)throw TypeError("Invalid key for this operation, its asymmetricKeyType must be rsa or rsa-pss");return(0,a.default)(t,e),{key:t,...c};case!s.rsaPssParams&&"PS256":case!s.rsaPssParams&&"PS384":case!s.rsaPssParams&&"PS512":if("rsa"!==t.asymmetricKeyType)throw TypeError("Invalid key for this operation, its asymmetricKeyType must be rsa");return(0,a.default)(t,e),{key:t,...c};case"ES256":case"ES256K":case"ES384":case"ES512":{if("ec"!==t.asymmetricKeyType)throw TypeError("Invalid key for this operation, its asymmetricKeyType must be ec");let r=(0,o.default)(t),n=l.get(e);if(r!==n)throw TypeError(`Invalid key curve for the algorithm, its curve must be ${n}, got ${r}`);return{dsaEncoding:"ieee-p1363",key:t}}default:throw new i.JOSENotSupported(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}},96679:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decrypt=t.encrypt=void 0;let n=r(21764),o=r(84770),i=r(74344),a=r(36088),s=r(75906),c=r(91988),l=r(15732),u=r(84426),d=r(49023),p=r(83312),f=r(32585),h=r(81943),y=(0,n.promisify)(o.pbkdf2);function _(e,t){if((0,p.default)(e))return e.export();if(e instanceof Uint8Array)return e;if((0,u.isCryptoKey)(e))return(0,d.checkEncCryptoKey)(e,t,"deriveBits","deriveKey"),o.KeyObject.from(e).export();throw TypeError((0,f.default)(e,...h.types,"Uint8Array"))}let m=async(e,t,r,n=2048,o=(0,i.default)(new Uint8Array(16)))=>{(0,l.default)(o);let u=(0,a.p2s)(e,o),d=parseInt(e.slice(13,16),10)>>3,p=_(t,e),f=await y(p,u,n,d,`sha${e.slice(8,11)}`);return{encryptedKey:await (0,c.wrap)(e.slice(-6),f,r),p2c:n,p2s:(0,s.encode)(o)}};t.encrypt=m;let g=async(e,t,r,n,o)=>{(0,l.default)(o);let i=(0,a.p2s)(e,o),s=parseInt(e.slice(13,16),10)>>3,u=_(t,e),d=await y(u,i,n,s,`sha${e.slice(8,11)}`);return(0,c.unwrap)(e.slice(-6),d,r)};t.decrypt=g},74344:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(84770);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n.randomFillSync}})},86332:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decrypt=t.encrypt=void 0;let n=r(84770),o=r(80822),i=r(84426),a=r(49023),s=r(83312),c=r(32585),l=r(81943),u=(e,t)=>{if("rsa"!==e.asymmetricKeyType)throw TypeError("Invalid key for this operation, its asymmetricKeyType must be rsa");(0,o.default)(e,t)},d=e=>{switch(e){case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":return n.constants.RSA_PKCS1_OAEP_PADDING;case"RSA1_5":return n.constants.RSA_PKCS1_PADDING;default:return}},p=e=>{switch(e){case"RSA-OAEP":return"sha1";case"RSA-OAEP-256":return"sha256";case"RSA-OAEP-384":return"sha384";case"RSA-OAEP-512":return"sha512";default:return}};function f(e,t,...r){if((0,s.default)(e))return e;if((0,i.isCryptoKey)(e))return(0,a.checkEncCryptoKey)(e,t,...r),n.KeyObject.from(e);throw TypeError((0,c.default)(e,...l.types))}t.encrypt=(e,t,r)=>{let o=d(e),i=p(e),a=f(t,e,"wrapKey","encrypt");return u(a,e),(0,n.publicEncrypt)({key:a,oaepHash:i,padding:o},r)},t.decrypt=(e,t,r)=>{let o=d(e),i=p(e),a=f(t,e,"unwrapKey","decrypt");return u(a,e),(0,n.privateDecrypt)({key:a,oaepHash:i,padding:o},r)}},55493:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default="node:crypto"},88752:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0});let o=r(84770),i=r(21764),a=r(34967),s=r(49258),c=r(62132),l=r(20474);n=o.sign.length>3?(0,i.promisify)(o.sign):o.sign;let u=async(e,t,r)=>{let i=(0,l.default)(e,t,"sign");if(e.startsWith("HS")){let t=o.createHmac((0,s.default)(e),i);return t.update(r),t.digest()}return n((0,a.default)(e),r,(0,c.default)(e,i))};t.default=u},21203:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(84770).timingSafeEqual;t.default=n},34545:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0});let o=r(84770),i=r(21764),a=r(34967),s=r(62132),c=r(88752),l=r(20474),u=r(77637);n=o.verify.length>4&&u.oneShotCallback?(0,i.promisify)(o.verify):o.verify;let d=async(e,t,r,i)=>{let u=(0,l.default)(e,t,"verify");if(e.startsWith("HS")){let t=await (0,c.default)(e,u,i);try{return o.timingSafeEqual(r,t)}catch{return!1}}let d=(0,a.default)(e),p=(0,s.default)(e,u);try{return await n(d,i,p,r)}catch{return!1}};t.default=d},84426:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isCryptoKey=void 0;let n=r(84770),o=r(21764),i=n.webcrypto;t.default=i,t.isCryptoKey=o.types.isCryptoKey?e=>o.types.isCryptoKey(e):e=>!1},99359:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.deflate=t.inflate=void 0;let n=r(21764),o=r(71568),i=r(45099),a=(0,n.promisify)(o.inflateRaw),s=(0,n.promisify)(o.deflateRaw);t.inflate=e=>a(e,{maxOutputLength:25e4}).catch(()=>{throw new i.JWEDecompressionFailed}),t.deflate=e=>s(e)},74789:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;let n=r(75906);t.encode=n.encode,t.decode=n.decode},34407:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodeJwt=void 0;let n=r(74789),o=r(36088),i=r(87144),a=r(45099);t.decodeJwt=function(e){let t,r;if("string"!=typeof e)throw new a.JWTInvalid("JWTs must use Compact JWS serialization, JWT must be a string");let{1:s,length:c}=e.split(".");if(5===c)throw new a.JWTInvalid("Only JWTs using Compact JWS serialization can be decoded");if(3!==c)throw new a.JWTInvalid("Invalid JWT");if(!s)throw new a.JWTInvalid("JWTs must contain a payload");try{t=(0,n.decode)(s)}catch{throw new a.JWTInvalid("Failed to base64url decode the payload")}try{r=JSON.parse(o.decoder.decode(t))}catch{throw new a.JWTInvalid("Failed to parse the decoded payload as JSON")}if(!(0,i.default)(r))throw new a.JWTInvalid("Invalid JWT Claims Set");return r}},28679:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodeProtectedHeader=void 0;let n=r(74789),o=r(36088),i=r(87144);t.decodeProtectedHeader=function(e){let t;if("string"==typeof e){let r=e.split(".");(3===r.length||5===r.length)&&([t]=r)}else if("object"==typeof e&&e){if("protected"in e)t=e.protected;else throw TypeError("Token does not contain a Protected Header")}try{if("string"!=typeof t||!t)throw Error();let e=JSON.parse(o.decoder.decode((0,n.decode)(t)));if(!(0,i.default)(e))throw Error();return e}catch{throw TypeError("Invalid Token or Protected Header formatting")}}},45099:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JWSSignatureVerificationFailed=t.JWKSTimeout=t.JWKSMultipleMatchingKeys=t.JWKSNoMatchingKey=t.JWKSInvalid=t.JWKInvalid=t.JWTInvalid=t.JWSInvalid=t.JWEInvalid=t.JWEDecompressionFailed=t.JWEDecryptionFailed=t.JOSENotSupported=t.JOSEAlgNotAllowed=t.JWTExpired=t.JWTClaimValidationFailed=t.JOSEError=void 0;class r extends Error{static get code(){return"ERR_JOSE_GENERIC"}constructor(e){var t;super(e),this.code="ERR_JOSE_GENERIC",this.name=this.constructor.name,null===(t=Error.captureStackTrace)||void 0===t||t.call(Error,this,this.constructor)}}t.JOSEError=r;class n extends r{static get code(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}constructor(e,t="unspecified",r="unspecified"){super(e),this.code="ERR_JWT_CLAIM_VALIDATION_FAILED",this.claim=t,this.reason=r}}t.JWTClaimValidationFailed=n;class o extends r{static get code(){return"ERR_JWT_EXPIRED"}constructor(e,t="unspecified",r="unspecified"){super(e),this.code="ERR_JWT_EXPIRED",this.claim=t,this.reason=r}}t.JWTExpired=o;class i extends r{constructor(){super(...arguments),this.code="ERR_JOSE_ALG_NOT_ALLOWED"}static get code(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}t.JOSEAlgNotAllowed=i;class a extends r{constructor(){super(...arguments),this.code="ERR_JOSE_NOT_SUPPORTED"}static get code(){return"ERR_JOSE_NOT_SUPPORTED"}}t.JOSENotSupported=a;class s extends r{constructor(){super(...arguments),this.code="ERR_JWE_DECRYPTION_FAILED",this.message="decryption operation failed"}static get code(){return"ERR_JWE_DECRYPTION_FAILED"}}t.JWEDecryptionFailed=s;class c extends r{constructor(){super(...arguments),this.code="ERR_JWE_DECOMPRESSION_FAILED",this.message="decompression operation failed"}static get code(){return"ERR_JWE_DECOMPRESSION_FAILED"}}t.JWEDecompressionFailed=c;class l extends r{constructor(){super(...arguments),this.code="ERR_JWE_INVALID"}static get code(){return"ERR_JWE_INVALID"}}t.JWEInvalid=l;class u extends r{constructor(){super(...arguments),this.code="ERR_JWS_INVALID"}static get code(){return"ERR_JWS_INVALID"}}t.JWSInvalid=u;class d extends r{constructor(){super(...arguments),this.code="ERR_JWT_INVALID"}static get code(){return"ERR_JWT_INVALID"}}t.JWTInvalid=d;class p extends r{constructor(){super(...arguments),this.code="ERR_JWK_INVALID"}static get code(){return"ERR_JWK_INVALID"}}t.JWKInvalid=p;class f extends r{constructor(){super(...arguments),this.code="ERR_JWKS_INVALID"}static get code(){return"ERR_JWKS_INVALID"}}t.JWKSInvalid=f;class h extends r{constructor(){super(...arguments),this.code="ERR_JWKS_NO_MATCHING_KEY",this.message="no applicable key found in the JSON Web Key Set"}static get code(){return"ERR_JWKS_NO_MATCHING_KEY"}}t.JWKSNoMatchingKey=h;class y extends r{constructor(){super(...arguments),this.code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",this.message="multiple matching keys found in the JSON Web Key Set"}static get code(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}t.JWKSMultipleMatchingKeys=y,Symbol.asyncIterator;class _ extends r{constructor(){super(...arguments),this.code="ERR_JWKS_TIMEOUT",this.message="request timed out"}static get code(){return"ERR_JWKS_TIMEOUT"}}t.JWKSTimeout=_;class m extends r{constructor(){super(...arguments),this.code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",this.message="signature verification failed"}static get code(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}t.JWSSignatureVerificationFailed=m},75440:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(55493);t.default=n.default},85793:(e,t,r)=>{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.UnsupportedStrategy=t.UnknownError=t.OAuthCallbackError=t.MissingSecret=t.MissingAuthorize=t.MissingAdapterMethods=t.MissingAdapter=t.MissingAPIRoute=t.InvalidCallbackUrl=t.AccountNotLinkedError=void 0,t.adapterErrorHandler=function(e,t){if(e)return Object.keys(e).reduce(function(r,n){return r[n]=(0,i.default)(o.default.mark(function r(){var i,a,s,c,l,u=arguments;return o.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:for(r.prev=0,a=Array(i=u.length),s=0;s{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.AuthHandler=_;var o=f(r(80878)),i=r(35144),a=f(r(83081)),s=n(r(45606)),c=r(15663),l=r(76790),u=r(33656),d=r(43183);function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(p=function(e){return e?r:t})(e)}function f(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=p(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&({}).hasOwnProperty.call(e,i)){var a=o?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}async function h(e){try{return await e.json()}catch(e){}}async function y(e){var t,r,n,o;if(e instanceof Request){let t=new URL(e.url),a=t.pathname.split("/").slice(3),s=Object.fromEntries(e.headers),c=Object.fromEntries(t.searchParams);return c.nextauth=a,{action:a[0],method:e.method,headers:s,body:await h(e),cookies:(0,d.parse)(null!==(r=e.headers.get("cookie"))&&void 0!==r?r:""),providerId:a[1],error:null!==(n=t.searchParams.get("error"))&&void 0!==n?n:a[1],origin:(0,i.detectOrigin)(null!==(o=s["x-forwarded-host"])&&void 0!==o?o:s.host,s["x-forwarded-proto"]),query:c}}let{headers:a}=e,s=null!==(t=null==a?void 0:a["x-forwarded-host"])&&void 0!==t?t:null==a?void 0:a.host;return e.origin=(0,i.detectOrigin)(s,null==a?void 0:a["x-forwarded-proto"]),e}async function _(e){var t,r,n,i,d,p,f;let{options:h,req:_}=e,m=await y(_);(0,o.setLogger)(h.logger,h.debug);let g=(0,l.assertConfig)({options:h,req:m});if(Array.isArray(g))g.forEach(o.default.warn);else if(g instanceof Error){if(o.default.error(g.code,g),!["signin","signout","error","verify-request"].includes(m.action)||"GET"!==m.method)return{status:500,headers:[{key:"Content-Type",value:"application/json"}],body:{message:"There is a problem with the server configuration. Check the server logs for more information."}};let{pages:e,theme:t}=h,r=(null==e?void 0:e.error)&&(null===(d=m.query)||void 0===d||null===(d=d.callbackUrl)||void 0===d?void 0:d.startsWith(e.error));return!(null!=e&&e.error)||r?(r&&o.default.error("AUTH_ON_ERROR_PAGE_ERROR",Error(`The error page ${null==e?void 0:e.error} should not require authentication`)),(0,s.default)({theme:t}).error({error:"configuration"})):{redirect:`${e.error}?error=Configuration`}}let{action:v,providerId:w,error:b,method:k="GET"}=m,{options:S,cookies:E}=await (0,c.init)({authOptions:h,action:v,providerId:w,origin:m.origin,callbackUrl:null!==(t=null===(r=m.body)||void 0===r?void 0:r.callbackUrl)&&void 0!==t?t:null===(n=m.query)||void 0===n?void 0:n.callbackUrl,csrfToken:null===(i=m.body)||void 0===i?void 0:i.csrfToken,cookies:m.cookies,isPost:"POST"===k}),A=new u.SessionStore(S.cookies.sessionToken,m,S.logger);if("GET"===k){let e=(0,s.default)({...S,query:m.query,cookies:E}),{pages:t}=S;switch(v){case"providers":return await a.providers(S.providers);case"session":{let e=await a.session({options:S,sessionStore:A});return e.cookies&&E.push(...e.cookies),{...e,cookies:E}}case"csrf":return{headers:[{key:"Content-Type",value:"application/json"},{key:"Cache-Control",value:"private, no-cache, no-store"},{key:"Pragma",value:"no-cache"},{key:"Expires",value:"0"}],body:{csrfToken:S.csrfToken},cookies:E};case"signin":if(t.signIn){let e=`${t.signIn}${t.signIn.includes("?")?"&":"?"}callbackUrl=${encodeURIComponent(S.callbackUrl)}`;return b&&(e=`${e}&error=${encodeURIComponent(b)}`),{redirect:e,cookies:E}}return e.signin();case"signout":if(t.signOut)return{redirect:t.signOut,cookies:E};return e.signout();case"callback":if(S.provider){let e=await a.callback({body:m.body,query:m.query,headers:m.headers,cookies:m.cookies,method:k,options:S,sessionStore:A});return e.cookies&&E.push(...e.cookies),{...e,cookies:E}}break;case"verify-request":if(t.verifyRequest)return{redirect:t.verifyRequest,cookies:E};return e.verifyRequest();case"error":if(["Signin","OAuthSignin","OAuthCallback","OAuthCreateAccount","EmailCreateAccount","Callback","OAuthAccountNotLinked","EmailSignin","CredentialsSignin","SessionRequired"].includes(b))return{redirect:`${S.url}/signin?error=${b}`,cookies:E};if(t.error)return{redirect:`${t.error}${t.error.includes("?")?"&":"?"}error=${b}`,cookies:E};return e.error({error:b})}}else if("POST"===k)switch(v){case"signin":if(S.csrfTokenVerified&&S.provider){let e=await a.signin({query:m.query,body:m.body,options:S});return e.cookies&&E.push(...e.cookies),{...e,cookies:E}}return{redirect:`${S.url}/signin?csrf=true`,cookies:E};case"signout":if(S.csrfTokenVerified){let e=await a.signout({options:S,sessionStore:A});return e.cookies&&E.push(...e.cookies),{...e,cookies:E}}return{redirect:`${S.url}/signout?csrf=true`,cookies:E};case"callback":if(S.provider){if("credentials"===S.provider.type&&!S.csrfTokenVerified)return{redirect:`${S.url}/signin?csrf=true`,cookies:E};let e=await a.callback({body:m.body,query:m.query,headers:m.headers,cookies:m.cookies,method:k,options:S,sessionStore:A});return e.cookies&&E.push(...e.cookies),{...e,cookies:E}}break;case"_log":if(h.logger)try{let{code:e,level:t,...r}=null!==(p=m.body)&&void 0!==p?p:{};o.default[t](e,r)}catch(e){o.default.error("LOGGER_ERROR",e)}return{};case"session":if(S.csrfTokenVerified){let e=await a.session({options:S,sessionStore:A,newSession:null===(f=m.body)||void 0===f?void 0:f.data,isUpdate:!0});return e.cookies&&E.push(...e.cookies),{...e,cookies:E}}return{status:400,body:{},cookies:E}}return{status:400,body:`Error: This action with HTTP ${k} is not supported by NextAuth.js`}}},15663:(e,t,r)=>{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.init=m;var o=r(84770),i=n(r(80878)),a=r(85793),s=n(r(82355)),c=r(95627),l=_(r(33656)),u=_(r(20330)),d=r(11515),p=r(26197),f=r(77558),h=n(r(33768));function y(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(y=function(e){return e?r:t})(e)}function _(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=y(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&({}).hasOwnProperty.call(e,i)){var a=o?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}async function m({authOptions:e,providerId:t,action:r,origin:n,cookies:y,callbackUrl:_,csrfToken:m,isPost:g}){var v,w;let b=(0,h.default)(n),k=(0,c.createSecret)({authOptions:e,url:b}),{providers:S,provider:E}=(0,s.default)({providers:e.providers,url:b,providerId:t}),A={debug:!1,pages:{},theme:{colorScheme:"auto",logo:"",brandColor:"",buttonText:""},...e,url:b,action:r,provider:E,cookies:{...l.defaultCookies(null!==(v=e.useSecureCookies)&&void 0!==v?v:b.base.startsWith("https://")),...e.cookies},secret:k,providers:S,session:{strategy:e.adapter?"database":"jwt",maxAge:2592e3,updateAge:86400,generateSessionToken:()=>{var e;return null!==(e=null===o.randomUUID||void 0===o.randomUUID?void 0:(0,o.randomUUID)())&&void 0!==e?e:(0,o.randomBytes)(32).toString("hex")},...e.session},jwt:{secret:k,maxAge:2592e3,encode:u.encode,decode:u.decode,...e.jwt},events:(0,a.eventsErrorHandler)(null!==(w=e.events)&&void 0!==w?w:{},i.default),adapter:(0,a.adapterErrorHandler)(e.adapter,i.default),callbacks:{...d.defaultCallbacks,...e.callbacks},logger:i.default,callbackUrl:b.origin},O=[],{csrfToken:x,cookie:P,csrfTokenVerified:T}=(0,p.createCSRFToken)({options:A,cookieValue:null==y?void 0:y[A.cookies.csrfToken.name],isPost:g,bodyValue:m});A.csrfToken=x,A.csrfTokenVerified=T,P&&O.push({name:A.cookies.csrfToken.name,value:P,options:A.cookies.csrfToken.options});let{callbackUrl:C,callbackUrlCookie:j}=await (0,f.createCallbackUrl)({options:A,cookieValue:null==y?void 0:y[A.cookies.callbackUrl.name],paramValue:_});return A.callbackUrl=C,j&&O.push({name:A.cookies.callbackUrl.name,value:j,options:A.cookies.callbackUrl.options}),{options:A,cookies:O}}},76790:(e,t,r)=>{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.assertConfig=function(e){var t,r,n,l,u,d,p;let f,h,y;let{options:_,req:m}=e,g=[];if(!s&&(m.origin||g.push("NEXTAUTH_URL"),_.secret,_.debug&&g.push("DEBUG_ENABLED")),!_.secret)return new o.MissingSecret("Please define a `secret` in production.");if(!(null!==(t=m.query)&&void 0!==t&&t.nextauth)&&!m.action)return new o.MissingAPIRoute("Cannot find [...nextauth].{js,ts} in `/pages/api/auth`. Make sure the filename is written correctly.");let v=null===(r=m.query)||void 0===r?void 0:r.callbackUrl,w=(0,i.default)(m.origin);if(v&&!c(v,w.base))return new o.InvalidCallbackUrl(`Invalid callback URL. Received: ${v}`);let{callbackUrl:b}=(0,a.defaultCookies)(null!==(n=_.useSecureCookies)&&void 0!==n?n:w.base.startsWith("https://")),k=null===(l=m.cookies)||void 0===l?void 0:l[null!==(u=null===(d=_.cookies)||void 0===d||null===(d=d.callbackUrl)||void 0===d?void 0:d.name)&&void 0!==u?u:b.name];if(k&&!c(k,w.base))return new o.InvalidCallbackUrl(`Invalid callback URL. Received: ${k}`);for(let e of _.providers)"credentials"===e.type?f=!0:"email"===e.type?h=!0:"twitter"===e.id&&"2.0"===e.version&&(y=!0);if(f){let e=(null===(p=_.session)||void 0===p?void 0:p.strategy)==="database",t=!_.providers.some(e=>"credentials"!==e.type);if(e&&t)return new o.UnsupportedStrategy("Signin in with credentials only supported if JWT strategy is enabled");if(_.providers.some(e=>"credentials"===e.type&&!e.authorize))return new o.MissingAuthorize("Must define an authorize() handler to use credentials authentication provider")}if(h){let{adapter:e}=_;if(!e)return new o.MissingAdapter("E-mail login requires an adapter.");let t=["createVerificationToken","useVerificationToken","getUserByEmail"].filter(t=>!e[t]);if(t.length)return new o.MissingAdapterMethods(`Required adapter methods were missing: ${t.join(", ")}`)}return s||(y&&g.push("TWITTER_OAUTH_2_BETA"),s=!0),g};var o=r(85793),i=n(r(33768)),a=r(33656);let s=!1;function c(e,t){try{return/^https?:/.test(new URL(e,e.startsWith("/")?t:void 0).protocol)}catch(e){return!1}}},93024:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=i;var n=r(85793),o=r(95627);async function i(e){var t,r,i,a,s,c;let{sessionToken:l,profile:u,account:d,options:p}=e;if(!(null!=d&&d.providerAccountId)||!d.type)throw Error("Missing or invalid provider account");if(!["email","oauth"].includes(d.type))throw Error("Provider not supported");let{adapter:f,jwt:h,events:y,session:{strategy:_,generateSessionToken:m}}=p;if(!f)return{user:u,account:d};let{createUser:g,updateUser:v,getUser:w,getUserByAccount:b,getUserByEmail:k,linkAccount:S,createSession:E,getSessionAndUser:A,deleteSession:O}=f,x=null,P=null,T=!1,C="jwt"===_;if(l){if(C)try{(x=await h.decode({...h,token:l}))&&"sub"in x&&x.sub&&(P=await w(x.sub))}catch(e){}else{let e=await A(l);e&&(x=e.session,P=e.user)}}if("email"===d.type){let e=await k(u.email);if(e)(null===(t=P)||void 0===t?void 0:t.id)!==e.id&&!C&&l&&await O(l),P=await v({id:e.id,emailVerified:new Date}),await (null===(r=y.updateUser)||void 0===r?void 0:r.call(y,{user:P}));else{let{id:e,...t}={...u,emailVerified:new Date};P=await g(t),await (null===(i=y.createUser)||void 0===i?void 0:i.call(y,{user:P})),T=!0}return{session:x=C?{}:await E({sessionToken:await m(),userId:P.id,expires:(0,o.fromDate)(p.session.maxAge)}),user:P,isNewUser:T}}if("oauth"===d.type){let e=await b({providerAccountId:d.providerAccountId,provider:d.provider});if(e){if(P){if(e.id===P.id)return{session:x,user:P,isNewUser:T};throw new n.AccountNotLinkedError("The account is already associated with another user")}return{session:x=C?{}:await E({sessionToken:await m(),userId:e.id,expires:(0,o.fromDate)(p.session.maxAge)}),user:e,isNewUser:T}}{if(P)return await S({...d,userId:P.id}),await (null===(c=y.linkAccount)||void 0===c?void 0:c.call(y,{user:P,account:d,profile:u})),{session:x,user:P,isNewUser:T};let e=u.email?await k(u.email):null;if(e){let t=p.provider;if(null!=t&&t.allowDangerousEmailAccountLinking)P=e;else throw new n.AccountNotLinkedError("Another account already exists with the same e-mail address")}else{let{id:e,...t}={...u,emailVerified:null};P=await g(t)}return await (null===(a=y.createUser)||void 0===a?void 0:a.call(y,{user:P})),await S({...d,userId:P.id}),await (null===(s=y.linkAccount)||void 0===s?void 0:s.call(y,{user:P,account:d,profile:u})),{session:x=C?{}:await E({sessionToken:await m(),userId:P.id,expires:(0,o.fromDate)(p.session.maxAge)}),user:P,isNewUser:!0}}}throw Error("Unsupported account type")}},77558:(e,t)=>{"use strict";async function r({options:e,paramValue:t,cookieValue:r}){let{url:n,callbacks:o}=e,i=n.origin;return t?i=await o.redirect({url:t,baseUrl:n.origin}):r&&(i=await o.redirect({url:r,baseUrl:n.origin})),{callbackUrl:i,callbackUrlCookie:i!==r?i:void 0}}Object.defineProperty(t,"__esModule",{value:!0}),t.createCallbackUrl=r},33656:(e,t)=>{"use strict";function r(e,t,r){n(e,t),t.set(e,r)}function n(e,t){if(t.has(e))throw TypeError("Cannot initialize the same private elements twice on an object")}function o(e,t){return e.get(a(e,t))}function i(e,t,r){return e.set(a(e,t),r),r}function a(e,t,r){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:r;throw TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStore=void 0,t.defaultCookies=function(e){let t=e?"__Secure-":"";return{sessionToken:{name:`${t}next-auth.session-token`,options:{httpOnly:!0,sameSite:"lax",path:"/",secure:e}},callbackUrl:{name:`${t}next-auth.callback-url`,options:{httpOnly:!0,sameSite:"lax",path:"/",secure:e}},csrfToken:{name:`${e?"__Host-":""}next-auth.csrf-token`,options:{httpOnly:!0,sameSite:"lax",path:"/",secure:e}},pkceCodeVerifier:{name:`${t}next-auth.pkce.code_verifier`,options:{httpOnly:!0,sameSite:"lax",path:"/",secure:e,maxAge:900}},state:{name:`${t}next-auth.state`,options:{httpOnly:!0,sameSite:"lax",path:"/",secure:e,maxAge:900}},nonce:{name:`${t}next-auth.nonce`,options:{httpOnly:!0,sameSite:"lax",path:"/",secure:e}}}};var s=new WeakMap,c=new WeakMap,l=new WeakMap,u=new WeakSet;class d{constructor(e,t,a){(function(e,t){n(e,t),t.add(e)})(this,u),r(this,s,{}),r(this,c,void 0),r(this,l,void 0),i(l,this,a),i(c,this,e);let{cookies:d}=t,{name:p}=e;if("function"==typeof(null==d?void 0:d.getAll))for(let{name:e,value:t}of d.getAll())e.startsWith(p)&&(o(s,this)[e]=t);else if(d instanceof Map)for(let e of d.keys())e.startsWith(p)&&(o(s,this)[e]=d.get(e));else for(let e in d)e.startsWith(p)&&(o(s,this)[e]=d[e])}get value(){return Object.keys(o(s,this)).sort((e,t)=>{var r,n;return parseInt(null!==(r=e.split(".").pop())&&void 0!==r?r:"0")-parseInt(null!==(n=t.split(".").pop())&&void 0!==n?n:"0")}).map(e=>o(s,this)[e]).join("")}chunk(e,t){let r=a(u,this,f).call(this);for(let n of a(u,this,p).call(this,{name:o(c,this).name,value:e,options:{...o(c,this).options,...t}}))r[n.name]=n;return Object.values(r)}clean(){return Object.values(a(u,this,f).call(this))}}function p(e){let t=Math.ceil(e.value.length/3933);if(1===t)return o(s,this)[e.name]=e.value,[e];let r=[];for(let n=0;ne.value.length+163)}),r}function f(){let e={};for(let r in o(s,this)){var t;null===(t=o(s,this))||void 0===t||delete t[r],e[r]={name:r,value:"",options:{...o(c,this).options,maxAge:0}}}return e}t.SessionStore=d},26197:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createCSRFToken=function({options:e,cookieValue:t,isPost:r,bodyValue:o}){if(t){let[i,a]=t.split("|");if(a===(0,n.createHash)("sha256").update(`${i}${e.secret}`).digest("hex"))return{csrfTokenVerified:r&&i===o,csrfToken:i}}let i=(0,n.randomBytes)(32).toString("hex"),a=(0,n.createHash)("sha256").update(`${i}${e.secret}`).digest("hex");return{cookie:`${i}|${a}`,csrfToken:i}};var n=r(84770)},11515:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultCallbacks=void 0,t.defaultCallbacks={signIn:()=>!0,redirect:({url:e,baseUrl:t})=>e.startsWith("/")?`${t}${e}`:new URL(e).origin===t?e:t,session:({session:e})=>e,jwt:({token:e})=>e}},5905:(e,t)=>{"use strict";async function r({email:e,adapter:t}){let{getUserByEmail:r}=t;return(e?await r(e):null)||{id:e,email:e,emailVerified:null}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},32093:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=i;var n=r(84770),o=r(95627);async function i(e,t){var r,i,a,s;let{url:c,adapter:l,provider:u,callbackUrl:d,theme:p}=t,f=null!==(r=await (null===(i=u.generateVerificationToken)||void 0===i?void 0:i.call(u)))&&void 0!==r?r:(0,n.randomBytes)(32).toString("hex"),h=new Date(Date.now()+(null!==(a=u.maxAge)&&void 0!==a?a:86400)*1e3),y=new URLSearchParams({callbackUrl:d,token:f,email:e}),_=`${c}/callback/${u.id}?${y}`;return await Promise.all([u.sendVerificationRequest({identifier:e,token:f,expires:h,url:_,provider:u,theme:p}),null===(s=l.createVerificationToken)||void 0===s?void 0:s.call(l,{identifier:e,token:(0,o.hashToken)(f,t),expires:h})]),`${c}/verify-request?${new URLSearchParams({provider:u.id,type:u.type})}`}},75971:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=s;var n=r(35282),o=r(78863),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&({}).hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}(r(5880));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}async function s({options:e,query:t}){var r,a,s;let{logger:c,provider:l}=e,u={};if("string"==typeof l.authorization){let e=Object.fromEntries(new URL(l.authorization).searchParams);u={...u,...e}}else u={...u,...null===(a=l.authorization)||void 0===a?void 0:a.params};if(u={...u,...t},null!==(r=l.version)&&void 0!==r&&r.startsWith("1.")){let t=(0,o.oAuth1Client)(e),r=await t.getOAuthRequestToken(u),n=`${null===(s=l.authorization)||void 0===s?void 0:s.url}?${new URLSearchParams({oauth_token:r.oauth_token,oauth_token_secret:r.oauth_token_secret,...r.params})}`;return o.oAuth1TokenStore.set(r.oauth_token,r.oauth_token_secret),c.debug("GET_AUTHORIZATION_URL",{url:n,provider:l}),{redirect:n}}let d=await (0,n.openidClient)(e),p=u,f=[];await i.state.create(e,f,p),await i.pkce.create(e,f,p),await i.nonce.create(e,f,p);let h=d.authorizationUrl(p);return c.debug("GET_AUTHORIZATION_URL",{url:h,cookies:f,provider:l}),{redirect:h,cookies:f}}},88302:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=l;var n=r(77838),o=r(35282),i=r(78863),a=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=c(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&({}).hasOwnProperty.call(e,i)){var a=o?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}(r(5880)),s=r(85793);function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(c=function(e){return e?r:t})(e)}async function l(e){var t,r,c,l,d,p;let{options:f,query:h,body:y,method:_,cookies:m}=e,{logger:g,provider:v}=f,w=null!==(t=null==y?void 0:y.error)&&void 0!==t?t:null==h?void 0:h.error;if(w){let e=Error(w);throw g.error("OAUTH_CALLBACK_HANDLER_ERROR",{error:e,error_description:null==h?void 0:h.error_description,providerId:v.id}),g.debug("OAUTH_CALLBACK_HANDLER_ERROR",{body:y}),e}if(null!==(r=v.version)&&void 0!==r&&r.startsWith("1."))try{let e=await (0,i.oAuth1Client)(f),{oauth_token:t,oauth_verifier:r}=null!=h?h:{},n=await e.getOAuthAccessToken(t,i.oAuth1TokenStore.get(t),r),o=await e.get(v.profileUrl,n.oauth_token,n.oauth_token_secret);return"string"==typeof o&&(o=JSON.parse(o)),{...await u({profile:o,tokens:n,provider:v,logger:g}),cookies:[]}}catch(e){throw g.error("OAUTH_V1_GET_ACCESS_TOKEN_ERROR",e),e}null!=h&&h.oauth_token&&i.oAuth1TokenStore.delete(h.oauth_token);try{let e,t;let r=await (0,o.openidClient)(f),i={},s=[];await a.state.use(m,s,f,i),await a.pkce.use(m,s,f,i),await a.nonce.use(m,s,f,i);let w={...r.callbackParams({url:`http://n?${new URLSearchParams(h)}`,body:y,method:_}),...null===(c=v.token)||void 0===c?void 0:c.params};if(null!==(l=v.token)&&void 0!==l&&l.request){let t=await v.token.request({provider:v,params:w,checks:i,client:r});e=new n.TokenSet(t.tokens)}else e=v.idToken?await r.callback(v.callbackUrl,w,i):await r.oauthCallback(v.callbackUrl,w,i);return Array.isArray(e.scope)&&(e.scope=e.scope.join(" ")),t=null!==(d=v.userinfo)&&void 0!==d&&d.request?await v.userinfo.request({provider:v,tokens:e,client:r}):v.idToken?e.claims():await r.userinfo(e,{params:null===(p=v.userinfo)||void 0===p?void 0:p.params}),{...await u({profile:t,provider:v,tokens:e,logger:g}),cookies:s}}catch(e){throw new s.OAuthCallbackError(e)}}async function u({profile:e,tokens:t,provider:r,logger:n}){try{var o;n.debug("PROFILE_DATA",{OAuthProfile:e});let i=await r.profile(e,t);if(i.email=null===(o=i.email)||void 0===o?void 0:o.toLowerCase(),!i.id)throw TypeError(`Profile id is missing in ${r.name} OAuth profile response`);return{profile:i,account:{provider:r.id,type:r.type,providerAccountId:i.id.toString(),...t},OAuthProfile:e}}catch(t){n.error("OAUTH_PARSE_PROFILE_ERROR",{error:t,OAuthProfile:e})}}},5880:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pkce=t.nonce=t.PKCE_CODE_CHALLENGE_METHOD=void 0,t.signCookie=a,t.state=void 0;var n=r(77838),o=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&({}).hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(n,a,s):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}(r(20330));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}async function a(e,t,r,n){let{cookies:i,logger:a}=n;a.debug(`CREATE_${e.toUpperCase()}`,{value:t,maxAge:r});let{name:s}=i[e],c=new Date;return c.setTime(c.getTime()+1e3*r),{name:s,value:await o.encode({...n.jwt,maxAge:r,token:{value:t},salt:s}),options:{...i[e].options,expires:c}}}let s=t.PKCE_CODE_CHALLENGE_METHOD="S256";t.pkce={async create(e,t,r){var o,i;if(!(null!==(o=e.provider)&&void 0!==o&&null!==(o=o.checks)&&void 0!==o&&o.includes("pkce")))return;let c=n.generators.codeVerifier(),l=n.generators.codeChallenge(c);r.code_challenge=l,r.code_challenge_method=s;let u=null!==(i=e.cookies.pkceCodeVerifier.options.maxAge)&&void 0!==i?i:900;t.push(await a("pkceCodeVerifier",c,u,e))},async use(e,t,r,n){var i;if(!(null!==(i=r.provider)&&void 0!==i&&null!==(i=i.checks)&&void 0!==i&&i.includes("pkce")))return;let a=null==e?void 0:e[r.cookies.pkceCodeVerifier.name];if(!a)throw TypeError("PKCE code_verifier cookie was missing.");let{name:s}=r.cookies.pkceCodeVerifier,c=await o.decode({...r.jwt,token:a,salt:s});if(!(null!=c&&c.value))throw TypeError("PKCE code_verifier value could not be parsed.");t.push({name:s,value:"",options:{...r.cookies.pkceCodeVerifier.options,maxAge:0}}),n.code_verifier=c.value}},t.state={async create(e,t,r){var o,i;if(!(null!==(o=e.provider.checks)&&void 0!==o&&o.includes("state")))return;let s=n.generators.state();r.state=s;let c=null!==(i=e.cookies.state.options.maxAge)&&void 0!==i?i:900;t.push(await a("state",s,c,e))},async use(e,t,r,n){var i;if(!(null!==(i=r.provider.checks)&&void 0!==i&&i.includes("state")))return;let a=null==e?void 0:e[r.cookies.state.name];if(!a)throw TypeError("State cookie was missing.");let{name:s}=r.cookies.state,c=await o.decode({...r.jwt,token:a,salt:s});if(!(null!=c&&c.value))throw TypeError("State value could not be parsed.");t.push({name:s,value:"",options:{...r.cookies.state.options,maxAge:0}}),n.state=c.value}},t.nonce={async create(e,t,r){var o,i;if(!(null!==(o=e.provider.checks)&&void 0!==o&&o.includes("nonce")))return;let s=n.generators.nonce();r.nonce=s;let c=null!==(i=e.cookies.nonce.options.maxAge)&&void 0!==i?i:900;t.push(await a("nonce",s,c,e))},async use(e,t,r,n){var i;if(!(null!==(i=r.provider)&&void 0!==i&&null!==(i=i.checks)&&void 0!==i&&i.includes("nonce")))return;let a=null==e?void 0:e[r.cookies.nonce.name];if(!a)throw TypeError("Nonce cookie was missing.");let{name:s}=r.cookies.nonce,c=await o.decode({...r.jwt,token:a,salt:s});if(!(null!=c&&c.value))throw TypeError("Nonce value could not be parsed.");t.push({name:s,value:"",options:{...r.cookies.nonce.options,maxAge:0}}),n.nonce=c.value}}},78863:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.oAuth1Client=function(e){var t,r;let o=e.provider,i=new n.OAuth(o.requestTokenUrl,o.accessTokenUrl,o.clientId,o.clientSecret,null!==(t=o.version)&&void 0!==t?t:"1.0",o.callbackUrl,null!==(r=o.encoding)&&void 0!==r?r:"HMAC-SHA1"),a=i.get.bind(i);i.get=async(...e)=>await new Promise((t,r)=>{a(...e,(e,n)=>{if(e)return r(e);t(n)})});let s=i.getOAuthAccessToken.bind(i);i.getOAuthAccessToken=async(...e)=>await new Promise((t,r)=>{s(...e,(e,n,o)=>{if(e)return r(e);t({oauth_token:n,oauth_token_secret:o})})});let c=i.getOAuthRequestToken.bind(i);return i.getOAuthRequestToken=async(e={})=>await new Promise((t,r)=>{c(e,(e,n,o,i)=>{if(e)return r(e);t({oauth_token:n,oauth_token_secret:o,params:i})})}),i},t.oAuth1TokenStore=void 0;var n=r(66234);t.oAuth1TokenStore=new Map},35282:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.openidClient=o;var n=r(77838);async function o(e){let t;let r=e.provider;if(r.httpOptions&&n.custom.setHttpOptionsDefaults(r.httpOptions),r.wellKnown)t=await n.Issuer.discover(r.wellKnown);else{var o,i,a;t=new n.Issuer({issuer:r.issuer,authorization_endpoint:null===(o=r.authorization)||void 0===o?void 0:o.url,token_endpoint:null===(i=r.token)||void 0===i?void 0:i.url,userinfo_endpoint:null===(a=r.userinfo)||void 0===a?void 0:a.url,jwks_uri:r.jwks_endpoint})}let s=new t.Client({client_id:r.clientId,client_secret:r.clientSecret,redirect_uris:[r.callbackUrl],...r.client},r.jwks);return s[n.custom.clock_tolerance]=10,s}},82355:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){let{url:t,providerId:r}=e,i=e.providers.map(({options:e,...r})=>{var i,a;if("oauth"===r.type){let i=o(r),s=o(e,!0),c=null!==(a=null==s?void 0:s.id)&&void 0!==a?a:r.id;return(0,n.merge)(i,{...s,signinUrl:`${t}/signin/${c}`,callbackUrl:`${t}/callback/${c}`})}let s=null!==(i=null==e?void 0:e.id)&&void 0!==i?i:r.id;return(0,n.merge)(r,{...e,signinUrl:`${t}/signin/${s}`,callbackUrl:`${t}/callback/${s}`})});return{providers:i,provider:i.find(({id:e})=>e===r)}};var n=r(86479);function o(e,t=!1){var r,n,o,i,a;if(!e)return;let s=Object.entries(e).reduce((e,[t,r])=>{if(["authorization","token","userinfo"].includes(t)&&"string"==typeof r){var n;let o=new URL(r);e[t]={url:`${o.origin}${o.pathname}`,params:Object.fromEntries(null!==(n=o.searchParams)&&void 0!==n?n:[])}}else e[t]=r;return e},{});return t||null!==(r=s.version)&&void 0!==r&&r.startsWith("1.")||(s.idToken=!!(null!==(n=null!==(o=s.idToken)&&void 0!==o?o:null===(i=s.wellKnown)||void 0===i?void 0:i.includes("openid-configuration"))&&void 0!==n?n:null===(a=s.authorization)||void 0===a||null===(a=a.params)||void 0===a||null===(a=a.scope)||void 0===a?void 0:a.includes("openid")),s.checks||(s.checks=["state"])),s}},95627:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createSecret=function(e){var t;let{authOptions:r,url:o}=e;return null!==(t=r.secret)&&void 0!==t?t:(0,n.createHash)("sha256").update(JSON.stringify({...o,...r})).digest("hex")},t.fromDate=function(e,t=Date.now()){return new Date(t+1e3*e)},t.hashToken=function(e,t){var r;let{provider:o,secret:i}=t;return(0,n.createHash)("sha256").update(`${e}${null!==(r=o.secret)&&void 0!==r?r:i}`).digest("hex")};var n=r(84770)},46283:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t;let{url:r,error:o="default",theme:i}=e,a=`${r}/signin`,s={default:{status:200,heading:"Error",message:(0,n.h)("p",null,(0,n.h)("a",{className:"site",href:null==r?void 0:r.origin},null==r?void 0:r.host))},configuration:{status:500,heading:"Server error",message:(0,n.h)("div",null,(0,n.h)("p",null,"There is a problem with the server configuration."),(0,n.h)("p",null,"Check the server logs for more information."))},accessdenied:{status:403,heading:"Access Denied",message:(0,n.h)("div",null,(0,n.h)("p",null,"You do not have permission to sign in."),(0,n.h)("p",null,(0,n.h)("a",{className:"button",href:a},"Sign in")))},verification:{status:403,heading:"Unable to sign in",message:(0,n.h)("div",null,(0,n.h)("p",null,"The sign in link is no longer valid."),(0,n.h)("p",null,"It may have been used already or it may have expired.")),signin:(0,n.h)("a",{className:"button",href:a},"Sign in")}},{status:c,heading:l,message:u,signin:d}=null!==(t=s[o.toLowerCase()])&&void 0!==t?t:s.default;return{status:c,html:(0,n.h)("div",{className:"error"},(null==i?void 0:i.brandColor)&&(0,n.h)("style",{dangerouslySetInnerHTML:{__html:` + :root { + --brand-color: ${null==i?void 0:i.brandColor} + } + `}}),(0,n.h)("div",{className:"card"},(null==i?void 0:i.logo)&&(0,n.h)("img",{src:i.logo,alt:"Logo",className:"logo"}),(0,n.h)("h1",null,l),(0,n.h)("div",{className:"message"},u),d))}};var n=r(97983)},45606:(e,t,r)=>{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){let{url:t,theme:r,query:n,cookies:u}=e;function d({html:e,title:t,status:n}){var i;return{cookies:u,status:n,headers:[{key:"Content-Type",value:"text/html"}],body:`${t}
            ${(0,o.default)(e)}
            `}}return{signin:t=>d({html:(0,i.default)({csrfToken:e.csrfToken,providers:e.providers,callbackUrl:e.callbackUrl,theme:r,...n,...t}),title:"Sign In"}),signout:n=>d({html:(0,a.default)({csrfToken:e.csrfToken,url:t,theme:r,...n}),title:"Sign Out"}),verifyRequest:e=>d({html:(0,s.default)({url:t,theme:r,...e}),title:"Verify Request"}),error:e=>d({...(0,c.default)({url:t,theme:r,...e}),title:"Error"})}};var o=n(r(23935)),i=n(r(74599)),a=n(r(8465)),s=n(r(52904)),c=n(r(46283)),l=n(r(97764))},74599:(e,t,r)=>{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t;let{csrfToken:r,providers:n,callbackUrl:s,theme:c,email:l,error:u}=e,d=n.filter(e=>"oauth"===e.type||"email"===e.type||"credentials"===e.type&&!!e.credentials);"undefined"!=typeof document&&c.buttonText&&document.documentElement.style.setProperty("--button-text-color",c.buttonText),"undefined"!=typeof document&&c.brandColor&&document.documentElement.style.setProperty("--brand-color",c.brandColor);let p={Signin:"Try signing in with a different account.",OAuthSignin:"Try signing in with a different account.",OAuthCallback:"Try signing in with a different account.",OAuthCreateAccount:"Try signing in with a different account.",EmailCreateAccount:"Try signing in with a different account.",Callback:"Try signing in with a different account.",OAuthAccountNotLinked:"To confirm your identity, sign in with the same account you used originally.",EmailSignin:"The e-mail could not be sent.",CredentialsSignin:"Sign in failed. Check the details you provided are correct.",SessionRequired:"Please sign in to access this page.",default:"Unable to sign in."},f=u&&(null!==(t=p[u])&&void 0!==t?t:p.default),h="https://authjs.dev/img/providers";return(0,o.h)("div",{className:"signin"},c.brandColor&&(0,o.h)("style",{dangerouslySetInnerHTML:{__html:` + :root { + --brand-color: ${c.brandColor} + } + `}}),c.buttonText&&(0,o.h)("style",{dangerouslySetInnerHTML:{__html:` + :root { + --button-text-color: ${c.buttonText} + } + `}}),(0,o.h)("div",{className:"card"},c.logo&&(0,o.h)("img",{src:c.logo,alt:"Logo",className:"logo"}),f&&(0,o.h)("div",{className:"error"},(0,o.h)("p",null,f)),d.map((e,t)=>{let n,c,u,p,f,y;if("oauth"===e.type){var _;({bg:n="",text:c="",logo:u="",bgDark:f=n,textDark:y=c,logoDark:p=""}=null!==(_=e.style)&&void 0!==_?_:{}),u=u.startsWith("/")?`${h}${u}`:u,(p=p.startsWith("/")?`${h}${p}`:p||u)||(p=u)}return(0,o.h)("div",{key:e.id,className:"provider"},"oauth"===e.type&&(0,o.h)("form",{action:e.signinUrl,method:"POST"},(0,o.h)("input",{type:"hidden",name:"csrfToken",value:r}),s&&(0,o.h)("input",{type:"hidden",name:"callbackUrl",value:s}),(0,o.h)("button",{type:"submit",className:"button",style:{"--provider-bg":n,"--provider-dark-bg":f,"--provider-color":c,"--provider-dark-color":y,"--provider-bg-hover":a(n,.8),"--provider-dark-bg-hover":a(f,.8)}},u&&(0,o.h)("img",{loading:"lazy",height:24,width:24,id:"provider-logo",src:`${u.startsWith("/")?h:""}${u}`}),p&&(0,o.h)("img",{loading:"lazy",height:24,width:24,id:"provider-logo-dark",src:`${u.startsWith("/")?h:""}${p}`}),(0,o.h)("span",null,"Sign in with ",e.name))),("email"===e.type||"credentials"===e.type)&&t>0&&"email"!==d[t-1].type&&"credentials"!==d[t-1].type&&(0,o.h)("hr",null),"email"===e.type&&(0,o.h)("form",{action:e.signinUrl,method:"POST"},(0,o.h)("input",{type:"hidden",name:"csrfToken",value:r}),(0,o.h)("label",{className:"section-header",htmlFor:`input-email-for-${e.id}-provider`},"Email"),(0,o.h)("input",{id:`input-email-for-${e.id}-provider`,autoFocus:!0,type:"email",name:"email",value:l,placeholder:"email@example.com",required:!0}),(0,o.h)("button",{id:"submitButton",type:"submit"},"Sign in with ",e.name)),"credentials"===e.type&&(0,o.h)("form",{action:e.callbackUrl,method:"POST"},(0,o.h)("input",{type:"hidden",name:"csrfToken",value:r}),Object.keys(e.credentials).map(t=>{var r,n,a;return(0,o.h)("div",{key:`input-group-${e.id}`},(0,o.h)("label",{className:"section-header",htmlFor:`input-${t}-for-${e.id}-provider`},null!==(r=e.credentials[t].label)&&void 0!==r?r:t),(0,o.h)("input",(0,i.default)({name:t,id:`input-${t}-for-${e.id}-provider`,type:null!==(n=e.credentials[t].type)&&void 0!==n?n:"text",placeholder:null!==(a=e.credentials[t].placeholder)&&void 0!==a?a:""},e.credentials[t])))}),(0,o.h)("button",{type:"submit"},"Sign in with ",e.name)),("email"===e.type||"credentials"===e.type)&&t+1>16&255}, ${r>>8&255}, ${255&r}, ${t})`}},8465:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){let{url:t,csrfToken:r,theme:o}=e;return(0,n.h)("div",{className:"signout"},o.brandColor&&(0,n.h)("style",{dangerouslySetInnerHTML:{__html:` + :root { + --brand-color: ${o.brandColor} + } + `}}),o.buttonText&&(0,n.h)("style",{dangerouslySetInnerHTML:{__html:` + :root { + --button-text-color: ${o.buttonText} + } + `}}),(0,n.h)("div",{className:"card"},o.logo&&(0,n.h)("img",{src:o.logo,alt:"Logo",className:"logo"}),(0,n.h)("h1",null,"Signout"),(0,n.h)("p",null,"Are you sure you want to sign out?"),(0,n.h)("form",{action:`${t}/signout`,method:"POST"},(0,n.h)("input",{type:"hidden",name:"csrfToken",value:r}),(0,n.h)("button",{id:"submitButton",type:"submit"},"Sign out"))))};var n=r(97983)},52904:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){let{url:t,theme:r}=e;return(0,n.h)("div",{className:"verify-request"},r.brandColor&&(0,n.h)("style",{dangerouslySetInnerHTML:{__html:` + :root { + --brand-color: ${r.brandColor} + } + `}}),(0,n.h)("div",{className:"card"},r.logo&&(0,n.h)("img",{src:r.logo,alt:"Logo",className:"logo"}),(0,n.h)("h1",null,"Check your email"),(0,n.h)("p",null,"A sign in link has been sent to your email address."),(0,n.h)("p",null,(0,n.h)("a",{className:"site",href:t.origin},t.host))))};var n=r(97983)},60368:(e,t,r)=>{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var o=n(r(88302)),i=n(r(93024)),a=r(95627),s=n(r(5905));async function c(e){var t,r,n,c,l,u;let{options:d,query:p,body:f,method:h,headers:y,sessionStore:_}=e,{provider:m,adapter:g,url:v,callbackUrl:w,pages:b,jwt:k,events:S,callbacks:E,session:{strategy:A,maxAge:O},logger:x}=d,P=[],T="jwt"===A;if("oauth"===m.type)try{let{profile:n,account:a,OAuthProfile:s,cookies:c}=await (0,o.default)({query:p,body:f,method:h,options:d,cookies:e.cookies});c.length&&P.push(...c);try{if(x.debug("OAUTH_CALLBACK_RESPONSE",{profile:n,account:a,OAuthProfile:s}),!n||!a||!s)return{redirect:`${v}/signin`,cookies:P};let e=n;if(g){let{getUserByAccount:t}=g,r=await t({providerAccountId:a.providerAccountId,provider:m.id});r&&(e=r)}try{let t=await E.signIn({user:e,account:a,profile:s});if(!t)return{redirect:`${v}/error?error=AccessDenied`,cookies:P};if("string"==typeof t)return{redirect:t,cookies:P}}catch(e){return{redirect:`${v}/error?error=${encodeURIComponent(e.message)}`,cookies:P}}let{user:o,session:c,isNewUser:l}=await (0,i.default)({sessionToken:_.value,profile:n,account:a,options:d});if(T){let e={name:o.name,email:o.email,picture:o.image,sub:null===(r=o.id)||void 0===r?void 0:r.toString()},t=await E.jwt({token:e,user:o,account:a,profile:s,isNewUser:l,trigger:l?"signUp":"signIn"}),n=await k.encode({...k,token:t}),i=new Date;i.setTime(i.getTime()+1e3*O);let c=_.chunk(n,{expires:i});P.push(...c)}else P.push({name:d.cookies.sessionToken.name,value:c.sessionToken,options:{...d.cookies.sessionToken.options,expires:c.expires}});if(await (null===(t=S.signIn)||void 0===t?void 0:t.call(S,{user:o,account:a,profile:n,isNewUser:l})),l&&b.newUser)return{redirect:`${b.newUser}${b.newUser.includes("?")?"&":"?"}callbackUrl=${encodeURIComponent(w)}`,cookies:P};return{redirect:w,cookies:P}}catch(e){if("AccountNotLinkedError"===e.name)return{redirect:`${v}/error?error=OAuthAccountNotLinked`,cookies:P};if("CreateUserError"===e.name)return{redirect:`${v}/error?error=OAuthCreateAccount`,cookies:P};return x.error("OAUTH_CALLBACK_HANDLER_ERROR",e),{redirect:`${v}/error?error=Callback`,cookies:P}}}catch(e){if("OAuthCallbackError"===e.name)return x.error("OAUTH_CALLBACK_ERROR",{error:e,providerId:m.id}),{redirect:`${v}/error?error=OAuthCallback`,cookies:P};return x.error("OAUTH_CALLBACK_ERROR",e),{redirect:`${v}/error?error=Callback`,cookies:P}}else if("email"===m.type)try{let e=null==p?void 0:p.token,t=null==p?void 0:p.email;if(!e)return{redirect:`${v}/error?error=configuration`,cookies:P};let r=await g.useVerificationToken({identifier:t,token:(0,a.hashToken)(e,d)});if(!r||r.expires.valueOf(){"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"callback",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"providers",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"session",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"signin",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"signout",{enumerable:!0,get:function(){return a.default}});var o=n(r(60368)),i=n(r(93558)),a=n(r(12551)),s=n(r(63636)),c=n(r(13234))},13234:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return{headers:[{key:"Content-Type",value:"application/json"}],body:e.reduce((e,{id:t,name:r,type:n,signinUrl:o,callbackUrl:i})=>(e[t]={id:t,name:r,type:n,signinUrl:o,callbackUrl:i},e),{})}}},63636:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var n=r(95627);async function o(e){var t,r,o,i,a,s;let{options:c,sessionStore:l,newSession:u,isUpdate:d}=e,{adapter:p,jwt:f,events:h,callbacks:y,logger:_,session:{strategy:m,maxAge:g}}=c,v={body:{},headers:[{key:"Content-Type",value:"application/json"},...d?[]:[{key:"Cache-Control",value:"private, no-cache, no-store"},{key:"Pragma",value:"no-cache"},{key:"Expires",value:"0"}]].filter(Boolean),cookies:[]},w=l.value;if(!w)return v;if("jwt"===m)try{let e=await f.decode({...f,token:w});if(!e)throw Error("JWT invalid");let o=await y.jwt({token:e,...d&&{trigger:"update"},session:u}),i=(0,n.fromDate)(g),a=await y.session({session:{user:{name:null==e?void 0:e.name,email:null==e?void 0:e.email,image:null==e?void 0:e.picture},expires:i.toISOString()},token:o});v.body=a;let s=await f.encode({...f,token:o,maxAge:c.session.maxAge}),p=l.chunk(s,{expires:i});null===(t=v.cookies)||void 0===t||t.push(...p),await (null===(r=h.session)||void 0===r?void 0:r.call(h,{session:a,token:o}))}catch(e){_.error("JWT_SESSION_ERROR",e),null===(o=v.cookies)||void 0===o||o.push(...l.clean())}else try{let{getSessionAndUser:e,deleteSession:t,updateSession:r}=p,o=await e(w);if(o&&o.session.expires.valueOf(){"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.default=s;var o=n(r(75971)),i=n(r(32093)),a=n(r(5905));async function s(e){let{options:t,query:r,body:n}=e,{url:s,callbacks:c,logger:l,provider:u}=t;if(!u.type)return{status:500,text:`Error: Type not specified for ${u.name}`};if("oauth"===u.type)try{return await (0,o.default)({options:t,query:r})}catch(e){return l.error("SIGNIN_OAUTH_ERROR",{error:e,providerId:u.id}),{redirect:`${s}/error?error=OAuthSignin`}}else if("email"===u.type){var d;let e=null==n?void 0:n.email;if(!e)return{redirect:`${s}/error?error=EmailSignin`};let r=null!==(d=u.normalizeIdentifier)&&void 0!==d?d:e=>{var t;let r=e.trim();if(1!==(null!==(t=r.match(/@/g))&&void 0!==t?t:[]).length||r.includes('"'))throw Error("Invalid email address format.");let[n,o]=r.toLowerCase().split("@");if(!n||!o||!(o=o.split(",")[0]).includes("."))throw Error("Invalid email address format.");return`${n}@${o}`};try{e=r(null==n?void 0:n.email)}catch(e){return l.error("SIGNIN_EMAIL_ERROR",{error:e,providerId:u.id}),{redirect:`${s}/error?error=EmailSignin`}}let o=await (0,a.default)({email:e,adapter:t.adapter}),p={providerAccountId:e,userId:e,type:"email",provider:u.id};try{let e=await c.signIn({user:o,account:p,email:{verificationRequest:!0}});if(!e)return{redirect:`${s}/error?error=AccessDenied`};if("string"==typeof e)return{redirect:e}}catch(e){return{redirect:`${s}/error?${new URLSearchParams({error:e})}`}}try{return{redirect:await (0,i.default)(e,t)}}catch(e){return l.error("SIGNIN_EMAIL_ERROR",{error:e,providerId:u.id}),{redirect:`${s}/error?error=EmailSignin`}}}return{redirect:`${s}/signin`}}},12551:(e,t)=>{"use strict";async function r(e){var t,r;let{options:n,sessionStore:o}=e,{adapter:i,events:a,jwt:s,callbackUrl:c,logger:l,session:u}=n,d=null==o?void 0:o.value;if(!d)return{redirect:c};if("jwt"===u.strategy)try{let e=await s.decode({...s,token:d});await (null===(t=a.signOut)||void 0===t?void 0:t.call(a,{token:e}))}catch(e){l.error("SIGNOUT_ERROR",e)}else try{let e=await i.deleteSession(d);await (null===(r=a.signOut)||void 0===r?void 0:r.call(a,{session:e}))}catch(e){l.error("SIGNOUT_ERROR",e)}return{redirect:c,cookies:o.clean()}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},69955:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},97764:e=>{e.exports=function(){return':root{--border-width:1px;--border-radius:0.5rem;--color-error:#c94b4b;--color-info:#157efb;--color-info-hover:#0f6ddb;--color-info-text:#fff}.__next-auth-theme-auto,.__next-auth-theme-light{--color-background:#ececec;--color-background-hover:hsla(0,0%,93%,.8);--color-background-card:#fff;--color-text:#000;--color-primary:#444;--color-control-border:#bbb;--color-button-active-background:#f9f9f9;--color-button-active-border:#aaa;--color-separator:#ccc}.__next-auth-theme-dark{--color-background:#161b22;--color-background-hover:rgba(22,27,34,.8);--color-background-card:#0d1117;--color-text:#fff;--color-primary:#ccc;--color-control-border:#555;--color-button-active-background:#060606;--color-button-active-border:#666;--color-separator:#444}@media (prefers-color-scheme:dark){.__next-auth-theme-auto{--color-background:#161b22;--color-background-hover:rgba(22,27,34,.8);--color-background-card:#0d1117;--color-text:#fff;--color-primary:#ccc;--color-control-border:#555;--color-button-active-background:#060606;--color-button-active-border:#666;--color-separator:#444}a.button,button{background-color:var(--provider-dark-bg,var(--color-background));color:var(--provider-dark-color,var(--color-primary))}a.button:hover,button:hover{background-color:var(--provider-dark-bg-hover,var(--color-background-hover))!important}#provider-logo{display:none!important}#provider-logo-dark{display:block!important;width:25px}}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit;margin:0;padding:0}body{background-color:var(--color-background);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin:0;padding:0}h1{font-weight:400}h1,p{color:var(--color-text);margin-bottom:1.5rem;padding:0 1rem}form{margin:0;padding:0}label{font-weight:500;margin-bottom:.25rem;text-align:left}input[type],label{color:var(--color-text);display:block}input[type]{background:var(--color-background-card);border:var(--border-width) solid var(--color-control-border);border-radius:var(--border-radius);box-sizing:border-box;font-size:1rem;padding:.5rem 1rem;width:100%}input[type]:focus{box-shadow:none}p{font-size:1.1rem;line-height:2rem}a.button{line-height:1rem;text-decoration:none}a.button:link,a.button:visited{background-color:var(--color-background);color:var(--color-primary)}button span{flex-grow:1}a.button,button{align-items:center;background-color:var(--provider-bg);border-color:rgba(0,0,0,.1);border-radius:var(--border-radius);color:var(--provider-color,var(--color-primary));display:flex;font-size:1.1rem;font-weight:500;justify-content:center;min-height:62px;padding:.75rem 1rem;position:relative;transition:all .1s ease-in-out}a.button:hover,button:hover{background-color:var(--provider-bg-hover,var(--color-background-hover));cursor:pointer}a.button:active,button:active{cursor:pointer}a.button #provider-logo,button #provider-logo{display:block;width:25px}a.button #provider-logo-dark,button #provider-logo-dark{display:none}#submitButton{background-color:var(--brand-color,var(--color-info));color:var(--button-text-color,var(--color-info-text));width:100%}#submitButton:hover{background-color:var(--button-hover-bg,var(--color-info-hover))!important}a.site{color:var(--color-primary);font-size:1rem;line-height:2rem;text-decoration:none}a.site:hover{text-decoration:underline}.page{box-sizing:border-box;display:grid;height:100%;margin:0;padding:0;place-items:center;position:absolute;width:100%}.page>div{text-align:center}.error a.button{margin-top:.5rem;padding-left:2rem;padding-right:2rem}.error .message{margin-bottom:1.5rem}.signin input[type=text]{display:block;margin-left:auto;margin-right:auto}.signin hr{border:0;border-top:1px solid var(--color-separator);display:block;margin:2rem auto 1rem;overflow:visible}.signin hr:before{background:var(--color-background-card);color:#888;content:"or";padding:0 .4rem;position:relative;top:-.7rem}.signin .error{background:#f5f5f5;background:var(--color-error);border-radius:.3rem;font-weight:500}.signin .error p{color:var(--color-info-text);font-size:.9rem;line-height:1.2rem;padding:.5rem 1rem;text-align:left}.signin form,.signin>div{display:block}.signin form input[type],.signin>div input[type]{margin-bottom:.5rem}.signin form button,.signin>div button{width:100%}.signin .provider+.provider{margin-top:1rem}.logo{display:inline-block;margin:1.25rem 0;max-height:70px;max-width:150px}.card{background-color:var(--color-background-card);border-radius:2rem;padding:1.25rem 2rem}.card .header{color:var(--color-primary)}.section-header{color:var(--color-text)}@media screen and (min-width:450px){.card{margin:2rem 0;width:368px}}@media screen and (max-width:450px){.card{margin:1rem 0;width:343px}}'}},75571:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={};Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i.default}});var o=r(69955);Object.keys(o).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e))&&(e in t&&t[e]===o[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return o[e]}}))});var i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&({}).hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}(r(45609));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}Object.keys(i).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e))&&(e in t&&t[e]===i[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}}))})},20330:(e,t,r)=>{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0});var o={encode:!0,decode:!0,getToken:!0};t.decode=p,t.encode=d,t.getToken=f;var i=r(39797),a=n(r(55159)),s=r(68467),c=r(33656),l=r(88045);Object.keys(l).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e))&&(e in t&&t[e]===l[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return l[e]}}))});let u=()=>Date.now()/1e3|0;async function d(e){let{token:t={},secret:r,maxAge:n=2592e3,salt:o=""}=e,a=await h(r,o);return await new i.EncryptJWT(t).setProtectedHeader({alg:"dir",enc:"A256GCM"}).setIssuedAt().setExpirationTime(u()+n).setJti((0,s.v4)()).encrypt(a)}async function p(e){let{token:t,secret:r,salt:n=""}=e;if(!t)return null;let o=await h(r,n),{payload:a}=await (0,i.jwtDecrypt)(t,o,{clockTolerance:15});return a}async function f(e){var t,r,n,o;let{req:i,secureCookie:a=null!==(t=null===(r=process.env.NEXTAUTH_URL)||void 0===r?void 0:r.startsWith("https://"))&&void 0!==t?t:!!process.env.VERCEL,cookieName:s=a?"__Secure-next-auth.session-token":"next-auth.session-token",raw:l,decode:u=p,logger:d=console,secret:f=null!==(n=process.env.NEXTAUTH_SECRET)&&void 0!==n?n:process.env.AUTH_SECRET}=e;if(!i)throw Error("Must pass `req` to JWT getToken()");let h=new c.SessionStore({name:s,options:{secure:a}},{cookies:i.cookies,headers:i.headers},d).value,y=i.headers instanceof Headers?i.headers.get("authorization"):null===(o=i.headers)||void 0===o?void 0:o.authorization;if(h||(null==y?void 0:y.split(" ")[0])!=="Bearer"||(h=decodeURIComponent(y.split(" ")[1])),!h)return null;if(l)return h;try{return await u({token:h,secret:f})}catch(e){return null}}async function h(e,t){return await (0,a.default)("sha256",e,t,`NextAuth.js Generated Encryption Key${t?` (${t})`:""}`,32)}},88045:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},45609:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.getServerSession=s,t.unstable_getServerSession=c;var n=r(5328),o=r(56138);async function i(e,t,r){var i,a,s,c,l,u,d,p,f;let{nextauth:h,...y}=e.query;null!==(i=r.secret)&&void 0!==i||(r.secret=null!==(a=null!==(s=null===(c=r.jwt)||void 0===c?void 0:c.secret)&&void 0!==s?s:process.env.NEXTAUTH_SECRET)&&void 0!==a?a:process.env.AUTH_SECRET);let _=await (0,n.AuthHandler)({req:{body:e.body,query:y,cookies:e.cookies,headers:e.headers,method:e.method,action:null==h?void 0:h[0],providerId:null==h?void 0:h[1],error:null!==(l=e.query.error)&&void 0!==l?l:null==h?void 0:h[1]},options:r});if(t.status(null!==(u=_.status)&&void 0!==u?u:200),null===(d=_.cookies)||void 0===d||d.forEach(e=>(0,o.setCookie)(t,e)),null===(p=_.headers)||void 0===p||p.forEach(e=>t.setHeader(e.key,e.value)),_.redirect){if((null===(f=e.body)||void 0===f?void 0:f.json)!=="true"){t.status(302).setHeader("Location",_.redirect),t.end();return}return t.json({url:_.redirect})}return t.send(_.body)}async function a(e,t,i){var a,s,c,l;null!==(a=i.secret)&&void 0!==a||(i.secret=null!==(s=process.env.NEXTAUTH_SECRET)&&void 0!==s?s:process.env.AUTH_SECRET);let{headers:u,cookies:d}=r(71615),p=null===(c=await t.params)||void 0===c?void 0:c.nextauth,f=Object.fromEntries(e.nextUrl.searchParams),h=await (0,o.getBody)(e),y=await (0,n.AuthHandler)({req:{body:h,query:f,cookies:Object.fromEntries((await d()).getAll().map(e=>[e.name,e.value])),headers:Object.fromEntries(await u()),method:e.method,action:null==p?void 0:p[0],providerId:null==p?void 0:p[1],error:null!==(l=f.error)&&void 0!==l?l:null==p?void 0:p[1]},options:i}),_=(0,o.toResponse)(y),m=_.headers.get("Location");return(null==h?void 0:h.json)==="true"&&m?(_.headers.delete("Location"),_.headers.set("Content-Type","application/json"),new Response(JSON.stringify({url:m}),{status:y.status,headers:_.headers})):_}async function s(...e){var t,i,a;let c,l,u;let d=0===e.length||1===e.length;if(d){u=Object.assign({},e[0],{providers:[]});let{headers:t,cookies:n}=r(71615);c={headers:Object.fromEntries(await t()),cookies:Object.fromEntries((await n()).getAll().map(e=>[e.name,e.value]))},l={getHeader(){},setCookie(){},setHeader(){}}}else c=e[0],l=e[1],u=Object.assign({},e[2],{providers:[]});null!==(i=(t=u).secret)&&void 0!==i||(t.secret=null!==(a=process.env.NEXTAUTH_SECRET)&&void 0!==a?a:process.env.AUTH_SECRET);let{body:p,cookies:f,status:h=200}=await (0,n.AuthHandler)({options:u,req:{action:"session",method:"GET",cookies:c.cookies,headers:c.headers}});if(null==f||f.forEach(e=>(0,o.setCookie)(l,e)),p&&"string"!=typeof p&&Object.keys(p).length){if(200===h)return d&&delete p.expires,p;throw Error(p.message)}return null}async function c(...e){return await s(...e)}t.default=function(...e){var t;return 1===e.length?async(t,r)=>null!=r&&r.params?await a(t,r,e[0]):await i(t,r,e[0]):null!==(t=e[1])&&void 0!==t&&t.params?a(...e):i(...e)}},56138:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getBody=o,t.setCookie=function(e,t){var r;let o=null!==(r=e.getHeader("Set-Cookie"))&&void 0!==r?r:[];Array.isArray(o)||(o=[o]);let{name:i,value:a,options:s}=t,c=(0,n.serialize)(i,a,s);o.push(c),e.setHeader("Set-Cookie",o)},t.toResponse=function(e){var t,r,o;let i=new Headers(null===(t=e.headers)||void 0===t?void 0:t.reduce((e,{key:t,value:r})=>(e[t]=r,e),{}));null===(r=e.cookies)||void 0===r||r.forEach(e=>{let{name:t,value:r,options:o}=e,a=(0,n.serialize)(t,r,o);i.has("Set-Cookie")?i.append("Set-Cookie",a):i.set("Set-Cookie",a)});let a=e.body;"application/json"===i.get("content-type")?a=JSON.stringify(e.body):"application/x-www-form-urlencoded"===i.get("content-type")&&(a=new URLSearchParams(e.body).toString());let s=new Response(a,{headers:i,status:e.redirect?302:null!==(o=e.status)&&void 0!==o?o:200});return e.redirect&&s.headers.set("Location",e.redirect),s};var n=r(43183);async function o(e){if(!("body"in e)||!e.body||"POST"!==e.method)return;let t=e.headers.get("content-type");return null!=t&&t.includes("application/json")?await e.json():null!=t&&t.includes("application/x-www-form-urlencoded")?Object.fromEntries(new URLSearchParams(await e.text())):void 0}},53797:(e,t)=>{"use strict";t.Z=function(e){return{id:"credentials",name:"Credentials",type:"credentials",credentials:{},authorize:()=>null,options:e}}},33302:(e,t)=>{"use strict";t.Z=function(e){return{id:"linkedin",name:"LinkedIn",type:"oauth",authorization:{url:"https://www.linkedin.com/oauth/v2/authorization",params:{scope:"openid profile email"}},token:"https://www.linkedin.com/oauth/v2/accessToken",client:{token_endpoint_auth_method:"client_secret_post"},userinfo:{url:"https://api.linkedin.com/v2/me",params:{projection:"(id,localizedFirstName,localizedLastName,profilePicture(displayImage~digitalmediaAsset:playableStreams))"}},async profile(e,t){var r,n;let o=await fetch("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))",{headers:{Authorization:`Bearer ${t.access_token}`}}),i=await o.json();return{id:e.id,name:`${e.localizedFirstName} ${e.localizedLastName}`,email:null==i||null===(r=i.elements)||void 0===r||null===(r=r[0])||void 0===r||null===(r=r["handle~"])||void 0===r?void 0:r.emailAddress,image:null===(n=e.profilePicture)||void 0===n||null===(n=n["displayImage~"])||void 0===n||null===(n=n.elements)||void 0===n||null===(n=n[0])||void 0===n||null===(n=n.identifiers)||void 0===n||null===(n=n[0])||void 0===n?void 0:n.identifier}},style:{logo:"/linkedin.svg",bg:"#069",text:"#fff"},options:e}}},35144:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.detectOrigin=function(e,t){var r;return(null!==(r=process.env.VERCEL)&&void 0!==r?r:process.env.AUTH_TRUST_HOST)?`${"http"===t?"http":"https"}://${e}`:process.env.NEXTAUTH_URL}},80878:(e,t,r)=>{"use strict";var n=r(262);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.proxyLogger=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,t=arguments.length>1?arguments[1]:void 0;try{if("undefined"==typeof window)return e;var r={},n=function(e){var n;r[e]=(n=(0,a.default)(o.default.mark(function r(n,a){var s,d;return o.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(u[e](n,a),"error"===e&&(a=l(a)),a.client=!0,s="".concat(t,"/_log"),d=new URLSearchParams(function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;t||(u.debug=function(){}),e.error&&(u.error=e.error),e.warn&&(u.warn=e.warn),e.debug&&(u.debug=e.debug)};var o=n(r(81213)),i=n(r(33679)),a=n(r(85577)),s=r(85793);function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){var t;return e instanceof Error&&!(e instanceof s.UnknownError)?{message:e.message,stack:e.stack,name:e.name}:(null!=e&&e.error&&(e.error=l(e.error),e.message=null!==(t=e.message)&&void 0!==t?t:e.error.message),e)}var u={error:function(e,t){t=l(t),console.error("[next-auth][error][".concat(e,"]"),"\nhttps://next-auth.js.org/errors#".concat(e.toLowerCase()),t.message,t)},warn:function(e){console.warn("[next-auth][warn][".concat(e,"]"),"\nhttps://next-auth.js.org/warnings#".concat(e.toLowerCase()))},debug:function(e,t){console.log("[next-auth][debug][".concat(e,"]"),t)}};t.default=u},86479:(e,t)=>{"use strict";function r(e){return e&&"object"==typeof e&&!Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.merge=function e(t,...n){if(!n.length)return t;let o=n.shift();if(r(t)&&r(o))for(let n in o)r(o[n])?(t[n]||Object.assign(t,{[n]:{}}),e(t[n],o[n])):Object.assign(t,{[n]:o[n]});return e(t,...n)}},33768:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t;let r=new URL("http://localhost:3000/api/auth");e&&!e.startsWith("http")&&(e=`https://${e}`);let n=new URL(null!==(t=e)&&void 0!==t?t:r),o=("/"===n.pathname?r.pathname:n.pathname).replace(/\/$/,""),i=`${n.origin}${o}`;return{origin:n.origin,host:n.host,path:o,base:i,toString:()=>i}}},71615:(e,t,r)=>{"use strict";r.r(t);var n=r(88757),o={};for(let e in n)"default"!==e&&(o[e]=()=>n[e]);r.d(t,o)},33085:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DraftMode",{enumerable:!0,get:function(){return i}});let n=r(45869),o=r(6278);class i{get isEnabled(){return this._provider.isEnabled}enable(){let e=n.staticGenerationAsyncStorage.getStore();return e&&(0,o.trackDynamicDataAccessed)(e,"draftMode().enable()"),this._provider.enable()}disable(){let e=n.staticGenerationAsyncStorage.getStore();return e&&(0,o.trackDynamicDataAccessed)(e,"draftMode().disable()"),this._provider.disable()}constructor(e){this._provider=e}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},88757:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{cookies:function(){return p},draftMode:function(){return f},headers:function(){return d}});let n=r(68996),o=r(53047),i=r(92044),a=r(72934),s=r(33085),c=r(6278),l=r(45869),u=r(54580);function d(){let e="headers",t=l.staticGenerationAsyncStorage.getStore();if(t){if(t.forceStatic)return o.HeadersAdapter.seal(new Headers({}));(0,c.trackDynamicDataAccessed)(t,e)}return(0,u.getExpectedRequestStore)(e).headers}function p(){let e="cookies",t=l.staticGenerationAsyncStorage.getStore();if(t){if(t.forceStatic)return n.RequestCookiesAdapter.seal(new i.RequestCookies(new Headers({})));(0,c.trackDynamicDataAccessed)(t,e)}let r=(0,u.getExpectedRequestStore)(e),o=a.actionAsyncStorage.getStore();return(null==o?void 0:o.isAction)||(null==o?void 0:o.isAppRoute)?r.mutableCookies:r.cookies}function f(){let e=(0,u.getExpectedRequestStore)("draftMode");return new s.DraftMode(e.draftMode)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},79925:e=>{"use strict";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i={};function a(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function s(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,o]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=o?o:"true"))}catch{}}return t}function c(e){var t,r;if(!e)return;let[[n,o],...i]=s(e),{domain:a,expires:c,httponly:d,maxage:p,path:f,samesite:h,secure:y,partitioned:_,priority:m}=Object.fromEntries(i.map(([e,t])=>[e.toLowerCase(),t]));return function(e){let t={};for(let r in e)e[r]&&(t[r]=e[r]);return t}({name:n,value:decodeURIComponent(o),domain:a,...c&&{expires:new Date(c)},...d&&{httpOnly:!0},..."string"==typeof p&&{maxAge:Number(p)},path:f,...h&&{sameSite:l.includes(t=(t=h).toLowerCase())?t:void 0},...y&&{secure:!0},...m&&{priority:u.includes(r=(r=m).toLowerCase())?r:void 0},..._&&{partitioned:!0}})}((e,r)=>{for(var n in r)t(e,n,{get:r[n],enumerable:!0})})(i,{RequestCookies:()=>d,ResponseCookies:()=>p,parseCookie:()=>s,parseSetCookie:()=>c,stringifyCookie:()=>a}),e.exports=((e,i,a,s)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of n(i))o.call(e,c)||c===a||t(e,c,{get:()=>i[c],enumerable:!(s=r(i,c))||s.enumerable});return e})(t({},"__esModule",{value:!0}),i);var l=["strict","lax","none"],u=["low","medium","high"],d=class{constructor(e){this._parsed=new Map,this._headers=e;let t=e.get("cookie");if(t)for(let[e,r]of s(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>a(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>a(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},p=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;let o=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(let e of Array.isArray(o)?o:function(e){if(!e)return[];var t,r,n,o,i,a=[],s=0;function c(){for(;s=e.length)&&a.push(e.substring(t,e.length))}return a}(o)){let t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,o=this._parsed;return o.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=a(r);t.append("set-cookie",e)}}(o,this._headers),this}delete(...e){let[t,r,n]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0].path,e[0].domain];return this.set({name:t,path:r,domain:n,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(a).join("; ")}}},49303:(e,t,r)=>{"use strict";e.exports=r(30517)},53047:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HeadersAdapter:function(){return i},ReadonlyHeadersError:function(){return o}});let n=r(38238);class o extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new o}}class i extends Headers{constructor(e){super(),this.headers=new Proxy(e,{get(t,r,o){if("symbol"==typeof r)return n.ReflectAdapter.get(t,r,o);let i=r.toLowerCase(),a=Object.keys(e).find(e=>e.toLowerCase()===i);if(void 0!==a)return n.ReflectAdapter.get(t,a,o)},set(t,r,o,i){if("symbol"==typeof r)return n.ReflectAdapter.set(t,r,o,i);let a=r.toLowerCase(),s=Object.keys(e).find(e=>e.toLowerCase()===a);return n.ReflectAdapter.set(t,s??r,o,i)},has(t,r){if("symbol"==typeof r)return n.ReflectAdapter.has(t,r);let o=r.toLowerCase(),i=Object.keys(e).find(e=>e.toLowerCase()===o);return void 0!==i&&n.ReflectAdapter.has(t,i)},deleteProperty(t,r){if("symbol"==typeof r)return n.ReflectAdapter.deleteProperty(t,r);let o=r.toLowerCase(),i=Object.keys(e).find(e=>e.toLowerCase()===o);return void 0===i||n.ReflectAdapter.deleteProperty(t,i)}})}static seal(e){return new Proxy(e,{get(e,t,r){switch(t){case"append":case"delete":case"set":return o.callable;default:return n.ReflectAdapter.get(e,t,r)}}})}merge(e){return Array.isArray(e)?e.join(", "):e}static from(e){return e instanceof Headers?e:new i(e)}append(e,t){let r=this.headers[e];"string"==typeof r?this.headers[e]=[r,t]:Array.isArray(r)?r.push(t):this.headers[e]=t}delete(e){delete this.headers[e]}get(e){let t=this.headers[e];return void 0!==t?this.merge(t):null}has(e){return void 0!==this.headers[e]}set(e,t){this.headers[e]=t}forEach(e,t){for(let[r,n]of this.entries())e.call(t,n,r,this)}*entries(){for(let e of Object.keys(this.headers)){let t=e.toLowerCase(),r=this.get(t);yield[t,r]}}*keys(){for(let e of Object.keys(this.headers)){let t=e.toLowerCase();yield t}}*values(){for(let e of Object.keys(this.headers)){let t=this.get(e);yield t}}[Symbol.iterator](){return this.entries()}}},68996:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{MutableRequestCookiesAdapter:function(){return d},ReadonlyRequestCookiesError:function(){return a},RequestCookiesAdapter:function(){return s},appendMutableCookies:function(){return u},getModifiedCookieValues:function(){return l}});let n=r(92044),o=r(38238),i=r(45869);class a extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options")}static callable(){throw new a}}class s{static seal(e){return new Proxy(e,{get(e,t,r){switch(t){case"clear":case"delete":case"set":return a.callable;default:return o.ReflectAdapter.get(e,t,r)}}})}}let c=Symbol.for("next.mutated.cookies");function l(e){let t=e[c];return t&&Array.isArray(t)&&0!==t.length?t:[]}function u(e,t){let r=l(t);if(0===r.length)return!1;let o=new n.ResponseCookies(e),i=o.getAll();for(let e of r)o.set(e);for(let e of i)o.set(e);return!0}class d{static wrap(e,t){let r=new n.ResponseCookies(new Headers);for(let t of e.getAll())r.set(t);let a=[],s=new Set,l=()=>{let e=i.staticGenerationAsyncStorage.getStore();if(e&&(e.pathWasRevalidated=!0),a=r.getAll().filter(e=>s.has(e.name)),t){let e=[];for(let t of a){let r=new n.ResponseCookies(new Headers);r.set(t),e.push(r.toString())}t(e)}};return new Proxy(r,{get(e,t,r){switch(t){case c:return a;case"delete":return function(...t){s.add("string"==typeof t[0]?t[0]:t[0].name);try{e.delete(...t)}finally{l()}};case"set":return function(...t){s.add("string"==typeof t[0]?t[0]:t[0].name);try{return e.set(...t)}finally{l()}};default:return o.ReflectAdapter.get(e,t,r)}}})}}},92044:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RequestCookies:function(){return n.RequestCookies},ResponseCookies:function(){return n.ResponseCookies},stringifyCookie:function(){return n.stringifyCookie}});let n=r(79925)},66234:(e,t,r)=>{t.OAuth=r(52252).OAuth,t.OAuthEcho=r(52252).OAuthEcho,t.OAuth2=r(81788).OAuth2},50823:e=>{e.exports.isAnEarlyCloseHost=function(e){return e&&e.match(".*google(apis)?.com$")}},52252:(e,t,r)=>{var n=r(84770),o=r(24985),i=r(32615),a=r(35240),s=r(17360),c=r(86624),l=r(50823);t.OAuth=function(e,t,r,n,o,i,a,s,c){if(this._isEcho=!1,this._requestUrl=e,this._accessUrl=t,this._consumerKey=r,this._consumerSecret=this._encodeData(n),"RSA-SHA1"==a&&(this._privateKey=n),this._version=o,void 0===i?this._authorize_callback="oob":this._authorize_callback=i,"PLAINTEXT"!=a&&"HMAC-SHA1"!=a&&"RSA-SHA1"!=a)throw Error("Un-supported signature method: "+a);this._signatureMethod=a,this._nonceSize=s||32,this._headers=c||{Accept:"*/*",Connection:"close","User-Agent":"Node authentication"},this._clientOptions=this._defaultClientOptions={requestTokenHttpMethod:"POST",accessTokenHttpMethod:"POST",followRedirects:!0},this._oauthParameterSeperator=","},t.OAuthEcho=function(e,t,r,n,o,i,a,s){if(this._isEcho=!0,this._realm=e,this._verifyCredentials=t,this._consumerKey=r,this._consumerSecret=this._encodeData(n),"RSA-SHA1"==i&&(this._privateKey=n),this._version=o,"PLAINTEXT"!=i&&"HMAC-SHA1"!=i&&"RSA-SHA1"!=i)throw Error("Un-supported signature method: "+i);this._signatureMethod=i,this._nonceSize=a||32,this._headers=s||{Accept:"*/*",Connection:"close","User-Agent":"Node authentication"},this._oauthParameterSeperator=","},t.OAuthEcho.prototype=t.OAuth.prototype,t.OAuth.prototype._getTimestamp=function(){return Math.floor(new Date().getTime()/1e3)},t.OAuth.prototype._encodeData=function(e){return null==e||""==e?"":encodeURIComponent(e).replace(/\!/g,"%21").replace(/\'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A")},t.OAuth.prototype._decodeData=function(e){return null!=e&&(e=e.replace(/\+/g," ")),decodeURIComponent(e)},t.OAuth.prototype._getSignature=function(e,t,r,n){var o=this._createSignatureBase(e,t,r);return this._createSignature(o,n)},t.OAuth.prototype._normalizeUrl=function(e){var t=s.parse(e,!0),r="";return t.port&&("http:"==t.protocol&&"80"!=t.port||"https:"==t.protocol&&"443"!=t.port)&&(r=":"+t.port),t.pathname&&""!=t.pathname||(t.pathname="/"),t.protocol+"//"+t.hostname+r+t.pathname},t.OAuth.prototype._isParameterNameAnOAuthParameter=function(e){var t=e.match("^oauth_");return!!t&&"oauth_"===t[0]},t.OAuth.prototype._buildAuthorizationHeaders=function(e){var t="OAuth ";this._isEcho&&(t+='realm="'+this._realm+'",');for(var r=0;r=200&&n.statusCode<=299?u(null,v,n):(301==n.statusCode||302==n.statusCode)&&g.followRedirects&&n.headers&&n.headers.location?w._performSecureRequest(e,t,r,n.headers.location,o,i,a,u):u({statusCode:n.statusCode,data:v},v,n))};p.on("response",function(e){e.setEncoding("utf8"),e.on("data",function(e){v+=e}),e.on("end",function(){S(e)}),e.on("close",function(){b&&S(e)})}),p.on("error",function(e){k||(k=!0,u(e))}),("POST"==r||"PUT"==r)&&null!=i&&""!=i&&p.write(i),p.end()},t.OAuth.prototype.setClientOptions=function(e){var t,r={},n=Object.prototype.hasOwnProperty;for(t in this._defaultClientOptions)n.call(e,t)?r[t]=e[t]:r[t]=this._defaultClientOptions[t];this._clientOptions=r},t.OAuth.prototype.getOAuthAccessToken=function(e,t,r,n){var o={};"function"==typeof r?n=r:o.oauth_verifier=r,this._performSecureRequest(e,t,this._clientOptions.accessTokenHttpMethod,this._accessUrl,o,null,null,function(e,t,r){if(e)n(e);else{var o=c.parse(t),i=o.oauth_token;delete o.oauth_token;var a=o.oauth_token_secret;delete o.oauth_token_secret,n(null,i,a,o)}})},t.OAuth.prototype.getProtectedResource=function(e,t,r,n,o){this._performSecureRequest(r,n,t,e,null,"",null,o)},t.OAuth.prototype.delete=function(e,t,r,n){return this._performSecureRequest(t,r,"DELETE",e,null,"",null,n)},t.OAuth.prototype.get=function(e,t,r,n){return this._performSecureRequest(t,r,"GET",e,null,"",null,n)},t.OAuth.prototype._putOrPost=function(e,t,r,n,o,i,a){var s=null;return"function"==typeof i&&(a=i,i=null),"string"==typeof o||Buffer.isBuffer(o)||(i="application/x-www-form-urlencoded",s=o,o=null),this._performSecureRequest(r,n,e,t,s,o,i,a)},t.OAuth.prototype.put=function(e,t,r,n,o,i){return this._putOrPost("PUT",e,t,r,n,o,i)},t.OAuth.prototype.post=function(e,t,r,n,o,i){return this._putOrPost("POST",e,t,r,n,o,i)},t.OAuth.prototype.getOAuthRequestToken=function(e,t){"function"==typeof e&&(t=e,e={}),this._authorize_callback&&(e.oauth_callback=this._authorize_callback),this._performSecureRequest(null,null,this._clientOptions.requestTokenHttpMethod,this._requestUrl,e,null,null,function(e,r,n){if(e)t(e);else{var o=c.parse(r),i=o.oauth_token,a=o.oauth_token_secret;delete o.oauth_token,delete o.oauth_token_secret,t(null,i,a,o)}})},t.OAuth.prototype.signUrl=function(e,t,r,n){if(void 0===n)var n="GET";for(var o=this._prepareParameters(t,r,n,e,{}),i=s.parse(e,!1),a="",c=0;c{var n=r(86624),o=(r(84770),r(35240)),i=r(32615),a=r(17360),s=r(50823);t.OAuth2=function(e,t,r,n,o,i){this._clientId=e,this._clientSecret=t,this._baseSite=r,this._authorizeUrl=n||"/oauth/authorize",this._accessTokenUrl=o||"/oauth/access_token",this._accessTokenName="access_token",this._authMethod="Bearer",this._customHeaders=i||{},this._useAuthorizationHeaderForGET=!1,this._agent=void 0},t.OAuth2.prototype.setAgent=function(e){this._agent=e},t.OAuth2.prototype.setAccessTokenName=function(e){this._accessTokenName=e},t.OAuth2.prototype.setAuthMethod=function(e){this._authMethod=e},t.OAuth2.prototype.useAuthorizationHeaderforGET=function(e){this._useAuthorizationHeaderForGET=e},t.OAuth2.prototype._getAccessTokenUrl=function(){return this._baseSite+this._accessTokenUrl},t.OAuth2.prototype.buildAuthHeader=function(e){return this._authMethod+" "+e},t.OAuth2.prototype._chooseHttpLibrary=function(e){var t=o;return"https:"!=e.protocol&&(t=i),t},t.OAuth2.prototype._request=function(e,t,r,o,i,s){var c=a.parse(t,!0);"https:"!=c.protocol||c.port||(c.port=443);var l=this._chooseHttpLibrary(c),u={};for(var d in this._customHeaders)u[d]=this._customHeaders[d];if(r)for(var d in r)u[d]=r[d];u.Host=c.host,u["User-Agent"]||(u["User-Agent"]="Node-oauth"),o?Buffer.isBuffer(o)?u["Content-Length"]=o.length:u["Content-Length"]=Buffer.byteLength(o):u["Content-length"]=0,!i||"Authorization"in u||(c.query||(c.query={}),c.query[this._accessTokenName]=i);var p=n.stringify(c.query);p&&(p="?"+p);var f={host:c.hostname,port:c.port,path:c.pathname+p,method:e,headers:u};this._executeRequest(l,f,o,s)},t.OAuth2.prototype._executeRequest=function(e,t,r,n){var o=s.isAnEarlyCloseHost(t.host),i=!1;function a(e,t){i||(i=!0,e.statusCode>=200&&e.statusCode<=299||301==e.statusCode||302==e.statusCode?n(null,t,e):n({statusCode:e.statusCode,data:t}))}var c="";this._agent&&(t.agent=this._agent);var l=e.request(t);l.on("response",function(e){e.on("data",function(e){c+=e}),e.on("close",function(t){o&&a(e,c)}),e.addListener("end",function(){a(e,c)})}),l.on("error",function(e){i=!0,n(e)}),("POST"==t.method||"PUT"==t.method)&&r&&l.write(r),l.end()},t.OAuth2.prototype.getAuthorizeUrl=function(e){var e=e||{};return e.client_id=this._clientId,this._baseSite+this._authorizeUrl+"?"+n.stringify(e)},t.OAuth2.prototype.getOAuthAccessToken=function(e,t,r){var t=t||{};t.client_id=this._clientId,t.client_secret=this._clientSecret;var o="refresh_token"===t.grant_type?"refresh_token":"code";t[o]=e;var i=n.stringify(t);this._request("POST",this._getAccessTokenUrl(),{"Content-Type":"application/x-www-form-urlencoded"},i,null,function(e,t,o){if(e)r(e);else{try{i=JSON.parse(t)}catch(e){i=n.parse(t)}var i,a=i.access_token,s=i.refresh_token;delete i.refresh_token,r(null,a,s,i)}})},t.OAuth2.prototype.getProtectedResource=function(e,t,r){this._request("GET",e,{},"",t,r)},t.OAuth2.prototype.get=function(e,t,r){if(this._useAuthorizationHeaderForGET){var n={Authorization:this.buildAuthHeader(t)};t=null}else n={};this._request("GET",e,n,"",t,r)}},24985:(e,t)=>{function r(e){for(var t,r,n="",o=-1;++o>>6&31,128|63&t):t<=65535?n+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):t<=2097151&&(n+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t));return n}function n(e){for(var t=Array(e.length>>2),r=0;r>5]|=(255&e.charCodeAt(r/8))<<24-r%32;return t}function o(e,t){e[t>>5]|=128<<24-t%32,e[(t+64>>9<<4)+15]=t;for(var r=Array(80),n=1732584193,o=-271733879,s=-1732584194,c=271733878,l=-1009589776,u=0;u>16)+(t>>16)+(r>>16)<<16|65535&r}function a(e,t){return e<>>32-t}t.HMACSHA1=function(e,t){return function(e){for(var t="",r=e.length,n=0;n8*e.length?t+="=":t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(o>>>6*(3-i)&63);return t}(function(e,t){var r=n(e);r.length>16&&(r=o(r,8*e.length));for(var i=Array(16),a=Array(16),s=0;s<16;s++)i[s]=909522486^r[s],a[s]=1549556828^r[s];var c=o(i.concat(n(t)),512+8*t.length);return function(e){for(var t="",r=0;r<32*e.length;r+=8)t+=String.fromCharCode(e[r>>5]>>>24-r%32&255);return t}(o(a.concat(c),672))}(r(e),r(t)))}},75871:(e,t,r)=>{"use strict";var n=r(84770);function o(e,t){return t=s(e,t),function(e,t){if(void 0===(r="passthrough"!==t.algorithm?n.createHash(t.algorithm):new u).write&&(r.write=r.update,r.end=r.update),l(t,r).dispatch(e),r.update||r.end(""),r.digest)return r.digest("buffer"===t.encoding?void 0:t.encoding);var r,o=r.read();return"buffer"===t.encoding?o:o.toString(t.encoding)}(e,t)}(t=e.exports=o).sha1=function(e){return o(e)},t.keys=function(e){return o(e,{excludeValues:!0,algorithm:"sha1",encoding:"hex"})},t.MD5=function(e){return o(e,{algorithm:"md5",encoding:"hex"})},t.keysMD5=function(e){return o(e,{algorithm:"md5",encoding:"hex",excludeValues:!0})};var i=n.getHashes?n.getHashes().slice():["sha1","md5"];i.push("passthrough");var a=["buffer","hex","binary","base64"];function s(e,t){t=t||{};var r={};if(r.algorithm=t.algorithm||"sha1",r.encoding=t.encoding||"hex",r.excludeValues=!!t.excludeValues,r.algorithm=r.algorithm.toLowerCase(),r.encoding=r.encoding.toLowerCase(),r.ignoreUnknown=!0===t.ignoreUnknown,r.respectType=!1!==t.respectType,r.respectFunctionNames=!1!==t.respectFunctionNames,r.respectFunctionProperties=!1!==t.respectFunctionProperties,r.unorderedArrays=!0===t.unorderedArrays,r.unorderedSets=!1!==t.unorderedSets,r.unorderedObjects=!1!==t.unorderedObjects,r.replacer=t.replacer||void 0,r.excludeKeys=t.excludeKeys||void 0,void 0===e)throw Error("Object argument required.");for(var n=0;n=0)return this.dispatch("[CIRCULAR:"+a+"]");if(r.push(t),"undefined"!=typeof Buffer&&Buffer.isBuffer&&Buffer.isBuffer(t))return n("buffer:"),n(t);if("object"!==i&&"function"!==i&&"asyncfunction"!==i){if(this["_"+i])this["_"+i](t);else if(e.ignoreUnknown)return n("["+i+"]");else throw Error('Unknown object type "'+i+'"')}else{var s=Object.keys(t);e.unorderedObjects&&(s=s.sort()),!1===e.respectType||c(t)||s.splice(0,0,"prototype","__proto__","constructor"),e.excludeKeys&&(s=s.filter(function(t){return!e.excludeKeys(t)})),n("object:"+s.length+":");var l=this;return s.forEach(function(r){l.dispatch(r),n(":"),e.excludeValues||l.dispatch(t[r]),n(",")})}},_array:function(t,o){o=void 0!==o?o:!1!==e.unorderedArrays;var i=this;if(n("array:"+t.length+":"),!o||t.length<=1)return t.forEach(function(e){return i.dispatch(e)});var a=[],s=t.map(function(t){var n=new u,o=r.slice();return l(e,n,o).dispatch(t),a=a.concat(o.slice(r.length)),n.read().toString()});return r=r.concat(a),s.sort(),this._array(s,!1)},_date:function(e){return n("date:"+e.toJSON())},_symbol:function(e){return n("symbol:"+e.toString())},_error:function(e){return n("error:"+e.toString())},_boolean:function(e){return n("bool:"+e.toString())},_string:function(e){n("string:"+e.length+":"),n(e.toString())},_function:function(t){n("fn:"),c(t)?this.dispatch("[native]"):this.dispatch(t.toString()),!1!==e.respectFunctionNames&&this.dispatch("function-name:"+String(t.name)),e.respectFunctionProperties&&this._object(t)},_number:function(e){return n("number:"+e.toString())},_xml:function(e){return n("xml:"+e.toString())},_null:function(){return n("Null")},_undefined:function(){return n("Undefined")},_regexp:function(e){return n("regex:"+e.toString())},_uint8array:function(e){return n("uint8array:"),this.dispatch(Array.prototype.slice.call(e))},_uint8clampedarray:function(e){return n("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(e))},_int8array:function(e){return n("uint8array:"),this.dispatch(Array.prototype.slice.call(e))},_uint16array:function(e){return n("uint16array:"),this.dispatch(Array.prototype.slice.call(e))},_int16array:function(e){return n("uint16array:"),this.dispatch(Array.prototype.slice.call(e))},_uint32array:function(e){return n("uint32array:"),this.dispatch(Array.prototype.slice.call(e))},_int32array:function(e){return n("uint32array:"),this.dispatch(Array.prototype.slice.call(e))},_float32array:function(e){return n("float32array:"),this.dispatch(Array.prototype.slice.call(e))},_float64array:function(e){return n("float64array:"),this.dispatch(Array.prototype.slice.call(e))},_arraybuffer:function(e){return n("arraybuffer:"),this.dispatch(new Uint8Array(e))},_url:function(e){return n("url:"+e.toString(),"utf8")},_map:function(t){n("map:");var r=Array.from(t);return this._array(r,!1!==e.unorderedSets)},_set:function(t){n("set:");var r=Array.from(t);return this._array(r,!1!==e.unorderedSets)},_file:function(e){return n("file:"),this.dispatch([e.name,e.size,e.type,e.lastModfied])},_blob:function(){if(e.ignoreUnknown)return n("[blob]");throw Error('Hashing Blob objects is currently not supported\n(see https://github.com/puleos/object-hash/issues/26)\nUse "options.replacer" or "options.ignoreUnknown"\n')},_domwindow:function(){return n("domwindow")},_bigint:function(e){return n("bigint:"+e.toString())},_process:function(){return n("process")},_timer:function(){return n("timer")},_pipe:function(){return n("pipe")},_tcp:function(){return n("tcp")},_udp:function(){return n("udp")},_tty:function(){return n("tty")},_statwatcher:function(){return n("statwatcher")},_securecontext:function(){return n("securecontext")},_connection:function(){return n("connection")},_zlib:function(){return n("zlib")},_context:function(){return n("context")},_nodescript:function(){return n("nodescript")},_httpparser:function(){return n("httpparser")},_dataview:function(){return n("dataview")},_signal:function(){return n("signal")},_fsevent:function(){return n("fsevent")},_tlswrap:function(){return n("tlswrap")}}}function u(){return{buf:"",write:function(e){this.buf+=e},end:function(e){this.buf+=e},read:function(){return this.buf}}}t.writeToStream=function(e,t,r){return void 0===r&&(r=t,t={}),l(t=s(e,t),r).dispatch(e)}},87302:(e,t,r)=>{let n;let{strict:o}=r(27790),{createHash:i}=r(84770),{format:a}=r(21764);if(Buffer.isEncoding("base64url"))n=e=>e.toString("base64url");else{let e=e=>e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_");n=t=>e(t.toString("base64"))}function s(e,t,r){let o=(function(e,t){switch(e){case"HS256":case"RS256":case"PS256":case"ES256":case"ES256K":return i("sha256");case"HS384":case"RS384":case"PS384":case"ES384":return i("sha384");case"HS512":case"RS512":case"PS512":case"ES512":case"Ed25519":return i("sha512");case"Ed448":return i("shake256",{outputLength:114});case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":return i("shake256",{outputLength:64});case"EdDSA":switch(t){case"Ed25519":return i("sha512");case"Ed448":return i("shake256",{outputLength:114});default:throw TypeError("unrecognized or invalid EdDSA curve provided")}default:throw TypeError("unrecognized or invalid JWS algorithm provided")}})(t,r).update(e).digest();return n(o.slice(0,o.length/2))}e.exports={validate:function(e,t,r,n,i){let c,l;if("string"!=typeof e.claim||!e.claim)throw TypeError("names.claim must be a non-empty string");if("string"!=typeof e.source||!e.source)throw TypeError("names.source must be a non-empty string");o("string"==typeof t&&t,`${e.claim} must be a non-empty string`),o("string"==typeof r&&r,`${e.source} must be a non-empty string`);try{c=s(r,n,i)}catch(t){l=a("%s could not be validated (%s)",e.claim,t.message)}l=l||a("%s mismatch, expected %s, got: %s",e.claim,c,t),o.equal(c,t,l)},generate:s}},80137:(e,t,r)=>{"use strict";let n;let{inspect:o}=r(21764),i=r(32615),a=r(84770),{strict:s}=r(27790),c=r(86624),l=r(17360),{URL:u,URLSearchParams:d}=r(17360),p=r(39797),f=r(87302),h=r(74655),y=r(45820),_=r(69080),m=r(69054),g=r(15070),{assertSigningAlgValuesSupport:v,assertIssuerConfiguration:w}=r(914),b=r(58945),k=r(8140),S=r(83818),E=r(80536),{OPError:A,RPError:O}=r(80994),x=r(46438),{random:P}=r(47389),T=r(82472),{CLOCK_TOLERANCE:C}=r(77731),{keystores:j}=r(25602),J=r(56310),W=r(52936),{authenticatedPost:I,resolveResponseType:R,resolveRedirectUri:H}=r(36223),{queryKeyStore:M}=r(92792),K=r(16670),[U,$]=process.version.slice(1).split(".").map(e=>parseInt(e,10)),D=U>=17||16===U&&$>=9,N=Symbol(),L=Symbol(),B=Symbol();function q(e){return b(e,"access_token","code","error_description","error_uri","error","expires_in","id_token","iss","response","session_state","state","token_type")}function z(e,t="Bearer"){return`${t} ${e}`}function F(e){let t=l.parse(e);return t.search?c.parse(t.search.substring(1)):{}}function G(e,t,r){if(void 0===e[r])throw new O({message:`missing required JWT property ${r}`,jwt:t})}function V(e){let t={client_id:this.client_id,scope:"openid",response_type:R.call(this),redirect_uri:H.call(this),...e};return Object.entries(t).forEach(([e,r])=>{null==r?delete t[e]:"claims"===e&&"object"==typeof r?t[e]=JSON.stringify(r):"resource"===e&&Array.isArray(r)?t[e]=r:"string"!=typeof r&&(t[e]=String(r))}),t}function X(e){if(!k(e)||!Array.isArray(e.keys)||e.keys.some(e=>!k(e)||!("kty"in e)))throw TypeError("jwks must be a JSON Web Key Set formatted object");return J.fromJWKS(e,{onlyPrivate:!0})}class Y{#e;#t;#r;#n;constructor(e,t,r={},n,o){if(this.#e=new Map,this.#t=e,this.#r=t,"string"!=typeof r.client_id||!r.client_id)throw TypeError("client_id is required");let i={grant_types:["authorization_code"],id_token_signed_response_alg:"RS256",authorization_signed_response_alg:"RS256",response_types:["code"],token_endpoint_auth_method:"client_secret_basic",...this.fapi1()?{grant_types:["authorization_code","implicit"],id_token_signed_response_alg:"PS256",authorization_signed_response_alg:"PS256",response_types:["code id_token"],tls_client_certificate_bound_access_tokens:!0,token_endpoint_auth_method:void 0}:void 0,...this.fapi2()?{id_token_signed_response_alg:"PS256",authorization_signed_response_alg:"PS256",token_endpoint_auth_method:void 0}:void 0,...r};if(this.fapi())switch(i.token_endpoint_auth_method){case"self_signed_tls_client_auth":case"tls_client_auth":break;case"private_key_jwt":if(!n)throw TypeError("jwks is required");break;case void 0:throw TypeError("token_endpoint_auth_method is required");default:throw TypeError("invalid or unsupported token_endpoint_auth_method")}if(this.fapi2()&&(i.tls_client_certificate_bound_access_tokens&&i.dpop_bound_access_tokens||!i.tls_client_certificate_bound_access_tokens&&!i.dpop_bound_access_tokens))throw TypeError("either tls_client_certificate_bound_access_tokens or dpop_bound_access_tokens must be set to true");if(function(e,t,r){if(t.token_endpoint_auth_method||function(e,t){try{let r=e.issuer.token_endpoint_auth_methods_supported;!r.includes(t.token_endpoint_auth_method)&&r.includes("client_secret_post")&&(t.token_endpoint_auth_method="client_secret_post")}catch(e){}}(e,r),t.redirect_uri){if(t.redirect_uris)throw TypeError("provide a redirect_uri or redirect_uris, not both");r.redirect_uris=[t.redirect_uri],delete r.redirect_uri}if(t.response_type){if(t.response_types)throw TypeError("provide a response_type or response_types, not both");r.response_types=[t.response_type],delete r.response_type}}(this,r,i),v("token",this.issuer,i),["introspection","revocation"].forEach(e=>{(function(e,t,r){if(!t[`${e}_endpoint`])return;let n=r.token_endpoint_auth_method,o=r.token_endpoint_auth_signing_alg,i=`${e}_endpoint_auth_method`,a=`${e}_endpoint_auth_signing_alg`;void 0===r[i]&&void 0===r[a]&&(void 0!==n&&(r[i]=n),void 0!==o&&(r[a]=o))})(e,this.issuer,i),v(e,this.issuer,i)}),Object.entries(i).forEach(([e,t])=>{this.#e.set(e,t),this[e]||Object.defineProperty(this,e,{get(){return this.#e.get(e)},enumerable:!0})}),void 0!==n){let e=X.call(this,n);j.set(this,e)}null!=o&&o.additionalAuthorizedParties&&(this.#n=W(o.additionalAuthorizedParties)),this[C]=0}authorizationUrl(e={}){if(!k(e))throw TypeError("params must be a plain object");w(this.issuer,"authorization_endpoint");let t=new u(this.issuer.authorization_endpoint);for(let[r,n]of Object.entries(V.call(this,e)))if(Array.isArray(n))for(let e of(t.searchParams.delete(r),n))t.searchParams.append(r,e);else t.searchParams.set(r,n);return t.href.replace(/\+/g,"%20")}authorizationPost(e={}){if(!k(e))throw TypeError("params must be a plain object");let t=V.call(this,e),r=Object.keys(t).map(e=>``).join("\n");return` + +Requesting Authorization + + +
            + ${r} +
            + +`}endSessionUrl(e={}){let t;w(this.issuer,"end_session_endpoint");let{0:r,length:n}=this.post_logout_redirect_uris||[],{post_logout_redirect_uri:o=1===n?r:void 0}=e;if({id_token_hint:t,...e}=e,t instanceof E){if(!t.id_token)throw TypeError("id_token not present in TokenSet");t=t.id_token}let i=l.parse(this.issuer.end_session_endpoint),a=m(F(this.issuer.end_session_endpoint),e,{post_logout_redirect_uri:o,client_id:this.client_id},{id_token_hint:t});return Object.entries(a).forEach(([e,t])=>{null==t&&delete a[e]}),i.search=null,i.query=a,l.format(i)}callbackParams(e){let t=e instanceof i.IncomingMessage||e&&e.method&&e.url;if("string"!=typeof e&&!t)throw TypeError("#callbackParams only accepts string urls, http.IncomingMessage or a lookalike");if(!t)return q(F(e));switch(e.method){case"GET":return q(F(e.url));case"POST":if(void 0===e.body)throw TypeError("incoming message body missing, include a body parser prior to this method call");switch(typeof e.body){case"object":case"string":if(Buffer.isBuffer(e.body))return q(c.parse(e.body.toString("utf-8")));if("string"==typeof e.body)return q(c.parse(e.body));return q(e.body);default:throw TypeError("invalid IncomingMessage body object")}default:throw TypeError("invalid IncomingMessage method")}}async callback(e,t,r={},{exchangeBody:n,clientAssertionPayload:o,DPoP:i}={}){let a=q(t);if(!r.jarm||"response"in t){if("response"in t){let e=await this.decryptJARM(a.response);a=await this.validateJARM(e)}}else throw new O({message:"expected a JARM response",checks:r,params:a});if(this.default_max_age&&!r.max_age&&(r.max_age=this.default_max_age),a.state&&!r.state)throw TypeError("checks.state argument is missing");if(!a.state&&r.state)throw new O({message:"state missing from the response",checks:r,params:a});if(r.state!==a.state)throw new O({printf:["state mismatch, expected %s, got: %s",r.state,a.state],checks:r,params:a});if("iss"in a){if(w(this.issuer,"issuer"),a.iss!==this.issuer.issuer)throw new O({printf:["iss mismatch, expected %s, got: %s",this.issuer.issuer,a.iss],params:a})}else if(this.issuer.authorization_response_iss_parameter_supported&&!("id_token"in a)&&!("response"in t))throw new O({message:"iss missing from the response",params:a});if(a.error)throw new A(a);let s={code:["code"],id_token:["id_token"],token:["access_token","token_type"]};if(r.response_type){for(let e of r.response_type.split(" "))if("none"===e){if(a.code||a.id_token||a.access_token)throw new O({message:'unexpected params encountered for "none" response',checks:r,params:a})}else for(let t of s[e])if(!a[t])throw new O({message:`${t} missing from response`,checks:r,params:a})}if(a.id_token){let e=new E(a);if(await this.decryptIdToken(e),await this.validateIdToken(e,r.nonce,"authorization",r.max_age,r.state),!a.code)return e}if(a.code){let t=await this.grant({...n,grant_type:"authorization_code",code:a.code,redirect_uri:e,code_verifier:r.code_verifier},{clientAssertionPayload:o,DPoP:i});return await this.decryptIdToken(t),await this.validateIdToken(t,r.nonce,"token",r.max_age),a.session_state&&(t.session_state=a.session_state),t}return new E(a)}async oauthCallback(e,t,r={},{exchangeBody:n,clientAssertionPayload:o,DPoP:i}={}){let a=q(t);if(!r.jarm||"response"in t){if("response"in t){let e=await this.decryptJARM(a.response);a=await this.validateJARM(e)}}else throw new O({message:"expected a JARM response",checks:r,params:a});if(a.state&&!r.state)throw TypeError("checks.state argument is missing");if(!a.state&&r.state)throw new O({message:"state missing from the response",checks:r,params:a});if(r.state!==a.state)throw new O({printf:["state mismatch, expected %s, got: %s",r.state,a.state],checks:r,params:a});if("iss"in a){if(w(this.issuer,"issuer"),a.iss!==this.issuer.issuer)throw new O({printf:["iss mismatch, expected %s, got: %s",this.issuer.issuer,a.iss],params:a})}else if(this.issuer.authorization_response_iss_parameter_supported&&!("id_token"in a)&&!("response"in t))throw new O({message:"iss missing from the response",params:a});if(a.error)throw new A(a);if("string"==typeof a.id_token&&a.id_token.length)throw new O({message:"id_token detected in the response, you must use client.callback() instead of client.oauthCallback()",params:a});delete a.id_token;let s={code:["code"],token:["access_token","token_type"]};if(r.response_type)for(let e of r.response_type.split(" ")){if("none"===e&&(a.code||a.id_token||a.access_token))throw new O({message:'unexpected params encountered for "none" response',checks:r,params:a});if(s[e]){for(let t of s[e])if(!a[t])throw new O({message:`${t} missing from response`,checks:r,params:a})}}if(a.code){let t=await this.grant({...n,grant_type:"authorization_code",code:a.code,redirect_uri:e,code_verifier:r.code_verifier},{clientAssertionPayload:o,DPoP:i});if("string"==typeof t.id_token&&t.id_token.length)throw new O({message:"id_token detected in the response, you must use client.callback() instead of client.oauthCallback()",params:a});return delete t.id_token,t}return new E(a)}async decryptIdToken(e){if(!this.id_token_encrypted_response_alg)return e;let t=e;if(t instanceof E){if(!t.id_token)throw TypeError("id_token not present in TokenSet");t=t.id_token}let r=this.id_token_encrypted_response_alg,n=this.id_token_encrypted_response_enc,o=await this.decryptJWE(t,r,n);return e instanceof E?(e.id_token=o,e):o}async validateJWTUserinfo(e){let t=this.userinfo_signed_response_alg;return this.validateJWT(e,t,[])}async decryptJARM(e){if(!this.authorization_encrypted_response_alg)return e;let t=this.authorization_encrypted_response_alg,r=this.authorization_encrypted_response_enc;return this.decryptJWE(e,t,r)}async decryptJWTUserinfo(e){if(!this.userinfo_encrypted_response_alg)return e;let t=this.userinfo_encrypted_response_alg,r=this.userinfo_encrypted_response_enc;return this.decryptJWE(e,t,r)}async decryptJWE(e,t,r="A128CBC-HS256"){let n;let o=JSON.parse(_.decode(e.split(".")[0]));if(o.alg!==t)throw new O({printf:["unexpected JWE alg received, expected %s, got: %s",t,o.alg],jwt:e});if(o.enc!==r)throw new O({printf:["unexpected JWE enc received, expected %s, got: %s",r,o.enc],jwt:e});let i=e=>new TextDecoder().decode(e.plaintext);if(t.match(/^(?:RSA|ECDH)/)){let t=await j.get(this),r=p.decodeProtectedHeader(e);for(let o of t.all({...r,use:"enc"}))if(n=await p.compactDecrypt(e,await o.keyObject(r.alg)).then(i,()=>{}))break}else n=await p.compactDecrypt(e,this.secretForAlg("dir"===t?r:t)).then(i,()=>{});if(!n)throw new O({message:"failed to decrypt JWE",jwt:e});return n}async validateIdToken(e,t,r,n,o){let i=e,a=this.id_token_signed_response_alg;if(i instanceof E){if(!i.id_token)throw TypeError("id_token not present in TokenSet");i=i.id_token}i=String(i);let s=x(),{protected:c,payload:l,key:u}=await this.validateJWT(i,a);if("number"==typeof n||n!==B&&this.require_auth_time){if(!l.auth_time)throw new O({message:"missing required JWT property auth_time",jwt:i});if("number"!=typeof l.auth_time)throw new O({message:"JWT auth_time claim must be a JSON numeric value",jwt:i})}if("number"==typeof n&&l.auth_time+nc+this[C])throw new O({printf:["JWT not active yet, now %i, nbf %i",c+this[C],o.nbf],now:c,tolerance:this[C],nbf:o.nbf,jwt:e})}if(void 0!==o.exp){if("number"!=typeof o.exp)throw new O({message:"JWT exp claim must be a JSON numeric value",jwt:e});if(c-this[C]>=o.exp)throw new O({printf:["JWT expired, now %i, exp %i",c-this[C],o.exp],now:c,tolerance:this[C],exp:o.exp,jwt:e})}if(void 0!==o.aud){if(Array.isArray(o.aud)){if(o.aud.length>1&&!o.azp)throw new O({message:"missing required JWT property azp",jwt:e});if(!o.aud.includes(this.client_id))throw new O({printf:["aud is missing the client_id, expected %s to be included in %j",this.client_id,o.aud],jwt:e})}else if(o.aud!==this.client_id)throw new O({printf:["aud mismatch, expected %s, got: %s",this.client_id,o.aud],jwt:e})}if(void 0!==o.azp){let t=this.#n;if(!(t="string"==typeof t?[this.client_id,t]:Array.isArray(t)?[this.client_id,...t]:[this.client_id]).includes(o.azp))throw new O({printf:["azp mismatch, got: %s",o.azp],jwt:e})}if(a){try{s(k(o.sub_jwk));let e=await p.importJWK(o.sub_jwk,n.alg);s.equal(e.type,"public"),i=[{keyObject:()=>e}]}catch(t){throw new O({message:"failed to use sub_jwk claim as an asymmetric JSON Web Key",jwt:e})}if(await p.calculateJwkThumbprint(o.sub_jwk)!==o.sub)throw new O({message:"failed to match the subject with sub_jwk",jwt:e})}else n.alg.startsWith("HS")?i=[this.secretForAlg(n.alg)]:"none"!==n.alg&&(i=await M.call(this.issuer,{...n,use:"sig"}));if(!i&&"none"===n.alg)return{protected:n,payload:o};for(let t of i){let r=await p.compactVerify(e,t instanceof Uint8Array?t:await t.keyObject(n.alg)).catch(()=>{});if(r)return{payload:o,protected:r.protectedHeader,key:t}}throw new O({message:"failed to validate JWT signature",jwt:e})}async refresh(e,{exchangeBody:t,clientAssertionPayload:r,DPoP:n}={}){let o=e;if(o instanceof E){if(!o.refresh_token)throw TypeError("refresh_token not present in TokenSet");o=o.refresh_token}let i=await this.grant({...t,grant_type:"refresh_token",refresh_token:String(o)},{clientAssertionPayload:r,DPoP:n});if(i.id_token&&(await this.decryptIdToken(i),await this.validateIdToken(i,L,"token",B),e instanceof E&&e.id_token)){let t=e.claims().sub,r=i.claims().sub;if(r!==t)throw new O({printf:["sub mismatch, expected %s, got: %s",t,r],jwt:i.id_token})}return i}async requestResource(e,t,{method:r,headers:n,body:o,DPoP:i,tokenType:a=i?"DPoP":t instanceof E?t.token_type:"Bearer"}={},s){if(t instanceof E){if(!t.access_token)throw TypeError("access_token not present in TokenSet");t=t.access_token}if(t){if("string"!=typeof t)throw TypeError("invalid access token provided")}else throw TypeError("no access token provided");let c={headers:{Authorization:z(t,a),...n},body:o},l=!!this.tls_client_certificate_bound_access_tokens,u=await T.call(this,{...c,responseType:"buffer",method:r,url:e},{accessToken:t,mTLS:l,DPoP:i}),d=u.headers["www-authenticate"];return s!==N&&d&&d.toLowerCase().startsWith("dpop ")&&"use_dpop_nonce"===g(d).error?this.requestResource(e,t,{method:r,headers:n,body:o,DPoP:i,tokenType:a}):u}async userinfo(e,{method:t="GET",via:r="header",tokenType:n,params:o,DPoP:i}={}){let a;w(this.issuer,"userinfo_endpoint");let c={tokenType:n,method:String(t).toUpperCase(),DPoP:i};if("GET"!==c.method&&"POST"!==c.method)throw TypeError("#userinfo() method can only be POST or a GET");if("body"===r&&"POST"!==c.method)throw TypeError("can only send body on POST");let l=!!(this.userinfo_signed_response_alg||this.userinfo_encrypted_response_alg);l?c.headers={Accept:"application/jwt"}:c.headers={Accept:"application/json"},this.tls_client_certificate_bound_access_tokens&&this.issuer.mtls_endpoint_aliases&&(a=this.issuer.mtls_endpoint_aliases.userinfo_endpoint),a=new u(a||this.issuer.userinfo_endpoint),"body"===r&&(c.headers.Authorization=void 0,c.headers["Content-Type"]="application/x-www-form-urlencoded",c.body=new d,c.body.append("access_token",e instanceof E?e.access_token:e)),o&&("GET"===c.method?Object.entries(o).forEach(([e,t])=>{a.searchParams.append(e,t)}):c.body?Object.entries(o).forEach(([e,t])=>{c.body.append(e,t)}):(c.body=new d,c.headers["Content-Type"]="application/x-www-form-urlencoded",Object.entries(o).forEach(([e,t])=>{c.body.append(e,t)}))),c.body&&(c.body=c.body.toString());let p=await this.requestResource(a,e,c),f=S(p,{bearer:!0});if(l){if(!/^application\/jwt/.test(p.headers["content-type"]))throw new O({message:"expected application/jwt response from the userinfo_endpoint",response:p});let e=p.body.toString(),t=await this.decryptJWTUserinfo(e);if(this.userinfo_signed_response_alg)({payload:f}=await this.validateJWTUserinfo(t));else try{f=JSON.parse(t),s(k(f))}catch(e){throw new O({message:"failed to parse userinfo JWE payload as JSON",jwt:t})}}else try{f=JSON.parse(p.body)}catch(e){throw Object.defineProperty(e,"response",{value:p}),e}if(e instanceof E&&e.id_token){let t=e.claims().sub;if(f.sub!==t)throw new O({printf:["userinfo sub mismatch, expected %s, got: %s",t,f.sub],body:f,jwt:e.id_token})}return f}encryptionSecret(e){let t=e<=256?"sha256":e<=384?"sha384":e<=512&&"sha512";if(!t)throw Error("unsupported symmetric encryption key derivation");return a.createHash(t).update(this.client_secret).digest().slice(0,e/8)}secretForAlg(e){if(!this.client_secret)throw TypeError("client_secret is required");return/^A(\d{3})(?:GCM)?KW$/.test(e)?this.encryptionSecret(parseInt(RegExp.$1,10)):/^A(\d{3})(?:GCM|CBC-HS(\d{3}))$/.test(e)?this.encryptionSecret(parseInt(RegExp.$2||RegExp.$1,10)):new TextEncoder().encode(this.client_secret)}async grant(e,{clientAssertionPayload:t,DPoP:r}={},n){let o;w(this.issuer,"token_endpoint");let i=await I.call(this,"token",{form:e,responseType:"json"},{clientAssertionPayload:t,DPoP:r});try{o=S(i)}catch(o){if(n!==N&&o instanceof A&&"use_dpop_nonce"===o.error)return this.grant(e,{clientAssertionPayload:t,DPoP:r},N);throw o}return new E(o)}async deviceAuthorization(e={},{exchangeBody:t,clientAssertionPayload:r,DPoP:n}={}){w(this.issuer,"device_authorization_endpoint"),w(this.issuer,"token_endpoint");let o=V.call(this,{client_id:this.client_id,redirect_uri:null,response_type:null,...e}),i=S(await I.call(this,"device_authorization",{responseType:"json",form:o},{clientAssertionPayload:r,endpointAuthMethod:"token"}));return new K({client:this,exchangeBody:t,clientAssertionPayload:r,response:i,maxAge:e.max_age,DPoP:n})}async revoke(e,t,{revokeBody:r,clientAssertionPayload:n}={}){if(w(this.issuer,"revocation_endpoint"),void 0!==t&&"string"!=typeof t)throw TypeError("hint must be a string");let o={...r,token:e};t&&(o.token_type_hint=t),S(await I.call(this,"revocation",{form:o},{clientAssertionPayload:n}),{body:!1})}async introspect(e,t,{introspectBody:r,clientAssertionPayload:n}={}){if(w(this.issuer,"introspection_endpoint"),void 0!==t&&"string"!=typeof t)throw TypeError("hint must be a string");let o={...r,token:e};return t&&(o.token_type_hint=t),S(await I.call(this,"introspection",{form:o,responseType:"json"},{clientAssertionPayload:n}))}static async register(e,t={}){let{initialAccessToken:r,jwks:n,...o}=t;if(w(this.issuer,"registration_endpoint"),void 0!==n&&!(e.jwks||e.jwks_uri)){let t=await X.call(this,n);e.jwks=t.toJWKS()}return new this(S(await T.call(this,{headers:{Accept:"application/json",...r?{Authorization:z(r)}:void 0},responseType:"json",json:e,url:this.issuer.registration_endpoint,method:"POST"}),{statusCode:201,bearer:!0}),n,o)}get metadata(){return W(Object.fromEntries(this.#e.entries()))}static async fromUri(e,t,r,n){return new this(S(await T.call(this,{method:"GET",url:e,responseType:"json",headers:{Authorization:z(t),Accept:"application/json"}}),{bearer:!0}),r,n)}async requestObject(e={},{sign:t=this.request_object_signing_alg||"none",encrypt:{alg:r=this.request_object_encryption_alg,enc:n=this.request_object_encryption_enc||"A128CBC-HS256"}={}}={}){let o,i;if(!k(e))throw TypeError("requestObject must be a plain object");let a=x(),s={alg:t,typ:"oauth-authz-req+jwt"},c=JSON.stringify(m({},e,{iss:this.client_id,aud:this.issuer.issuer,client_id:this.client_id,jti:P(),iat:a,exp:a+300,...this.fapi()?{nbf:a}:void 0}));if("none"===t)o=[_.encode(JSON.stringify(s)),_.encode(c),""].join(".");else{let e=t.startsWith("HS");if(e)i=this.secretForAlg(t);else{let e=await j.get(this);if(!e)throw TypeError(`no keystore present for client, cannot sign using alg ${t}`);if(!(i=e.get({alg:t,use:"sig"})))throw TypeError(`no key to sign with found for alg ${t}`)}o=await new p.CompactSign(new TextEncoder().encode(c)).setProtectedHeader({...s,kid:e?void 0:i.jwk.kid}).sign(e?i:await i.keyObject(t))}if(!r)return o;let l={alg:r,enc:n,cty:"oauth-authz-req+jwt"};return l.alg.match(/^(RSA|ECDH)/)?[i]=await M.call(this.issuer,{alg:l.alg,use:"enc"},{allowMulti:!0}):i=this.secretForAlg("dir"===l.alg?l.enc:l.alg),new p.CompactEncrypt(new TextEncoder().encode(o)).setProtectedHeader({...l,kid:i instanceof Uint8Array?void 0:i.jwk.kid}).encrypt(i instanceof Uint8Array?i:await i.keyObject(l.alg))}async pushedAuthorizationRequest(e={},{clientAssertionPayload:t}={}){w(this.issuer,"pushed_authorization_request_endpoint");let r={..."request"in e?e:V.call(this,e),client_id:this.client_id},n=await I.call(this,"pushed_authorization_request",{responseType:"json",form:r},{clientAssertionPayload:t,endpointAuthMethod:"token"}),o=S(n,{statusCode:201});if(!("expires_in"in o))throw new O({message:"expected expires_in in Pushed Authorization Successful Response",response:n});if("number"!=typeof o.expires_in)throw new O({message:"invalid expires_in value in Pushed Authorization Successful Response",response:n});if(!("request_uri"in o))throw new O({message:"expected request_uri in Pushed Authorization Successful Response",response:n});if("string"!=typeof o.request_uri)throw new O({message:"invalid request_uri value in Pushed Authorization Successful Response",response:n});return o}get issuer(){return this.#t}[o.custom](){return`${this.constructor.name} ${o(this.metadata,{depth:1/0,colors:process.stdout.isTTY,compact:!1,sorted:!0})}`}fapi(){return this.fapi1()||this.fapi2()}fapi1(){return"FAPI1Client"===this.constructor.name}fapi2(){return"FAPI2Client"===this.constructor.name}async validateJARM(e){let t=this.authorization_signed_response_alg,{payload:r}=await this.validateJWT(e,t,["iss","exp","aud"]);return q(r)}async dpopProof(e,t,r){let o;if(!k(e))throw TypeError("payload must be a plain object");if(h(t))o=t;else if("CryptoKey"===t[Symbol.toStringTag])o=t;else if("node:crypto"===p.cryptoRuntime)o=a.createPrivateKey(t);else throw TypeError("unrecognized crypto runtime");if("private"!==o.type)throw TypeError('"DPoP" option must be a private key');let i=n.call(this,o,t);if(!i)throw TypeError("could not determine DPoP JWS Algorithm");return new p.SignJWT({ath:r?_.encode(a.createHash("sha256").update(r).digest()):void 0,...e}).setProtectedHeader({alg:i,typ:"dpop+jwt",jwk:await ee(o,t)}).setIssuedAt().setJti(P()).sign(o)}}function Z(e){switch(e.algorithm.name){case"Ed25519":case"Ed448":return"EdDSA";case"ECDSA":switch(e.algorithm.namedCurve){case"P-256":return"ES256";case"P-384":return"ES384";case"P-521":return"ES512"}break;case"RSASSA-PKCS1-v1_5":return`RS${e.algorithm.hash.name.slice(4)}`;case"RSA-PSS":return`PS${e.algorithm.hash.name.slice(4)}`;default:throw TypeError("unsupported DPoP private key")}}if("node:crypto"===p.cryptoRuntime){n=function(n,a){if("CryptoKey"===a[Symbol.toStringTag])return Z(n);switch(n.asymmetricKeyType){case"ed25519":case"ed448":return"EdDSA";case"ec":return function(e,n){switch("object"==typeof n&&"object"==typeof n.key&&n.key.crv){case"P-256":return"ES256";case"secp256k1":return"ES256K";case"P-384":return"ES384";case"P-512":return"ES512"}let a=e.export({format:"der",type:"pkcs8"}),s=a[1]<128?17:18,c=a[s],l=a.slice(s+1,s+1+c);if(l.equals(t))return"ES256";if(l.equals(r))return"ES384";if(l.equals(o))return"ES512";if(l.equals(i))return"ES256K";throw TypeError("unsupported DPoP private key curve")}(n,a);case"rsa":case D&&"rsa-pss":return function(t,r,n){if("object"==typeof r&&"jwk"===r.format&&r.key&&r.key.alg)return r.key.alg;if(Array.isArray(n)){let r=n.filter(RegExp.prototype.test.bind(e));return"rsa-pss"===t.asymmetricKeyType&&(r=r.filter(e=>e.startsWith("PS"))),["PS256","PS384","PS512","RS256","RS384","RS384"].find(e=>r.includes(e))}return"PS256"}(n,a,this.issuer.dpop_signing_alg_values_supported);default:throw TypeError("unsupported DPoP private key")}};let e=/^(?:RS|PS)(?:256|384|512)$/,t=Buffer.from([42,134,72,206,61,3,1,7]),r=Buffer.from([43,129,4,0,34]),o=Buffer.from([43,129,4,0,35]),i=Buffer.from([43,129,4,0,10])}else n=Z;let Q=new WeakMap;async function ee(e,t){if("node:crypto"===p.cryptoRuntime&&"object"==typeof t&&"object"==typeof t.key&&"jwk"===t.format)return b(t.key,"kty","crv","x","y","e","n");if(Q.has(t))return Q.get(t);let r=b(await p.exportJWK(e),"kty","crv","x","y","e","n");return(h(t)||"WebCryptoAPI"===p.cryptoRuntime)&&Q.set(t,r),r}e.exports=(e,t=!1)=>class extends Y{constructor(...r){super(e,t,...r)}static get issuer(){return e}},e.exports.BaseClient=Y},16670:(e,t,r)=>{let{inspect:n}=r(21764),{RPError:o,OPError:i}=r(80994),a=r(46438);class s{#o;#i;#a;#s;#c;#l;#u;#d;#p;constructor({client:e,exchangeBody:t,clientAssertionPayload:r,response:n,maxAge:i,DPoP:s}){if(["verification_uri","user_code","device_code"].forEach(e=>{if("string"!=typeof n[e]||!n[e])throw new o(`expected ${e} string to be returned by Device Authorization Response, got %j`,n[e])}),!Number.isSafeInteger(n.expires_in))throw new o("expected expires_in number to be returned by Device Authorization Response, got %j",n.expires_in);this.#l=a()+n.expires_in,this.#i=e,this.#s=s,this.#d=i,this.#c=t,this.#a=r,this.#p=n,this.#u=1e3*n.interval||5e3}abort(){this.#o=!0}async poll({signal:e}={}){let t;if(e&&e.aborted||this.#o)throw new o("polling aborted");if(this.expired())throw new o("the device code %j has expired and the device authorization session has concluded",this.device_code);await new Promise(e=>setTimeout(e,this.#u));try{t=await this.#i.grant({...this.#c,grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:this.device_code},{clientAssertionPayload:this.#a,DPoP:this.#s})}catch(t){switch(t instanceof i&&t.error){case"slow_down":this.#u+=5e3;case"authorization_pending":return this.poll({signal:e});default:throw t}}return"id_token"in t&&(await this.#i.decryptIdToken(t),await this.#i.validateIdToken(t,void 0,"token",this.#d)),t}get device_code(){return this.#p.device_code}get user_code(){return this.#p.user_code}get verification_uri(){return this.#p.verification_uri}get verification_uri_complete(){return this.#p.verification_uri_complete}get expires_in(){return Math.max.apply(null,[this.#l-a(),0])}expired(){return 0===this.expires_in}[n.custom](){return`${this.constructor.name} ${n(this.#p,{depth:1/0,colors:process.stdout.isTTY,compact:!1,sorted:!0})}`}}e.exports=s},80994:(e,t,r)=>{let{format:n}=r(21764);class o extends Error{constructor({error_description:e,error:t,error_uri:r,session_state:n,state:o,scope:i},a){super(e?`${t} (${e})`:t),Object.assign(this,{error:t},e&&{error_description:e},r&&{error_uri:r},o&&{state:o},i&&{scope:i},n&&{session_state:n}),a&&Object.defineProperty(this,"response",{value:a}),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor)}}class i extends Error{constructor(...e){if("string"==typeof e[0])super(n(...e));else{let{message:t,printf:r,response:o,...i}=e[0];r?super(n(...r)):super(t),Object.assign(this,i),o&&Object.defineProperty(this,"response",{value:o})}this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor)}}e.exports={OPError:o,RPError:i}},914:e=>{e.exports={assertSigningAlgValuesSupport:function(e,t,r){if(!t[`${e}_endpoint`])return;let n=`${e}_endpoint_auth_method`,o=`${e}_endpoint_auth_signing_alg`,i=`${e}_endpoint_auth_signing_alg_values_supported`;if(r[n]&&r[n].endsWith("_jwt")&&!r[o]&&!t[i])throw TypeError(`${i} must be configured on the issuer if ${o} is not defined on a client`)},assertIssuerConfiguration:function(e,t){if(!e[t])throw TypeError(`${t} must be configured on the issuer`)}}},69080:e=>{let t;if(Buffer.isEncoding("base64url"))t=(e,t="utf8")=>Buffer.from(e,t).toString("base64url");else{let e=e=>e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_");t=(t,r="utf8")=>e(Buffer.from(t,r).toString("base64"))}e.exports.decode=e=>Buffer.from(e,"base64"),e.exports.encode=t},36223:(e,t,r)=>{let n=r(39797),{RPError:o}=r(80994),{assertIssuerConfiguration:i}=r(914),{random:a}=r(47389),s=r(46438),c=r(82472),{keystores:l}=r(25602),u=r(49366),d=e=>encodeURIComponent(e).replace(/%20/g,"+");async function p(e,t){let r=this[`${e}_endpoint_auth_signing_alg`];if(r||i(this.issuer,`${e}_endpoint_auth_signing_alg_values_supported`),"client_secret_jwt"===this[`${e}_endpoint_auth_method`]){if(!r){let t=this.issuer[`${e}_endpoint_auth_signing_alg_values_supported`];r=Array.isArray(t)&&t.find(e=>/^HS(?:256|384|512)/.test(e))}if(!r)throw new o(`failed to determine a JWS Algorithm to use for ${this[`${e}_endpoint_auth_method`]} Client Assertion`);return new n.CompactSign(Buffer.from(JSON.stringify(t))).setProtectedHeader({alg:r}).sign(this.secretForAlg(r))}let a=await l.get(this);if(!a)throw TypeError("no client jwks provided for signing a client assertion with");if(!r){let t=this.issuer[`${e}_endpoint_auth_signing_alg_values_supported`];r=Array.isArray(t)&&t.find(e=>a.get({alg:e,use:"sig"}))}if(!r)throw new o(`failed to determine a JWS Algorithm to use for ${this[`${e}_endpoint_auth_method`]} Client Assertion`);let s=a.get({alg:r,use:"sig"});if(!s)throw new o(`no key found in client jwks to sign a client assertion with using alg ${r}`);return new n.CompactSign(Buffer.from(JSON.stringify(t))).setProtectedHeader({alg:r,kid:s.jwk&&s.jwk.kid}).sign(await s.keyObject(r))}async function f(e,{clientAssertionPayload:t}={}){switch(this[`${e}_endpoint_auth_method`]){case"self_signed_tls_client_auth":case"tls_client_auth":case"none":return{form:{client_id:this.client_id}};case"client_secret_post":if("string"!=typeof this.client_secret)throw TypeError("client_secret_post client authentication method requires a client_secret");return{form:{client_id:this.client_id,client_secret:this.client_secret}};case"private_key_jwt":case"client_secret_jwt":{let r=s(),n=await p.call(this,e,{iat:r,exp:r+60,jti:a(),iss:this.client_id,sub:this.client_id,aud:this.issuer.issuer,...t});return{form:{client_id:this.client_id,client_assertion:n,client_assertion_type:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"}}}case"client_secret_basic":{if("string"!=typeof this.client_secret)throw TypeError("client_secret_basic client authentication method requires a client_secret");let e=`${d(this.client_id)}:${d(this.client_secret)}`,t=Buffer.from(e).toString("base64");return{headers:{Authorization:`Basic ${t}`}}}default:throw TypeError(`missing, or unsupported, ${e}_endpoint_auth_method`)}}async function h(e,t,{clientAssertionPayload:r,endpointAuthMethod:n=e,DPoP:o}={}){let i;let a=u(t,await f.call(this,n,{clientAssertionPayload:r})),s=this[`${n}_endpoint_auth_method`].includes("tls_client_auth")||"token"===e&&this.tls_client_certificate_bound_access_tokens;if(s&&this.issuer.mtls_endpoint_aliases&&(i=this.issuer.mtls_endpoint_aliases[`${e}_endpoint`]),i=i||this.issuer[`${e}_endpoint`],"form"in a)for(let[e,t]of Object.entries(a.form))void 0===t&&delete a.form[e];return c.call(this,{...a,method:"POST",url:i,headers:{..."revocation"!==e?{Accept:"application/json"}:void 0,...a.headers}},{mTLS:s,DPoP:o})}e.exports={resolveResponseType:function(){let{length:e,0:t}=this.response_types;if(1===e)return t},resolveRedirectUri:function(){let{length:e,0:t}=this.redirect_uris||[];if(1===e)return t},authFor:f,authenticatedPost:h}},77731:e=>{let t=Symbol(),r=Symbol();e.exports={CLOCK_TOLERANCE:r,HTTP_OPTIONS:t}},45820:(e,t,r)=>{let n=r(69080);e.exports=e=>{if("string"!=typeof e||!e)throw TypeError("JWT must be a string");let{0:t,1:r,2:o,length:i}=e.split(".");if(5===i)throw TypeError("encrypted JWTs cannot be decoded");if(3!==i)throw Error("JWTs must have three components");try{return{header:JSON.parse(n.decode(t)),payload:JSON.parse(n.decode(r)),signature:o}}catch(e){throw Error("JWT is malformed")}}},52936:e=>{e.exports=globalThis.structuredClone||(e=>JSON.parse(JSON.stringify(e)))},69054:(e,t,r)=>{let n=r(8140);function o(e,t,...r){for(let i of r)if(n(i))for(let[r,a]of Object.entries(i))"__proto__"!==r&&"constructor"!==r&&(void 0===t[r]&&void 0!==a&&(t[r]=a),e&&n(t[r])&&n(a)&&o(!0,t[r],a));return t}e.exports=o.bind(void 0,!1),e.exports.deep=o.bind(void 0,!0)},47389:(e,t,r)=>{let{createHash:n,randomBytes:o}=r(84770),i=r(69080),a=(e=32)=>i.encode(o(e));e.exports={random:a,state:a,nonce:a,codeVerifier:a,codeChallenge:e=>i.encode(n("sha256").update(e).digest())}},74655:(e,t,r)=>{let n=r(21764),o=r(84770);e.exports=n.types.isKeyObject||(e=>e&&e instanceof o.KeyObject)},8140:e=>{e.exports=e=>!!e&&e.constructor===Object},92792:(e,t,r)=>{let n=r(75871),o=r(50901),{RPError:i}=r(80994),{assertIssuerConfiguration:a}=r(914),s=r(56310),{keystores:c}=r(25602),l=r(83818),u=r(82472),d=new WeakMap,p=new WeakMap,f=e=>(p.has(e)||p.set(e,new o({max:100})),p.get(e));async function h(e=!1){a(this,"jwks_uri");let t=c.get(this),r=f(this);return e||!t?(d.has(this)||(r.reset(),d.set(this,(async()=>{let e=l(await u.call(this,{method:"GET",responseType:"json",url:this.jwks_uri,headers:{Accept:"application/json, application/jwk-set+json"}}).finally(()=>{d.delete(this)})),t=s.fromJWKS(e,{onlyPublic:!0});return r.set("throttle",!0,6e4),c.set(this,t),t})())),d.get(this)):t}async function y({kid:e,kty:t,alg:r,use:o},{allowMulti:a=!1}={}){let s=f(this),c={kid:e,kty:t,alg:r,use:o},l=n(c,{algorithm:"sha256",ignoreUnknown:!0,unorderedArrays:!0,unorderedSets:!0,respectType:!1}),u=s.get(l)||s.get("throttle"),d=await h.call(this,!u),p=d.all(c);if(delete c.use,0===p.length)throw new i({printf:["no valid key found in issuer's jwks_uri for key parameters %j",c],jwks:d});if(!a&&p.length>1&&!e)throw new i({printf:["multiple matching keys found in issuer's jwks_uri for key parameters %j, kid must be provided in this case",c],jwks:d});return s.set(l,!0),p}e.exports.queryKeyStore=y,e.exports.keystore=h},56310:(e,t,r)=>{let n=r(39797),o=r(52936),i=r(8140),a=Symbol(),s=(e,{alg:t,use:r})=>{let n=0;return t&&e.alg&&n++,r&&e.use&&n++,n};e.exports=class{#f;constructor(e,t){if(e!==a)throw Error("invalid constructor call");this.#f=t}toJWKS(){return{keys:this.map(({jwk:{d:e,p:t,q:r,dp:n,dq:o,qi:i,...a}})=>a)}}all({alg:e,kid:t,use:r}={}){if(!r||!e)throw Error();let n=function(e){switch("string"==typeof e&&e.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:return}}(e),o={alg:e,use:r};return this.filter(o=>{let i=!0;return void 0!==n&&o.jwk.kty!==n&&(i=!1),i&&void 0!==t&&o.jwk.kid!==t&&(i=!1),i&&void 0!==r&&void 0!==o.jwk.use&&o.jwk.use!==r&&(i=!1),i&&o.jwk.alg&&o.jwk.alg!==e?i=!1:o.algorithms.has(e)||(i=!1),i}).sort((e,t)=>s(t,o)-s(e,o))}get(...e){return this.all(...e)[0]}static async fromJWKS(e,{onlyPublic:t=!1,onlyPrivate:r=!1}={}){if(!i(e)||!Array.isArray(e.keys)||e.keys.some(e=>!i(e)||!("kty"in e)))throw TypeError("jwks must be a JSON Web Key Set formatted object");let s=[];for(let i of e.keys){let{kty:e,kid:a,crv:c}=i=o(i),{alg:l,use:u}=i;if("string"==typeof e&&e&&(void 0===u||"sig"===u||"enc"===u)&&("string"==typeof l||void 0===l)&&("string"==typeof a||void 0===a)){if("EC"===e&&"sig"===u)switch(c){case"P-256":l="ES256";break;case"P-384":l="ES384";break;case"P-521":l="ES512"}if("secp256k1"===c&&(u="sig",l="ES256K"),"OKP"===e)switch(c){case"Ed25519":case"Ed448":u="sig",l="EdDSA";break;case"X25519":case"X448":u="enc"}if(l&&!u)switch(!0){case l.startsWith("ECDH"):case l.startsWith("RSA"):u="enc"}if(r&&("oct"===i.kty||!i.d))throw Error("jwks must only contain private keys");t&&(i.d||i.k)||s.push({jwk:{...i,alg:l,use:u},async keyObject(e){if(this[e])return this[e];let t=await n.importJWK(this.jwk,e);return this[e]=t,t},get algorithms(){return Object.defineProperty(this,"algorithms",{value:function(e,t,r,o){if(t)return new Set([t]);switch(r){case"EC":{let t=[];if(("enc"===e||void 0===e)&&(t=t.concat(["ECDH-ES","ECDH-ES+A128KW","ECDH-ES+A192KW","ECDH-ES+A256KW"])),"sig"===e||void 0===e)switch(o){case"P-256":case"P-384":t=t.concat([`ES${o.slice(-3)}`]);break;case"P-521":t=t.concat(["ES512"]);break;case"secp256k1":"node:crypto"===n.cryptoRuntime&&(t=t.concat(["ES256K"]))}return new Set(t)}case"OKP":return new Set(["ECDH-ES","ECDH-ES+A128KW","ECDH-ES+A192KW","ECDH-ES+A256KW"]);case"RSA":{let t=[];return("enc"===e||void 0===e)&&(t=t.concat(["RSA-OAEP","RSA-OAEP-256","RSA-OAEP-384","RSA-OAEP-512"]),"node:crypto"===n.cryptoRuntime&&(t=t.concat(["RSA1_5"]))),("sig"===e||void 0===e)&&(t=t.concat(["PS256","PS384","PS512","RS256","RS384","RS512"])),new Set(t)}default:throw Error("unreachable")}}(this.jwk.use,this.jwk.alg,this.jwk.kty,this.jwk.crv),enumerable:!0,configurable:!1}),this.algorithms}})}}return new this(a,s)}filter(...e){return this.#f.filter(...e)}find(...e){return this.#f.find(...e)}every(...e){return this.#f.every(...e)}some(...e){return this.#f.some(...e)}map(...e){return this.#f.map(...e)}forEach(...e){return this.#f.forEach(...e)}reduce(...e){return this.#f.reduce(...e)}sort(...e){return this.#f.sort(...e)}*[Symbol.iterator](){for(let e of this.#f)yield e}}},49366:(e,t,r)=>{let n=r(8140);e.exports=function e(t,...r){for(let o of r)if(n(o))for(let[r,i]of Object.entries(o))"__proto__"!==r&&"constructor"!==r&&(n(t[r])&&n(i)?t[r]=e(t[r],i):void 0!==i&&(t[r]=i));return t}},58945:e=>{e.exports=function(e,...t){let r={};for(let n of t)void 0!==e[n]&&(r[n]=e[n]);return r}},83818:(e,t,r)=>{let{STATUS_CODES:n}=r(32615),{format:o}=r(21764),{OPError:i}=r(80994),a=r(15070),s=e=>{let t=a(e.headers["www-authenticate"]);if(t.error)throw new i(t,e)},c=e=>{let t=!1;try{let r;"object"!=typeof e.body||Buffer.isBuffer(e.body)?r=JSON.parse(e.body):r=e.body,(t="string"==typeof r.error&&r.error.length)&&Object.defineProperty(e,"body",{value:r,configurable:!0})}catch(e){}return t};e.exports=function(e,{statusCode:t=200,body:r=!0,bearer:a=!1}={}){if(e.statusCode!==t){if(a&&s(e),c(e))throw new i(e.body,e);throw new i({error:o("expected %i %s, got: %i %s",t,n[t],e.statusCode,n[e.statusCode])},e)}if(r&&!e.body)throw new i({error:o("expected %i %s with body but no body was returned",t,n[t])},e);return e.body}},82472:(e,t,r)=>{let n;let o=r(27790),i=r(86624),a=r(32615),s=r(35240),{once:c}=r(17702),{URL:l}=r(17360),u=r(50901),d=r(87658),{RPError:p}=r(80994),f=r(58945),{deep:h}=r(69054),{HTTP_OPTIONS:y}=r(77731),_=/^[\x21\x23-\x5B\x5D-\x7E]+$/,m=["agent","ca","cert","crl","headers","key","lookup","passphrase","pfx","timeout"],g=(e,t)=>{n=h({},e.length?f(t,...e):t,n)};function v(e,t,r){r&&(e.removeHeader("content-type"),e.setHeader("content-type",r)),t&&(e.removeHeader("content-length"),e.setHeader("content-length",Buffer.byteLength(t)),e.write(t)),e.end()}g([],{headers:{"User-Agent":`${d.name}/${d.version} (${d.homepage})`,"Accept-Encoding":"identity"},timeout:3500});let w=new u({max:100});e.exports=async function(e,{accessToken:t,mTLS:r=!1,DPoP:u}={}){let d,g,b,k,S,E,A;try{d=new l(e.url),delete e.url,o(/^(https?:)$/.test(d.protocol))}catch(e){throw TypeError("only valid absolute URLs can be requested")}let O=this[y],x=e,P=`${d.origin}${d.pathname}`;if(u&&"dpopProof"in this&&(x.headers=x.headers||{},x.headers.DPoP=await this.dpopProof({htu:`${d.origin}${d.pathname}`,htm:e.method||"GET",nonce:w.get(P)},u,t)),O&&(g=f(O.call(this,d,h({},x,n)),...m)),x=h({},g,x,n),r&&!x.pfx&&!(x.key&&x.cert))throw TypeError("mutual-TLS certificate and key not set");if(x.searchParams)for(let[e,t]of Object.entries(x.searchParams))d.searchParams.delete(e),d.searchParams.set(e,t);for(let[e,t]of({form:k,responseType:b,json:S,body:E,...x}=x,Object.entries(x.headers||{})))void 0===t&&delete x.headers[e];let T=("https:"===d.protocol?s.request:a.request)(d.href,x);return(async()=>{if(S?v(T,JSON.stringify(S),"application/json"):k?v(T,i.stringify(k),"application/x-www-form-urlencoded"):E?v(T,E):v(T),[A]=await Promise.race([c(T,"response"),c(T,"timeout")]),!A)throw T.destroy(),new p(`outgoing request timed out after ${x.timeout}ms`);let e=[];for await(let t of A)e.push(t);if(e.length)switch(b){case"json":Object.defineProperty(A,"body",{get(){let t=Buffer.concat(e);try{t=JSON.parse(t)}catch(e){throw Object.defineProperty(e,"response",{value:A}),e}finally{Object.defineProperty(A,"body",{value:t,configurable:!0})}return t},configurable:!0});break;case void 0:case"buffer":Object.defineProperty(A,"body",{get(){let t=Buffer.concat(e);return Object.defineProperty(A,"body",{value:t,configurable:!0}),t},configurable:!0});break;default:throw TypeError("unsupported responseType request option")}return A})().catch(e=>{throw A&&Object.defineProperty(e,"response",{value:A}),e}).finally(()=>{let e=A&&A.headers["dpop-nonce"];e&&_.test(e)&&w.set(P,e)})},e.exports.setDefaults=g.bind(void 0,m)},46438:e=>{e.exports=()=>Math.floor(Date.now()/1e3)},25602:e=>{e.exports.keystores=new WeakMap},91578:e=>{let t=/^\d+$/;e.exports=function(e){if("string"!=typeof e)throw TypeError("input must be a string");return(!function(e){if(e.includes("://"))return!0;let r=e.replace(/(\/|\?)/g,"#").split("#")[0];if(r.includes(":")){let e=r.indexOf(":"),n=r.slice(e+1);if(!t.test(n))return!0}return!1}(e)?!function(e){if(!e.includes("@"))return!1;let t=e.split("@"),r=t[t.length-1];return!(r.includes(":")||r.includes("/")||r.includes("?"))}(e)?`https://${e}`:`acct:${e}`:e).split("#")[0]}},15070:e=>{let t=/(\w+)=("[^"]*")/g;e.exports=e=>{let r={};try{for(;null!==t.exec(e);)RegExp.$1&&RegExp.$2&&(r[RegExp.$1]=RegExp.$2.slice(1,-1))}catch(e){}return r}},77838:(e,t,r)=>{let n=r(99197),{OPError:o,RPError:i}=r(80994),a=r(74202),s=r(80536),{CLOCK_TOLERANCE:c,HTTP_OPTIONS:l}=r(77731),u=r(47389),{setDefaults:d}=r(82472);e.exports={Issuer:n,Strategy:a,TokenSet:s,errors:{OPError:o,RPError:i},custom:{setHttpOptionsDefaults:d,http_options:l,clock_tolerance:c},generators:u}},99197:(e,t,r)=>{let{inspect:n}=r(21764),o=r(17360),{RPError:i}=r(80994),a=r(80137),s=r(89123),c=r(83818),l=r(91578),u=r(82472),d=r(52936),{keystore:p}=r(92792),f=["https://login.microsoftonline.com/common/.well-known/openid-configuration","https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration","https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration","https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration"],h=Symbol(),y={claim_types_supported:["normal"],claims_parameter_supported:!1,grant_types_supported:["authorization_code","implicit"],request_parameter_supported:!1,request_uri_parameter_supported:!0,require_request_uri_registration:!1,response_modes_supported:["query","fragment"],token_endpoint_auth_methods_supported:["client_secret_basic"]};class _{#e;constructor(e={}){let t=e[h];delete e[h],["introspection","revocation"].forEach(t=>{e[`${t}_endpoint`]&&void 0===e[`${t}_endpoint_auth_methods_supported`]&&void 0===e[`${t}_endpoint_auth_signing_alg_values_supported`]&&(e.token_endpoint_auth_methods_supported&&(e[`${t}_endpoint_auth_methods_supported`]=e.token_endpoint_auth_methods_supported),e.token_endpoint_auth_signing_alg_values_supported&&(e[`${t}_endpoint_auth_signing_alg_values_supported`]=e.token_endpoint_auth_signing_alg_values_supported))}),this.#e=new Map,Object.entries(e).forEach(([e,t])=>{this.#e.set(e,t),this[e]||Object.defineProperty(this,e,{get(){return this.#e.get(e)},enumerable:!0})}),s.set(this.issuer,this);let r=a(this,t);Object.defineProperties(this,{Client:{value:r,enumerable:!0},FAPI1Client:{value:class extends r{},enumerable:!0},FAPI2Client:{value:class extends r{},enumerable:!0}})}get metadata(){return d(Object.fromEntries(this.#e.entries()))}static async webfinger(e){let t=l(e),{host:r}=o.parse(t),n=`https://${r}/.well-known/webfinger`,a=c(await u.call(this,{method:"GET",url:n,responseType:"json",searchParams:{resource:t,rel:"http://openid.net/specs/connect/1.0/issuer"},headers:{Accept:"application/json"}})),d=Array.isArray(a.links)&&a.links.find(e=>"object"==typeof e&&"http://openid.net/specs/connect/1.0/issuer"===e.rel&&e.href);if(!d)throw new i({message:"no issuer found in webfinger response",body:a});if("string"!=typeof d.href||!d.href.startsWith("https://"))throw new i({printf:["invalid issuer location %s",d.href],body:a});let p=d.href;if(s.has(p))return s.get(p);let f=await this.discover(p);if(f.issuer!==p)throw s.del(f.issuer),new i("discovered issuer mismatch, expected %s, got: %s",p,f.issuer);return f}static async discover(e){let t=function(e){let t=o.parse(e);if(t.pathname.includes("/.well-known/"))return e;{let e;return e=t.pathname.endsWith("/")?`${t.pathname}.well-known/openid-configuration`:`${t.pathname}/.well-known/openid-configuration`,o.format({...t,pathname:e})}}(e),r=c(await u.call(this,{method:"GET",responseType:"json",url:t,headers:{Accept:"application/json"}}));return new _({...y,...r,[h]:!!f.find(e=>t.startsWith(e))})}async reloadJwksUri(){await p.call(this,!0)}[n.custom](){return`${this.constructor.name} ${n(this.metadata,{depth:1/0,colors:process.stdout.isTTY,compact:!1,sorted:!0})}`}}e.exports=_},89123:(e,t,r)=>{let n=r(50901);e.exports=new n({max:100})},74202:(e,t,r)=>{let n=r(17360),{format:o}=r(21764),i=r(52936),{RPError:a,OPError:s}=r(80994),{BaseClient:c}=r(80137),{random:l,codeChallenge:u}=r(47389),d=r(58945),{resolveResponseType:p,resolveRedirectUri:f}=r(36223);function h(e,t,r={}){e?this.error(e):t?this.success(t,r):this.fail(r)}function y({client:e,params:t={},passReqToCallback:r=!1,sessionKey:o,usePKCE:a=!0,extras:s={}}={},l){if(!(e instanceof c))throw TypeError("client must be an instance of openid-client Client");if("function"!=typeof l)throw TypeError("verify callback must be a function");if(!e.issuer||!e.issuer.issuer)throw TypeError("client must have an issuer with an identifier");if(this._client=e,this._issuer=e.issuer,this._verify=l,this._passReqToCallback=r,this._usePKCE=a,this._key=o||`oidc:${n.parse(this._issuer.issuer).hostname}`,this._params=i(t),delete this._params.state,delete this._params.nonce,this._extras=i(s),this._params.response_type||(this._params.response_type=p.call(e)),this._params.redirect_uri||(this._params.redirect_uri=f.call(e)),this._params.scope||(this._params.scope="openid"),!0===this._usePKCE){let e=!!Array.isArray(this._issuer.code_challenge_methods_supported)&&this._issuer.code_challenge_methods_supported;if(e&&e.includes("S256"))this._usePKCE="S256";else if(e&&e.includes("plain"))this._usePKCE="plain";else if(e)throw TypeError("neither code_challenge_method supported by the client is supported by the issuer");else this._usePKCE="S256"}else if("string"==typeof this._usePKCE&&!["plain","S256"].includes(this._usePKCE))throw TypeError(`${this._usePKCE} is not valid/implemented PKCE code_challenge_method`);this.name=n.parse(e.issuer.issuer).hostname}y.prototype.authenticate=function(e,t){(async()=>{let r=this._client;if(!e.session)throw TypeError("authentication requires session support");let n=r.callbackParams(e),i=this._key,{0:s,length:c}=Object.keys(n);if(0===c||1===c&&"iss"===s){let n={state:l(),...this._params,...t};if(!n.nonce&&n.response_type.includes("id_token")&&(n.nonce=l()),e.session[i]=d(n,"nonce","state","max_age","response_type"),this._usePKCE&&n.response_type.includes("code")){let t=l();switch(e.session[i].code_verifier=t,this._usePKCE){case"S256":n.code_challenge=u(t),n.code_challenge_method="S256";break;case"plain":n.code_challenge=t}}this.redirect(r.authorizationUrl(n));return}let p=e.session[i];if(0===Object.keys(p||{}).length)throw Error(o('did not find expected authorization request details in session, req.session["%s"] is %j',i,p));let{state:f,nonce:y,max_age:_,code_verifier:m,response_type:g}=p;try{delete e.session[i]}catch(e){}let v={redirect_uri:this._params.redirect_uri,...t},w=await r.callback(v.redirect_uri,n,{state:f,nonce:y,max_age:_,code_verifier:m,response_type:g},this._extras),b=this._passReqToCallback,k=this._verify.length>(b?3:2)&&r.issuer.userinfo_endpoint,S=[w,h.bind(this)];if(k){if(!w.access_token)throw new a({message:"expected access_token to be returned when asking for userinfo in verify callback",tokenset:w});let e=await r.userinfo(w);S.splice(1,0,e)}b&&S.unshift(e),this._verify(...S)})().catch(e=>{e instanceof s&&"server_error"!==e.error&&!e.error.startsWith("invalid")||e instanceof a?this.fail(e):this.error(e)})},e.exports=y},80536:(e,t,r)=>{let n=r(69080),o=r(46438);class i{constructor(e){Object.assign(this,e);let{constructor:t,...r}=Object.getOwnPropertyDescriptors(this.constructor.prototype);Object.defineProperties(this,r)}set expires_in(e){this.expires_at=o()+Number(e)}get expires_in(){return Math.max.apply(null,[this.expires_at-o(),0])}expired(){return 0===this.expires_in}claims(){if(!this.id_token)throw TypeError("id_token not present in TokenSet");return JSON.parse(n.decode(this.id_token.split(".")[1]))}}e.exports=i},50901:(e,t,r)=>{"use strict";let n=r(10517),o=Symbol("max"),i=Symbol("length"),a=Symbol("lengthCalculator"),s=Symbol("allowStale"),c=Symbol("maxAge"),l=Symbol("dispose"),u=Symbol("noDisposeOnSet"),d=Symbol("lruList"),p=Symbol("cache"),f=Symbol("updateAgeOnGet"),h=()=>1;class y{constructor(e){if("number"==typeof e&&(e={max:e}),e||(e={}),e.max&&("number"!=typeof e.max||e.max<0))throw TypeError("max must be a non-negative number");this[o]=e.max||1/0;let t=e.length||h;if(this[a]="function"!=typeof t?h:t,this[s]=e.stale||!1,e.maxAge&&"number"!=typeof e.maxAge)throw TypeError("maxAge must be a number");this[c]=e.maxAge||0,this[l]=e.dispose,this[u]=e.noDisposeOnSet||!1,this[f]=e.updateAgeOnGet||!1,this.reset()}set max(e){if("number"!=typeof e||e<0)throw TypeError("max must be a non-negative number");this[o]=e||1/0,g(this)}get max(){return this[o]}set allowStale(e){this[s]=!!e}get allowStale(){return this[s]}set maxAge(e){if("number"!=typeof e)throw TypeError("maxAge must be a non-negative number");this[c]=e,g(this)}get maxAge(){return this[c]}set lengthCalculator(e){"function"!=typeof e&&(e=h),e!==this[a]&&(this[a]=e,this[i]=0,this[d].forEach(e=>{e.length=this[a](e.value,e.key),this[i]+=e.length})),g(this)}get lengthCalculator(){return this[a]}get length(){return this[i]}get itemCount(){return this[d].length}rforEach(e,t){t=t||this;for(let r=this[d].tail;null!==r;){let n=r.prev;b(this,e,r,t),r=n}}forEach(e,t){t=t||this;for(let r=this[d].head;null!==r;){let n=r.next;b(this,e,r,t),r=n}}keys(){return this[d].toArray().map(e=>e.key)}values(){return this[d].toArray().map(e=>e.value)}reset(){this[l]&&this[d]&&this[d].length&&this[d].forEach(e=>this[l](e.key,e.value)),this[p]=new Map,this[d]=new n,this[i]=0}dump(){return this[d].map(e=>!m(this,e)&&{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[d]}set(e,t,r){if((r=r||this[c])&&"number"!=typeof r)throw TypeError("maxAge must be a number");let n=r?Date.now():0,s=this[a](t,e);if(this[p].has(e)){if(s>this[o])return v(this,this[p].get(e)),!1;let a=this[p].get(e).value;return this[l]&&!this[u]&&this[l](e,a.value),a.now=n,a.maxAge=r,a.value=t,this[i]+=s-a.length,a.length=s,this.get(e),g(this),!0}let f=new w(e,t,s,n,r);return f.length>this[o]?(this[l]&&this[l](e,t),!1):(this[i]+=f.length,this[d].unshift(f),this[p].set(e,this[d].head),g(this),!0)}has(e){return!!this[p].has(e)&&!m(this,this[p].get(e).value)}get(e){return _(this,e,!0)}peek(e){return _(this,e,!1)}pop(){let e=this[d].tail;return e?(v(this,e),e.value):null}del(e){v(this,this[p].get(e))}load(e){this.reset();let t=Date.now();for(let r=e.length-1;r>=0;r--){let n=e[r],o=n.e||0;if(0===o)this.set(n.k,n.v);else{let e=o-t;e>0&&this.set(n.k,n.v,e)}}}prune(){this[p].forEach((e,t)=>_(this,t,!1))}}let _=(e,t,r)=>{let n=e[p].get(t);if(n){let t=n.value;if(m(e,t)){if(v(e,n),!e[s])return}else r&&(e[f]&&(n.value.now=Date.now()),e[d].unshiftNode(n));return t.value}},m=(e,t)=>{if(!t||!t.maxAge&&!e[c])return!1;let r=Date.now()-t.now;return t.maxAge?r>t.maxAge:e[c]&&r>e[c]},g=e=>{if(e[i]>e[o])for(let t=e[d].tail;e[i]>e[o]&&null!==t;){let r=t.prev;v(e,t),t=r}},v=(e,t)=>{if(t){let r=t.value;e[l]&&e[l](r.key,r.value),e[i]-=r.length,e[p].delete(r.key),e[d].removeNode(t)}};class w{constructor(e,t,r,n,o){this.key=e,this.value=t,this.length=r,this.now=n,this.maxAge=o||0}}let b=(e,t,r,n)=>{let o=r.value;m(e,o)&&(v(e,r),e[s]||(o=void 0)),o&&t.call(n,o.value,o.key,e)};e.exports=y},8907:e=>{"use strict";e.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}},10517:(e,t,r)=>{"use strict";function n(e){var t=this;if(t instanceof n||(t=new n),t.tail=null,t.head=null,t.length=0,e&&"function"==typeof e.forEach)e.forEach(function(e){t.push(e)});else if(arguments.length>0)for(var r=0,o=arguments.length;r1)r=t;else if(this.head)n=this.head.next,r=this.head.value;else throw TypeError("Reduce of empty list with no initial value");for(var o=0;null!==n;o++)r=e(r,n.value,o),n=n.next;return r},n.prototype.reduceReverse=function(e,t){var r,n=this.tail;if(arguments.length>1)r=t;else if(this.tail)n=this.tail.prev,r=this.tail.value;else throw TypeError("Reduce of empty list with no initial value");for(var o=this.length-1;null!==n;o--)r=e(r,n.value,o),n=n.prev;return r},n.prototype.toArray=function(){for(var e=Array(this.length),t=0,r=this.head;null!==r;t++)e[t]=r.value,r=r.next;return e},n.prototype.toArrayReverse=function(){for(var e=Array(this.length),t=0,r=this.tail;null!==r;t++)e[t]=r.value,r=r.prev;return e},n.prototype.slice=function(e,t){(t=t||this.length)<0&&(t+=this.length),(e=e||0)<0&&(e+=this.length);var r=new n;if(tthis.length&&(t=this.length);for(var o=0,i=this.head;null!==i&&othis.length&&(t=this.length);for(var o=this.length,i=this.tail;null!==i&&o>t;o--)i=i.prev;for(;null!==i&&o>e;o--,i=i.prev)r.push(i.value);return r},n.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var n=0,i=this.head;null!==i&&n]/,i=/^xlink:?./,a=/["&<]/;function s(e){if(!1===a.test(e+=""))return e;for(var t=0,r=0,n="",o="";r(t||40)||!r&&-1!==String(e).indexOf("\n")||-1!==String(e).indexOf("<")},u={},d=/([A-Z])/g;function p(e){var t="";for(var n in e){var o=e[n];null!=o&&""!==o&&(t&&(t+=" "),t+="-"==n[0]?n:u[n]||(u[n]=n.replace(d,"-$1").toLowerCase()),t="number"==typeof o&&!1===r.test(n)?t+": "+o+"px;":t+": "+o+";")}return t||void 0}function f(e,t){return Array.isArray(t)?t.reduce(f,e):null!=t&&!1!==t&&e.push(t),e}function h(){this.__d=!0}function y(e,t){return{__v:e,context:t,props:e.props,setState:h,forceUpdate:h,__d:!0,__h:[]}}function _(e,t){var r=e.contextType,n=r&&t[r.__c];return null!=r?n?n.props.value:r.__:t}var m=[],g={shallow:!0};b.render=b;var v=function(e,t){return b(e,t,g)},w=[];function b(e,r,a){r=r||{};var u=t.options.__s;t.options.__s=!0;var d,h=t.h(t.Fragment,null);return h.__k=[e],d=a&&(a.pretty||a.voidElements||a.sortAttributes||a.shallow||a.allAttributes||a.xml||a.attributeHook)?function e(r,a,u,d,h,g){if(null==r||"boolean"==typeof r)return"";if("object"!=typeof r)return"function"==typeof r?"":s(r);var v=u.pretty,w=v&&"string"==typeof v?v:" ";if(Array.isArray(r)){for(var b="",k=0;k0&&(b+="\n"),b+=e(r[k],a,u,d,h,g);return b}if(void 0!==r.constructor)return"";var S,E=r.type,A=r.props,O=!1;if("function"==typeof E){if(O=!0,!u.shallow||!d&&!1!==u.renderRootComponent){if(E===t.Fragment){var x=[];return f(x,r.props.children),e(x,a,u,!1!==u.shallowHighOrder,h,g)}var P,T=r.__c=y(r,a);t.options.__b&&t.options.__b(r);var C=t.options.__r;if(E.prototype&&"function"==typeof E.prototype.render){var j=_(E,a);(T=r.__c=new E(A,j)).__v=r,T._dirty=T.__d=!0,T.props=A,null==T.state&&(T.state={}),null==T._nextState&&null==T.__s&&(T._nextState=T.__s=T.state),T.context=j,E.getDerivedStateFromProps?T.state=Object.assign({},T.state,E.getDerivedStateFromProps(T.props,T.state)):T.componentWillMount&&(T.componentWillMount(),T.state=T._nextState!==T.state?T._nextState:T.__s!==T.state?T.__s:T.state),C&&C(r),P=T.render(T.props,T.state,T.context)}else for(var J=_(E,a),W=0;T.__d&&W++<25;)T.__d=!1,C&&C(r),P=E.call(r.__c,A,J);return T.getChildContext&&(a=Object.assign({},a,T.getChildContext())),t.options.diffed&&t.options.diffed(r),e(P,a,u,!1!==u.shallowHighOrder,h,g)}E=(S=E).displayName||S!==Function&&S.name||function(e){var t=(Function.prototype.toString.call(e).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!t){for(var r=-1,n=m.length;n--;)if(m[n]===e){r=n;break}r<0&&(r=m.push(e)-1),t="UnnamedComponent"+r}return t}(S)}var I,R,H="<"+E;if(A){var M=Object.keys(A);u&&!0===u.sortAttributes&&M.sort();for(var K=0;K",o.test(E))throw Error(E+" is not a valid HTML tag name in "+H);var L,B=n.test(E)||u.voidElements&&u.voidElements.test(E),q=[];if(R)v&&l(R)&&(R="\n"+w+c(R,w)),H+=R;else if(null!=I&&f(L=[],I).length){for(var z=v&&~H.indexOf("\n"),F=!1,G=0;G0&&"<"!=X[0];F&&Y?q[q.length-1]+=X:q.push(X),F=Y}else q.push(X)}}}if(v&&z)for(var Z=q.length;Z--;)q[Z]="\n"+w+c(q[Z],w)}if(q.length||R)H+=q.join("");else if(u&&u.xml)return H.substring(0,H.length-1)+" />";return!B||L||R?(v&&~H.indexOf("\n")&&(H+="\n"),H=H+""):H=H.replace(/>$/," />"),H}(e,r,a):function e(r,a,c,l,u){if(null==r||!0===r||!1===r||""===r)return"";if("object"!=typeof r)return"function"==typeof r?"":s(r);if(S(r)){var d="";u.__k=r;for(var f=0;f",o.test(h))throw Error(h+" is not a valid HTML tag name in "+j);var K="",U=!1;if(C)K+=C,U=!0;else if("string"==typeof T)K+=s(T),U=!0;else if(S(T)){r.__k=T;for(var $=0;$";return j+""}(e,r,!1,void 0,h),t.options.__c&&t.options.__c(e,w),t.options.__s=u,w.length=0,d}function k(e){return null==e||"boolean"==typeof e?null:"string"==typeof e||"number"==typeof e||"bigint"==typeof e?t.h(null,null,e):e}var S=Array.isArray,E=Object.assign;b.shallowRender=v,e.default=b,e.render=b,e.renderToStaticMarkup=b,e.renderToString=b,e.shallowRender=v})(t,r(97983))},23935:(e,t,r)=>{e.exports=r(61316).default},97983:(e,t)=>{var r,n,o,i,a,s,c,l,u,d,p,f,h,y={},_=[],m=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,g=Array.isArray;function v(e,t){for(var r in t)e[r]=t[r];return e}function w(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function b(e,t,n){var o,i,a,s={};for(a in t)"key"==a?o=t[a]:"ref"==a?i=t[a]:s[a]=t[a];if(arguments.length>2&&(s.children=arguments.length>3?r.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===s[a]&&(s[a]=e.defaultProps[a]);return k(e,s,o,i,null)}function k(e,t,r,i,a){var s={type:e,props:t,key:r,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==a?++o:a,__i:-1,__u:0};return null==a&&null!=n.vnode&&n.vnode(s),s}function S(e){return e.children}function E(e,t){this.props=e,this.context=t}function A(e,t){if(null==t)return e.__?A(e.__,e.__i+1):null;for(var r;tc&&a.sort(l),e=a.shift(),c=a.length,e.__d&&(t=void 0,r=void 0,o=(r=e.__v).__e,i=[],s=[],e.__P&&((t=v({},r)).__v=r.__v+1,n.vnode&&n.vnode(t),J(e.__P,t,r,e.__n,e.__P.namespaceURI,32&r.__u?[o]:null,i,null==o?A(r):o,!!(32&r.__u),s),t.__v=r.__v,t.__.__k[t.__i]=t,I(i,t,s),r.__e=r.__=null,t.__e!=o&&function e(t){var r,n;if(null!=(t=t.__)&&null!=t.__c){for(t.__e=t.__c.base=null,r=0;r0?s=e.__k[a]=k(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[a]=s,l=a+f,s.__=e,s.__b=e.__b+1,c=null,-1!=(u=s.__i=function(e,t,r,n){var o,i,a,s=e.key,c=e.type,l=t[r],u=null!=l&&0==(2&l.__u);if(null===l&&null==s||u&&s==l.key&&c==l.type)return r;if(n>(u?1:0)){for(o=r-1,i=r+1;o>=0||i=0?o--:i++])&&0==(2&l.__u)&&s==l.key&&c==l.type)return a}return -1}(s,r,l,p))&&(p--,(c=r[u])&&(c.__u|=2)),null==c||null==c.__v?(-1==u&&(i>d?f--:il?f--:f++,s.__u|=4))):e.__k[a]=null;if(p)for(a=0;a0?t:g(t)?t.map(e):v({},t)}(p.props.children)),l=P(e,g(K)?K:[K],t,o,i,a,s,c,l,u,d),f.base=t.__e,t.__u&=-161,f.__h.length&&c.push(f),k&&(f.__E=f.__=null)}catch(e){if(t.__v=null,u||null!=s){if(e.then){for(t.__u|=u?160:128;l&&8==l.nodeType&&l.nextSibling;)l=l.nextSibling;s[s.indexOf(l)]=null,t.__e=l}else{for(U=s.length;U--;)w(s[U]);W(t)}}else t.__e=o.__e,t.__k=o.__k,e.then||W(t);n.__e(e,t,o)}else null==s&&t.__v==o.__v?(t.__k=o.__k,t.__e=o.__e):l=t.__e=function(e,t,o,i,a,s,c,l,u){var d,p,f,h,_,m,v,b=o.props||y,k=t.props,S=t.type;if("svg"==S?a="http://www.w3.org/2000/svg":"math"==S?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),null!=s){for(d=0;d2&&(c.children=arguments.length>3?r.call(arguments,2):n),k(e.type,c,o||e.key,i||e.ref,null)},t.createContext=function(e){function t(e){var r,n;return this.getChildContext||(r=new Set,(n={})[t.__c]=this,this.getChildContext=function(){return n},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(e){this.props.value!=e.value&&r.forEach(function(e){e.__e=!0,O(e)})},this.sub=function(e){r.add(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){r&&r.delete(e),t&&t.call(e)}}),e.children}return t.__c="__cC"+h++,t.__=e,t.Provider=t.__l=(t.Consumer=function(e,t){return e.children(t)}).contextType=t,t},t.createElement=b,t.createRef=function(){return{current:null}},t.h=b,t.hydrate=function e(t,r){M(t,r,e)},t.isValidElement=i,t.options=n,t.render=M,t.toChildArray=function e(t,r){return r=r||[],null==t||"boolean"==typeof t||(g(t)?t.some(function(t){e(t,r)}):r.push(t)),r}},68467:(e,t,r)=>{"use strict";let n,o;r.r(t),r.d(t,{NIL:()=>k,parse:()=>m,stringify:()=>f,v1:()=>_,v3:()=>v,v4:()=>w,v5:()=>b,validate:()=>d,version:()=>S});var i=r(84770),a=r.n(i);let s=new Uint8Array(256),c=s.length;function l(){return c>s.length-16&&(a().randomFillSync(s),c=0),s.slice(c,c+=16)}let u=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,d=function(e){return"string"==typeof e&&u.test(e)},p=[];for(let e=0;e<256;++e)p.push((e+256).toString(16).substr(1));let f=function(e,t=0){let r=(p[e[t+0]]+p[e[t+1]]+p[e[t+2]]+p[e[t+3]]+"-"+p[e[t+4]]+p[e[t+5]]+"-"+p[e[t+6]]+p[e[t+7]]+"-"+p[e[t+8]]+p[e[t+9]]+"-"+p[e[t+10]]+p[e[t+11]]+p[e[t+12]]+p[e[t+13]]+p[e[t+14]]+p[e[t+15]]).toLowerCase();if(!d(r))throw TypeError("Stringified UUID is invalid");return r},h=0,y=0,_=function(e,t,r){let i=t&&r||0,a=t||Array(16),s=(e=e||{}).node||n,c=void 0!==e.clockseq?e.clockseq:o;if(null==s||null==c){let t=e.random||(e.rng||l)();null==s&&(s=n=[1|t[0],t[1],t[2],t[3],t[4],t[5]]),null==c&&(c=o=(t[6]<<8|t[7])&16383)}let u=void 0!==e.msecs?e.msecs:Date.now(),d=void 0!==e.nsecs?e.nsecs:y+1,p=u-h+(d-y)/1e4;if(p<0&&void 0===e.clockseq&&(c=c+1&16383),(p<0||u>h)&&void 0===e.nsecs&&(d=0),d>=1e4)throw Error("uuid.v1(): Can't create more than 10M uuids/sec");h=u,y=d,o=c;let _=((268435455&(u+=122192928e5))*1e4+d)%4294967296;a[i++]=_>>>24&255,a[i++]=_>>>16&255,a[i++]=_>>>8&255,a[i++]=255&_;let m=u/4294967296*1e4&268435455;a[i++]=m>>>8&255,a[i++]=255&m,a[i++]=m>>>24&15|16,a[i++]=m>>>16&255,a[i++]=c>>>8|128,a[i++]=255&c;for(let e=0;e<6;++e)a[i+e]=s[e];return t||f(a)},m=function(e){let t;if(!d(e))throw TypeError("Invalid UUID");let r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r};function g(e,t,r){function n(e,n,o,i){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));let t=[];for(let r=0;r{e.exports=function(e,t){this.v=e,this.k=t},e.exports.__esModule=!0,e.exports.default=e.exports},18999:e=>{e.exports=function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},85577:e=>{function t(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}e.exports=function(e){return function(){var r=this,n=arguments;return new Promise(function(o,i){var a=e.apply(r,n);function s(e){t(a,o,i,s,c,"next",e)}function c(e){t(a,o,i,s,c,"throw",e)}s(void 0)})}},e.exports.__esModule=!0,e.exports.default=e.exports},8908:e=>{e.exports=function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},15182:(e,t,r)=>{var n=r(93762),o=r(20805);e.exports=function(e,t,r){if(n())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,t);var a=new(e.bind.apply(e,i));return r&&o(a,r.prototype),a},e.exports.__esModule=!0,e.exports.default=e.exports},85925:(e,t,r)=>{var n=r(38627);function o(e,t){for(var r=0;r{var n=r(38627);e.exports=function(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},4239:e=>{function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t{function t(r){return e.exports=t=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},23006:(e,t,r)=>{var n=r(20805);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&n(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},262:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},58089:e=>{e.exports=function(e){try{return -1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}},e.exports.__esModule=!0,e.exports.default=e.exports},93762:e=>{function t(){try{var r=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(e.exports=t=function(){return!!r},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},64702:(e,t,r)=>{var n=r(73897).default,o=r(18999);e.exports=function(e,t){if(t&&("object"==n(t)||"function"==typeof t))return t;if(void 0!==t)throw TypeError("Derived constructors may only return object or undefined");return o(e)},e.exports.__esModule=!0,e.exports.default=e.exports},20973:(e,t,r)=>{var n=r(47436);function o(){var t,r,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.toStringTag||"@@toStringTag";function c(e,o,i,a){var s=Object.create((o&&o.prototype instanceof u?o:u).prototype);return n(s,"_invoke",function(e,n,o){var i,a,s,c=0,u=o||[],d=!1,p={p:0,n:0,v:t,a:f,f:f.bind(t,4),d:function(e,r){return i=e,a=0,s=t,p.n=r,l}};function f(e,n){for(a=e,s=n,r=0;!d&&c&&!o&&r3?(o=h===n)&&(s=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=t):i[0]<=f&&((o=e<2&&fn||n>h)&&(i[4]=e,i[5]=n,p.n=h,a=0))}if(o||e>1)return l;throw d=!0,n}return function(o,u,h){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&f(u,h),a=u,s=h;(r=a<2?t:s)||!d;){i||(a?a<3?(a>1&&(p.n=-1),f(a,s)):p.n=s:p.v=s);try{if(c=2,i){if(a||(o="next"),r=i[o]){if(!(r=r.call(i,s)))throw TypeError("iterator result is not an object");if(!r.done)return r;s=r.value,a<2&&(a=0)}else 1===a&&(r=i.return)&&r.call(i),a<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=t}else if((r=(d=p.n<0)?s:e.call(n,p))!==l)break}catch(e){i=t,a=1,s=e}finally{c=1}}return{value:r,done:d}}}(e,i,a),!0),s}var l={};function u(){}function d(){}function p(){}r=Object.getPrototypeOf;var f=[][a]?r(r([][a]())):(n(r={},a,function(){return this}),r),h=p.prototype=u.prototype=Object.create(f);function y(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,n(e,s,"GeneratorFunction")),e.prototype=Object.create(h),e}return d.prototype=p,n(h,"constructor",p),n(p,"constructor",d),d.displayName="GeneratorFunction",n(p,s,"GeneratorFunction"),n(h),n(h,s,"Generator"),n(h,a,function(){return this}),n(h,"toString",function(){return"[object Generator]"}),(e.exports=o=function(){return{w:c,m:y}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},22702:(e,t,r)=>{var n=r(87891);e.exports=function(e,t,r,o,i){var a=n(e,t,r,o,i);return a.next().then(function(e){return e.done?e.value:a.next()})},e.exports.__esModule=!0,e.exports.default=e.exports},87891:(e,t,r)=>{var n=r(20973),o=r(23967);e.exports=function(e,t,r,i,a){return new o(n().w(e,t,r,i),a||Promise)},e.exports.__esModule=!0,e.exports.default=e.exports},23967:(e,t,r)=>{var n=r(79945),o=r(47436);e.exports=function e(t,r){var i;this.next||(o(e.prototype),o(e.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),o(this,"_invoke",function(e,o,a){function s(){return new r(function(o,i){(function e(o,i,a,s){try{var c=t[o](i),l=c.value;return l instanceof n?r.resolve(l.v).then(function(t){e("next",t,a,s)},function(t){e("throw",t,a,s)}):r.resolve(l).then(function(e){c.value=e,a(c)},function(t){return e("throw",t,a,s)})}catch(e){s(e)}})(e,a,o,i)})}return i=i?i.then(s,s):s()},!0)},e.exports.__esModule=!0,e.exports.default=e.exports},47436:e=>{function t(r,n,o,i){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}e.exports=t=function(e,r,n,o){function i(r,n){t(e,r,function(e){return this._invoke(r,n,e)})}r?a?a(e,r,{value:n,enumerable:!o,configurable:!o,writable:!o}):e[r]=n:(i("next",0),i("throw",1),i("return",2))},e.exports.__esModule=!0,e.exports.default=e.exports,t(r,n,o,i)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},68393:e=>{e.exports=function(e){var t=Object(e),r=[];for(var n in t)r.unshift(n);return function e(){for(;r.length;)if((n=r.pop())in t)return e.value=n,e.done=!1,e;return e.done=!0,e}},e.exports.__esModule=!0,e.exports.default=e.exports},77165:(e,t,r)=>{var n=r(79945),o=r(20973),i=r(22702),a=r(87891),s=r(23967),c=r(68393),l=r(71584);function u(){"use strict";var t=o(),r=t.m(u),d=(Object.getPrototypeOf?Object.getPrototypeOf(r):r.__proto__).constructor;function p(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))}var f={throw:1,return:2,break:3,continue:3};function h(e){var t,r;return function(n){t||(t={stop:function(){return r(n.a,2)},catch:function(){return n.v},abrupt:function(e,t){return r(n.a,f[e],t)},delegateYield:function(e,o,i){return t.resultName=o,r(n.d,l(e),i)},finish:function(e){return r(n.f,e)}},r=function(e,r,o){n.p=t.prev,n.n=t.next;try{return e(r,o)}finally{t.next=n.n}}),t.resultName&&(t[t.resultName]=n.v,t.resultName=void 0),t.sent=n.v,t.next=n.n;try{return e.call(this,t)}finally{n.p=t.prev,n.n=t.next}}}return(e.exports=u=function(){return{wrap:function(e,r,n,o){return t.w(h(e),r,n,o&&o.reverse())},isGeneratorFunction:p,mark:t.m,awrap:function(e,t){return new n(e,t)},AsyncIterator:s,async:function(e,t,r,n,o){return(p(t)?a:i)(h(e),t,r,n,o)},keys:c,values:l}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=u,e.exports.__esModule=!0,e.exports.default=e.exports},71584:(e,t,r)=>{var n=r(73897).default;e.exports=function(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],r=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}throw TypeError(n(e)+" is not iterable")},e.exports.__esModule=!0,e.exports.default=e.exports},20805:e=>{function t(r,n){return e.exports=t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r,n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},43560:(e,t,r)=>{var n=r(73897).default;e.exports=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},38627:(e,t,r)=>{var n=r(73897).default,o=r(43560);e.exports=function(e){var t=o(e,"string");return"symbol"==n(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports},73897:e=>{function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},16041:(e,t,r)=>{var n=r(83968),o=r(20805),i=r(58089),a=r(15182);function s(t){var r="function"==typeof Map?new Map:void 0;return e.exports=s=function(e){if(null===e||!i(e))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(e))return r.get(e);r.set(e,t)}function t(){return a(e,arguments,n(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),o(t,e)},e.exports.__esModule=!0,e.exports.default=e.exports,s(t)}e.exports=s,e.exports.__esModule=!0,e.exports.default=e.exports},81213:(e,t,r)=>{var n=r(77165)();e.exports=n;try{regeneratorRuntime=n}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},87658:e=>{"use strict";e.exports=JSON.parse('{"name":"openid-client","version":"5.7.1","description":"OpenID Connect Relying Party (RP, Client) implementation for Node.js runtime, supports passportjs","keywords":["auth","authentication","basic","certified","client","connect","dynamic","electron","hybrid","identity","implicit","oauth","oauth2","oidc","openid","passport","relying party","strategy"],"homepage":"https://github.com/panva/openid-client","repository":"panva/openid-client","funding":{"url":"https://github.com/sponsors/panva"},"license":"MIT","author":"Filip Skokan ","exports":{"types":"./types/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"},"main":"./lib/index.js","types":"./types/index.d.ts","files":["lib","types/index.d.ts"],"scripts":{"format":"npx prettier --loglevel silent --write ./lib ./test ./certification ./types","test":"mocha test/**/*.test.js"},"dependencies":{"jose":"^4.15.9","lru-cache":"^6.0.0","object-hash":"^2.2.0","oidc-token-hash":"^5.0.3"},"devDependencies":{"@types/node":"^16.18.106","@types/passport":"^1.0.16","base64url":"^3.0.1","chai":"^4.5.0","mocha":"^10.7.3","nock":"^13.5.5","prettier":"^2.8.8","readable-mock-req":"^0.2.2","sinon":"^9.2.4","timekeeper":"^2.3.1"},"standard-version":{"scripts":{"postchangelog":"sed -i \'\' -e \'s/### \\\\[/## [/g\' CHANGELOG.md"},"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Fixes"},{"type":"chore","hidden":true},{"type":"docs","hidden":true},{"type":"style","hidden":true},{"type":"refactor","section":"Refactor","hidden":false},{"type":"perf","section":"Performance","hidden":false},{"type":"test","hidden":true}]}}')}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[276],()=>r(25645));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/api/auth/[...nextauth]/route.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/api/auth/[...nextauth]/route.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..e24ddcde82959a2d24b2a917d9d4de1b0dc221df --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/api/auth/[...nextauth]/route.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../webpack-runtime.js","../../../../chunks/276.js","../../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/api/auth/callback/[provider]/route.js b/phase-1-core-infra/frontend/.next/server/app/api/auth/callback/[provider]/route.js new file mode 100644 index 0000000000000000000000000000000000000000..a2876aeef617dea2d19924b02ff7e0a5f088436d --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/api/auth/callback/[provider]/route.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=74,e.ids=[74],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},12467:(e,r,a)=>{a.r(r),a.d(r,{originalPathname:()=>h,patchFetch:()=>v,requestAsyncStorage:()=>c,routeModule:()=>s,serverHooks:()=>d,staticGenerationAsyncStorage:()=>l});var t={};a.r(t),a.d(t,{GET:()=>p});var o=a(49303),n=a(88716),i=a(60670),u=a(87070);async function p(e,{params:r}){let{provider:a}=r,t=new URL(`/auth/callback/${a}`,e.url);return e.nextUrl.searchParams.forEach((e,r)=>{t.searchParams.set(r,e)}),u.NextResponse.redirect(t)}let s=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/auth/callback/[provider]/route",pathname:"/api/auth/callback/[provider]",filename:"route",bundlePath:"app/api/auth/callback/[provider]/route"},resolvedPagePath:"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\api\\auth\\callback\\[provider]\\route.ts",nextConfigOutput:"standalone",userland:t}),{requestAsyncStorage:c,staticGenerationAsyncStorage:l,serverHooks:d}=s,h="/api/auth/callback/[provider]/route";function v(){return(0,i.patchFetch)({serverHooks:d,staticGenerationAsyncStorage:l})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var a=e=>r(r.s=e),t=r.X(0,[276,972],()=>a(12467));module.exports=t})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/api/auth/callback/[provider]/route.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/api/auth/callback/[provider]/route.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..3a0b1efbba8baf9fa987eec808ca417987f2782f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/api/auth/callback/[provider]/route.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../../webpack-runtime.js","../../../../../chunks/276.js","../../../../../chunks/972.js","../../../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/api/health/route.js b/phase-1-core-infra/frontend/.next/server/app/api/health/route.js new file mode 100644 index 0000000000000000000000000000000000000000..d73c74a3b2ad05573bc04d1a0e1eadf7d93cc8ec --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/api/health/route.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=829,e.ids=[829],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},28600:(e,t,a)=>{a.r(t),a.d(t,{originalPathname:()=>l,patchFetch:()=>m,requestAsyncStorage:()=>h,routeModule:()=>p,serverHooks:()=>c,staticGenerationAsyncStorage:()=>d});var n={};a.r(n),a.d(n,{GET:()=>u});var r=a(49303),o=a(88716),s=a(60670),i=a(87070);async function u(){let e={status:"healthy",timestamp:new Date().toISOString(),service:"marketing-automation-frontend",version:"1.0.0",components:{nextjs:"healthy"}};try{(await fetch("http://127.0.0.1:8000/health",{method:"GET",signal:AbortSignal.timeout(5e3)})).ok?e.components.backend="healthy":(e.components.backend="unhealthy",e.status="degraded")}catch(t){e.components.backend="unreachable",e.status="degraded"}let t="healthy"===e.status?200:503;return i.NextResponse.json(e,{status:t})}let p=new r.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/health/route",pathname:"/api/health",filename:"route",bundlePath:"app/api/health/route"},resolvedPagePath:"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\api\\health\\route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:h,staticGenerationAsyncStorage:d,serverHooks:c}=p,l="/api/health/route";function m(){return(0,s.patchFetch)({serverHooks:c,staticGenerationAsyncStorage:d})}}};var t=require("../../../webpack-runtime.js");t.C(e);var a=e=>t(t.s=e),n=t.X(0,[276,972],()=>a(28600));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/api/health/route.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/api/health/route.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..6c93304d6ccacb98337b4c28acd30f7df0f881d6 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/api/health/route.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/972.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page.js b/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page.js new file mode 100644 index 0000000000000000000000000000000000000000..9d19f146c296391e724b74ae0ff65a2428bc9446 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=631,e.ids=[631],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},23583:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>o.a,__next_app__:()=>p,originalPathname:()=>c,pages:()=>u,routeModule:()=>f,tree:()=>d}),r(88853),r(32029),r(35866);var s=r(23191),a=r(88716),n=r(37922),o=r.n(n),i=r(95231),l={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>i[e]);r.d(t,l);let d=["",{children:["auth",{children:["callback",{children:["[provider]",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,88853)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx"]}]},{}]},{}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],u=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx"],c="/auth/callback/[provider]/page",p={require:r,loadChunk:()=>Promise.resolve()},f=new s.AppPageRouteModule({definition:{kind:a.x.APP_PAGE,page:"/auth/callback/[provider]/page",pathname:"/auth/callback/[provider]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},58136:(e,t,r)=>{Promise.resolve().then(r.bind(r,39191))},4271:(e,t,r)=>{Promise.resolve().then(r.bind(r,86325))},35047:(e,t,r)=>{"use strict";var s=r(77389);r.o(s,"usePathname")&&r.d(t,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(t,{useRouter:function(){return s.useRouter}}),r.o(s,"useSearchParams")&&r.d(t,{useSearchParams:function(){return s.useSearchParams}})},39191:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var s=r(10326),a=r(17577),n=r(35047);function o({provider:e}){(0,n.useRouter)(),(0,n.useSearchParams)();let[t,r]=(0,a.useState)(null);return((0,a.useRef)(!1),t)?(0,s.jsxs)("div",{className:"text-center",children:[s.jsx("div",{className:"mx-auto h-12 w-12 text-red-500",children:s.jsx("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"w-full h-full",children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),s.jsx("h2",{className:"mt-6 text-2xl font-bold text-gray-900",children:"Connection Failed"}),s.jsx("p",{className:"mt-2 text-sm text-gray-600",children:t}),s.jsx("p",{className:"mt-2 text-sm text-gray-500",children:"Redirecting to dashboard..."})]}):(0,s.jsxs)("div",{className:"text-center",children:[s.jsx("div",{className:"mx-auto h-12 w-12",children:s.jsx("div",{className:"w-full h-full border-4 border-blue-500 border-t-transparent rounded-full animate-spin"})}),s.jsx("h2",{className:"mt-6 text-2xl font-bold text-gray-900",children:"Connecting Account"}),(0,s.jsxs)("p",{className:"mt-2 text-sm text-gray-600",children:["Please wait while we connect your ",e," account..."]})]})}function i({params:e}){return s.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50",children:s.jsx("div",{className:"max-w-md w-full space-y-8 p-8",children:s.jsx(a.Suspense,{fallback:(0,s.jsxs)("div",{className:"text-center",children:[s.jsx("div",{className:"mx-auto h-12 w-12",children:s.jsx("div",{className:"w-full h-full border-4 border-blue-500 border-t-transparent rounded-full animate-spin"})}),s.jsx("p",{className:"mt-4 text-gray-600",children:"Loading..."})]}),children:s.jsx(o,{provider:e.provider})})})})}},86325:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>N});var s=r(10326),a=r(46465),n=r.n(a);r(23824);var o=r(17577),i=r(10592),l=r(79360),d=r(94019),u=r(51223);let c=i.zt,p=o.forwardRef(({className:e,...t},r)=>s.jsx(i.l_,{ref:r,className:(0,u.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));p.displayName=i.l_.displayName;let f=(0,l.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=o.forwardRef(({className:e,variant:t,...r},a)=>s.jsx(i.fC,{ref:a,className:(0,u.cn)(f({variant:t}),e),...r}));m.displayName=i.fC.displayName,o.forwardRef(({className:e,...t},r)=>s.jsx(i.aU,{ref:r,className:(0,u.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let h=o.forwardRef(({className:e,...t},r)=>s.jsx(i.x8,{ref:r,className:(0,u.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:s.jsx(d.Z,{className:"h-4 w-4"})}));h.displayName=i.x8.displayName;let x=o.forwardRef(({className:e,...t},r)=>s.jsx(i.Dx,{ref:r,className:(0,u.cn)("text-sm font-semibold",e),...t}));x.displayName=i.Dx.displayName;let g=o.forwardRef(({className:e,...t},r)=>s.jsx(i.dk,{ref:r,className:(0,u.cn)("text-sm opacity-90",e),...t}));g.displayName=i.dk.displayName;var v=r(56627);function y(){let{toasts:e}=(0,v.pm)();return(0,s.jsxs)(c,{children:[e.map(function({id:e,title:t,description:r,action:a,...n}){return(0,s.jsxs)(m,{...n,children:[(0,s.jsxs)("div",{className:"grid gap-1",children:[t&&s.jsx(x,{children:t}),r&&s.jsx(g,{children:r})]}),a,s.jsx(h,{})]},e)}),s.jsx(p,{})]})}var b=r(92876),j=r(74951),w=r(44976);function N({children:e}){let[t]=(0,o.useState)(()=>new j.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return s.jsx("html",{lang:"en",children:s.jsx("body",{className:n().className,children:s.jsx(w.aH,{client:t,children:(0,s.jsxs)(b.Ho,{children:[e,s.jsx(y,{})]})})})})}},92876:(e,t,r)=>{"use strict";r.d(t,{Ho:()=>i,aC:()=>l});var s=r(10326),a=r(17577),n=r(42357);let o=(0,a.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,r]=(0,a.useState)(null),[i,l]=(0,a.useState)(null),[d,u]=(0,a.useState)(!0),c=async()=>{try{let e=await (0,n.Gg)();e?(r(e.user),l(e.session)):(r(null),l(null))}catch(e){r(null),l(null)}finally{u(!1)}};return s.jsx(o.Provider,{value:{user:t,session:i,loading:d,refetch:c},children:e})}function l(){return(0,a.useContext)(o)}},56627:(e,t,r)=>{"use strict";r.d(t,{pm:()=>p});var s=r(17577);let a=0,n=new Map,o=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),u({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?o(r):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function u(e){d=i(d,e),l.forEach(e=>{e(d)})}function c({...e}){let t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>u({type:"DISMISS_TOAST",toastId:t});return u({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>u({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function p(){let[e,t]=s.useState(d);return s.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:c,dismiss:e=>u({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,r)=>{"use strict";r.d(t,{Gg:()=>o,w7:()=>n});let s="http://127.0.0.1:8000",a={async signUp(e,t,r){let a=await fetch(`${s}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!a.ok)throw Error((await a.json()).detail||"Registration failed");return a.json()},async signIn(e,t){let r=await fetch(`${s}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${s}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${s}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};a.signUp,a.signIn;let n=a.signOut,o=a.getSession},51223:(e,t,r)=>{"use strict";r.d(t,{cn:()=>n});var s=r(41135),a=r(31009);function n(...e){return(0,a.m6)((0,s.W)(e))}},88853:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});let s=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\auth\callback\[provider]\page.tsx#default`)},32029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});let s=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},23824:()=>{}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[276,448],()=>r(23583));module.exports=s})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..aa536c6ede7544256b2aeae287cca02b7577f990 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../webpack-runtime.js","../../../../chunks/276.js","../../../../chunks/448.js","page_client-reference-manifest.js","../../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..e7b9220959d42543de6283124b39d4688c78dfa7 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/callback/[provider]/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/auth/callback/[provider]/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":["631","static/chunks/app/auth/callback/%5Bprovider%5D/page-451299b53c301e5c.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/login.html b/phase-1-core-infra/frontend/.next/server/app/auth/login.html new file mode 100644 index 0000000000000000000000000000000000000000..a72a26a16174acb66688edc28c5707ca9df6886a --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/login.html @@ -0,0 +1 @@ +
            PostAI

            Sign in

            Welcome back. Enter your credentials to continue.

            Forgot password? Contact support

            Don't have an account? Sign up

              \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/login.meta b/phase-1-core-infra/frontend/.next/server/app/auth/login.meta new file mode 100644 index 0000000000000000000000000000000000000000..f860919bd395773cfb866c79ace60bf2a67ff39e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/login.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/auth/layout,_N_T_/auth/login/layout,_N_T_/auth/login/page,_N_T_/auth/login" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/login.rsc b/phase-1-core-infra/frontend/.next/server/app/auth/login.rsc new file mode 100644 index 0000000000000000000000000000000000000000..dba4cd51f769443a8f0f03b15cbaa1dab10a99a2 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/login.rsc @@ -0,0 +1,9 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[61202,["972","static/chunks/972-5b96c0591eeae4ee.js","716","static/chunks/app/auth/login/page-09b1f835b0c3b6ee.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["auth",{"children":["login",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["auth",{"children":["login",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","auth","children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","auth","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/login/page.js b/phase-1-core-infra/frontend/.next/server/app/auth/login/page.js new file mode 100644 index 0000000000000000000000000000000000000000..e29ce9379eb7c3436273dd261935c379de8d1dbd --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/login/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=716,e.ids=[716],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},69257:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>i.a,__next_app__:()=>h,originalPathname:()=>u,pages:()=>c,routeModule:()=>m,tree:()=>d}),s(95293),s(32029),s(35866);var r=s(23191),a=s(88716),n=s(37922),i=s.n(n),o=s(95231),l={};for(let e in o)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>o[e]);s.d(t,l);let d=["",{children:["auth",{children:["login",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,95293)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx"]}]},{}]},{}]},{layout:[()=>Promise.resolve().then(s.bind(s,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx"],u="/auth/login/page",h={require:s,loadChunk:()=>Promise.resolve()},m=new r.AppPageRouteModule({definition:{kind:a.x.APP_PAGE,page:"/auth/login/page",pathname:"/auth/login",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,12994,23)),Promise.resolve().then(s.t.bind(s,96114,23)),Promise.resolve().then(s.t.bind(s,9727,23)),Promise.resolve().then(s.t.bind(s,79671,23)),Promise.resolve().then(s.t.bind(s,41868,23)),Promise.resolve().then(s.t.bind(s,84759,23))},53054:(e,t,s)=>{Promise.resolve().then(s.bind(s,47073))},4271:(e,t,s)=>{Promise.resolve().then(s.bind(s,86325))},90434:(e,t,s)=>{"use strict";s.d(t,{default:()=>a.a});var r=s(79404),a=s.n(r)},35047:(e,t,s)=>{"use strict";var r=s(77389);s.o(r,"usePathname")&&s.d(t,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}})},47073:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>l});var r=s(10326),a=s(17577),n=s(35047),i=s(90434),o=s(56627);function l(){(0,n.useRouter)();let{toast:e}=(0,o.pm)(),[t,s]=(0,a.useState)(!1),[l,d]=(0,a.useState)({email:"",password:""}),c=async t=>{t.preventDefault(),s(!0);try{let t=await fetch("/api/v1/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(l)});if(!t.ok){let s=await t.json(),r=Array.isArray(s.detail)?s.detail.map(e=>e.msg).join(", "):s.detail||"Invalid email or password";e({title:"Login failed",description:r,variant:"destructive"});return}window.location.href="/dashboard"}catch{e({title:"Error",description:"An unexpected error occurred",variant:"destructive"})}finally{s(!1)}};return(0,r.jsxs)("div",{className:"min-h-screen flex font-sans",children:[(0,r.jsxs)("div",{className:"hidden lg:flex lg:w-1/2 bg-gradient-to-br from-[#0A66C2] to-[#004182] flex-col justify-center px-14 py-12 relative overflow-hidden",children:[r.jsx("div",{className:"absolute top-0 right-0 w-72 h-72 bg-white/5 rounded-full -translate-y-1/2 translate-x-1/2 pointer-events-none"}),r.jsx("div",{className:"absolute bottom-0 left-0 w-56 h-56 bg-white/5 rounded-full translate-y-1/2 -translate-x-1/2 pointer-events-none"}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 mb-12",children:[r.jsx("div",{className:"w-11 h-11 rounded-full bg-white/20 flex items-center justify-center",children:r.jsx("svg",{className:"w-6 h-6 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),r.jsx("span",{className:"text-white text-2xl font-bold tracking-tight",children:"PostAI"})]}),r.jsx("h2",{className:"text-white text-3xl font-bold leading-snug mb-4",children:"Grow your professional brand on LinkedIn"}),r.jsx("p",{className:"text-blue-100 text-sm mb-10",children:"Join thousands of professionals using AI to post consistently and grow their audience."}),r.jsx("ul",{className:"space-y-5",children:[{title:"AI-Powered Content",desc:"Generate high-quality LinkedIn posts in seconds.",icon:r.jsx("svg",{className:"w-5 h-5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})},{title:"Smart Scheduling",desc:"Auto-schedule posts at peak engagement times.",icon:r.jsx("svg",{className:"w-5 h-5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})})},{title:"Performance Analytics",desc:"Track reach, impressions, and engagement metrics.",icon:r.jsx("svg",{className:"w-5 h-5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})})}].map(e=>(0,r.jsxs)("li",{className:"flex items-start gap-4",children:[r.jsx("div",{className:"w-9 h-9 rounded-lg bg-white/15 flex items-center justify-center shrink-0",children:e.icon}),(0,r.jsxs)("div",{children:[r.jsx("p",{className:"text-white font-semibold text-sm",children:e.title}),r.jsx("p",{className:"text-blue-100 text-xs mt-0.5",children:e.desc})]})]},e.title))})]})]}),r.jsx("div",{className:"flex-1 flex items-center justify-center bg-white px-6 py-12",children:(0,r.jsxs)("div",{className:"w-full max-w-sm",children:[(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2 mb-8 lg:hidden",children:[r.jsx("div",{className:"w-9 h-9 rounded-full bg-[#0A66C2] flex items-center justify-center",children:r.jsx("svg",{className:"w-5 h-5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),r.jsx("span",{className:"text-gray-900 text-xl font-bold",children:"PostAI"})]}),r.jsx("h1",{className:"font-semibold text-gray-900 text-2xl mb-1",children:"Sign in"}),r.jsx("p",{className:"text-gray-600 text-sm mb-7",children:"Welcome back. Enter your credentials to continue."}),(0,r.jsxs)("form",{onSubmit:c,className:"space-y-4",children:[(0,r.jsxs)("div",{children:[r.jsx("label",{className:"block text-sm font-semibold text-gray-900 mb-1.5",children:"Email"}),r.jsx("input",{type:"email",value:l.email,onChange:e=>d({...l,email:e.target.value}),placeholder:"you@example.com",required:!0,disabled:t,className:"w-full px-4 py-2.5 bg-white border border-gray-300 rounded-lg text-gray-900 placeholder-gray-400 text-sm focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all"})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-1.5",children:[r.jsx("label",{className:"block text-sm font-semibold text-gray-900",children:"Password"}),r.jsx("span",{className:"text-xs text-gray-400",children:"Forgot password? Contact support"})]}),r.jsx("input",{type:"password",value:l.password,onChange:e=>d({...l,password:e.target.value}),placeholder:"••••••••",required:!0,disabled:t,className:"w-full px-4 py-2.5 bg-white border border-gray-300 rounded-lg text-gray-900 placeholder-gray-400 text-sm focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all"})]}),r.jsx("button",{type:"submit",disabled:t,className:"w-full py-2.5 bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full shadow-sm transition-colors disabled:opacity-60 disabled:cursor-not-allowed",children:t?(0,r.jsxs)("span",{className:"flex items-center justify-center gap-2",children:[r.jsx("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Signing in..."]}):"Sign In"})]}),(0,r.jsxs)("p",{className:"text-center text-gray-600 text-sm mt-6",children:["Don't have an account?"," ",r.jsx(i.default,{href:"/auth/register",className:"text-[#0A66C2] hover:text-[#004182] font-semibold",children:"Sign up"})]})]})})]})}},86325:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>N});var r=s(10326),a=s(46465),n=s.n(a);s(23824);var i=s(17577),o=s(10592),l=s(79360),d=s(94019),c=s(51223);let u=o.zt,h=i.forwardRef(({className:e,...t},s)=>r.jsx(o.l_,{ref:s,className:(0,c.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));h.displayName=o.l_.displayName;let m=(0,l.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),p=i.forwardRef(({className:e,variant:t,...s},a)=>r.jsx(o.fC,{ref:a,className:(0,c.cn)(m({variant:t}),e),...s}));p.displayName=o.fC.displayName,i.forwardRef(({className:e,...t},s)=>r.jsx(o.aU,{ref:s,className:(0,c.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=o.aU.displayName;let x=i.forwardRef(({className:e,...t},s)=>r.jsx(o.x8,{ref:s,className:(0,c.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:r.jsx(d.Z,{className:"h-4 w-4"})}));x.displayName=o.x8.displayName;let f=i.forwardRef(({className:e,...t},s)=>r.jsx(o.Dx,{ref:s,className:(0,c.cn)("text-sm font-semibold",e),...t}));f.displayName=o.Dx.displayName;let g=i.forwardRef(({className:e,...t},s)=>r.jsx(o.dk,{ref:s,className:(0,c.cn)("text-sm opacity-90",e),...t}));g.displayName=o.dk.displayName;var v=s(56627);function y(){let{toasts:e}=(0,v.pm)();return(0,r.jsxs)(u,{children:[e.map(function({id:e,title:t,description:s,action:a,...n}){return(0,r.jsxs)(p,{...n,children:[(0,r.jsxs)("div",{className:"grid gap-1",children:[t&&r.jsx(f,{children:t}),s&&r.jsx(g,{children:s})]}),a,r.jsx(x,{})]},e)}),r.jsx(h,{})]})}var b=s(92876),j=s(74951),w=s(44976);function N({children:e}){let[t]=(0,i.useState)(()=>new j.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return r.jsx("html",{lang:"en",children:r.jsx("body",{className:n().className,children:r.jsx(w.aH,{client:t,children:(0,r.jsxs)(b.Ho,{children:[e,r.jsx(y,{})]})})})})}},92876:(e,t,s)=>{"use strict";s.d(t,{Ho:()=>o,aC:()=>l});var r=s(10326),a=s(17577),n=s(42357);let i=(0,a.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function o({children:e}){let[t,s]=(0,a.useState)(null),[o,l]=(0,a.useState)(null),[d,c]=(0,a.useState)(!0),u=async()=>{try{let e=await (0,n.Gg)();e?(s(e.user),l(e.session)):(s(null),l(null))}catch(e){s(null),l(null)}finally{c(!1)}};return r.jsx(i.Provider,{value:{user:t,session:o,loading:d,refetch:u},children:e})}function l(){return(0,a.useContext)(i)}},56627:(e,t,s)=>{"use strict";s.d(t,{pm:()=>h});var r=s(17577);let a=0,n=new Map,i=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?i(s):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=o(d,e),l.forEach(e=>{e(d)})}function u({...e}){let t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||s()}}}),{id:t,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function h(){let[e,t]=r.useState(d);return r.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,s)=>{"use strict";s.d(t,{Gg:()=>i,w7:()=>n});let r="http://127.0.0.1:8000",a={async signUp(e,t,s){let a=await fetch(`${r}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:s})});if(!a.ok)throw Error((await a.json()).detail||"Registration failed");return a.json()},async signIn(e,t){let s=await fetch(`${r}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!s.ok)throw Error((await s.json()).detail||"Login failed");return s.json()},async signOut(){if(!(await fetch(`${r}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${r}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};a.signUp,a.signIn;let n=a.signOut,i=a.getSession},51223:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var r=s(41135),a=s(31009);function n(...e){return(0,a.m6)((0,r.W)(e))}},95293:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\auth\login\page.tsx#default`)},32029:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},23824:()=>{}};var t=require("../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[276,448,404],()=>s(69257));module.exports=r})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/login/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/auth/login/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..4b14479e547c416057703fda36cba77026f72074 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/login/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/404.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/login/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/auth/login/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..cd395f9316ebe47be88ae4cdf9aa819b8eb908d9 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/login/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/auth/login/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","716","static/chunks/app/auth/login/page-09b1f835b0c3b6ee.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/register.html b/phase-1-core-infra/frontend/.next/server/app/auth/register.html new file mode 100644 index 0000000000000000000000000000000000000000..9e38222f9a3deeaff954b6f7422d889193a8ba2d --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/register.html @@ -0,0 +1 @@ +

              Create Account

              Sign up to start managing your social media connections

              Min 8 characters, with uppercase, lowercase, and number

              Already have an account? Sign in

                \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/register.meta b/phase-1-core-infra/frontend/.next/server/app/auth/register.meta new file mode 100644 index 0000000000000000000000000000000000000000..f667a5ac00e3ad9f20ec137a35553eb24932a0de --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/register.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/auth/layout,_N_T_/auth/register/layout,_N_T_/auth/register/page,_N_T_/auth/register" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/register.rsc b/phase-1-core-infra/frontend/.next/server/app/auth/register.rsc new file mode 100644 index 0000000000000000000000000000000000000000..e5be8ee634fa961f1eb814787d2f7d06d88641ed --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/register.rsc @@ -0,0 +1,9 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[88507,["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","454","static/chunks/app/auth/register/page-d5fe300710df2f7a.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["auth",{"children":["register",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["auth",{"children":["register",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","auth","children","register","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","auth","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/register/page.js b/phase-1-core-infra/frontend/.next/server/app/auth/register/page.js new file mode 100644 index 0000000000000000000000000000000000000000..ee176b0df962d3f598d18677a886ed7505d7e0e3 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/register/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=454,e.ids=[454],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},28965:(e,a,r)=>{"use strict";r.r(a),r.d(a,{GlobalError:()=>i.a,__next_app__:()=>m,originalPathname:()=>u,pages:()=>c,routeModule:()=>p,tree:()=>d}),r(90734),r(32029),r(35866);var s=r(23191),t=r(88716),n=r(37922),i=r.n(n),o=r(95231),l={};for(let e in o)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>o[e]);r.d(a,l);let d=["",{children:["auth",{children:["register",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,90734)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx"]}]},{}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx"],u="/auth/register/page",m={require:r,loadChunk:()=>Promise.resolve()},p=new s.AppPageRouteModule({definition:{kind:t.x.APP_PAGE,page:"/auth/register/page",pathname:"/auth/register",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},68210:(e,a,r)=>{Promise.resolve().then(r.bind(r,88252))},90434:(e,a,r)=>{"use strict";r.d(a,{default:()=>t.a});var s=r(79404),t=r.n(s)},35047:(e,a,r)=>{"use strict";var s=r(77389);r.o(s,"usePathname")&&r.d(a,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(a,{useRouter:function(){return s.useRouter}}),r.o(s,"useSearchParams")&&r.d(a,{useSearchParams:function(){return s.useSearchParams}})},88252:(e,a,r)=>{"use strict";r.r(a),r.d(a,{default:()=>w});var s=r(10326),t=r(17577),n=r(35047),i=r(90434),o=r(91664),l=r(41190),d=r(45353),c=r(45226);let u=(0,t.forwardRef)((e,a)=>(0,t.createElement)(c.WV.label,(0,d.Z)({},e,{ref:a,onMouseDown:a=>{var r;null===(r=e.onMouseDown)||void 0===r||r.call(e,a),!a.defaultPrevented&&a.detail>1&&a.preventDefault()}})));var m=r(79360),p=r(51223);let h=(0,m.j)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),x=t.forwardRef(({className:e,...a},r)=>s.jsx(u,{ref:r,className:(0,p.cn)(h(),e),...a}));x.displayName=u.displayName;var f=r(29752),g=r(56627);function w(){(0,n.useRouter)();let{toast:e}=(0,g.pm)(),[a,r]=(0,t.useState)(!1),[d,c]=(0,t.useState)({name:"",email:"",password:"",confirmPassword:""}),[u,m]=(0,t.useState)({}),p=()=>{let e={};return d.name.trim()||(e.name="Name is required"),d.email.trim()||(e.email="Email is required"),d.password.length<8?e.password="Must be at least 8 characters":/[A-Z]/.test(d.password)?/[a-z]/.test(d.password)?/\d/.test(d.password)||(e.password="Must contain a number"):e.password="Must contain a lowercase letter":e.password="Must contain an uppercase letter",d.password!==d.confirmPassword&&(e.confirmPassword="Passwords do not match"),m(e),0===Object.keys(e).length},h=async a=>{if(a.preventDefault(),p()){r(!0);try{let a=await fetch("/api/v1/auth/register",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:d.name,email:d.email,password:d.password})});if(!a.ok){let r=await a.json(),s=Array.isArray(r.detail)?r.detail.map(e=>e.msg).join(", "):r.detail||"An error occurred during registration";e({title:"Registration failed",description:s,variant:"destructive"});return}e({title:"Success",description:"Account created successfully!"}),window.location.href="/dashboard"}catch(a){e({title:"Error",description:"An unexpected error occurred. Please try again.",variant:"destructive"})}finally{r(!1)}}};return s.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 px-4",children:(0,s.jsxs)(f.Zb,{className:"w-full max-w-md",children:[(0,s.jsxs)(f.Ol,{children:[s.jsx(f.ll,{children:"Create Account"}),s.jsx(f.SZ,{children:"Sign up to start managing your social media connections"})]}),s.jsx(f.aY,{children:(0,s.jsxs)("form",{onSubmit:h,className:"space-y-4",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[s.jsx(x,{htmlFor:"name",children:"Full Name"}),s.jsx(l.I,{id:"name",type:"text",placeholder:"John Doe",value:d.name,onChange:e=>{c({...d,name:e.target.value}),u.name&&m({...u,name:""})},disabled:a}),u.name&&s.jsx("p",{className:"text-xs text-red-500",children:u.name})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[s.jsx(x,{htmlFor:"email",children:"Email"}),s.jsx(l.I,{id:"email",type:"email",placeholder:"you@example.com",value:d.email,onChange:e=>{c({...d,email:e.target.value}),u.email&&m({...u,email:""})},disabled:a}),u.email&&s.jsx("p",{className:"text-xs text-red-500",children:u.email})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[s.jsx(x,{htmlFor:"password",children:"Password"}),s.jsx(l.I,{id:"password",type:"password",placeholder:"••••••••",value:d.password,onChange:e=>{c({...d,password:e.target.value}),u.password&&m({...u,password:""})},disabled:a}),u.password?s.jsx("p",{className:"text-xs text-red-500",children:u.password}):s.jsx("p",{className:"text-xs text-gray-500",children:"Min 8 characters, with uppercase, lowercase, and number"})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[s.jsx(x,{htmlFor:"confirmPassword",children:"Confirm Password"}),s.jsx(l.I,{id:"confirmPassword",type:"password",placeholder:"••••••••",value:d.confirmPassword,onChange:e=>{c({...d,confirmPassword:e.target.value}),u.confirmPassword&&m({...u,confirmPassword:""})},disabled:a}),u.confirmPassword&&s.jsx("p",{className:"text-xs text-red-500",children:u.confirmPassword})]}),s.jsx(o.z,{type:"submit",className:"w-full",disabled:a,children:a?"Creating account...":"Create Account"})]})}),s.jsx(f.eW,{className:"flex justify-center",children:(0,s.jsxs)("p",{className:"text-sm text-gray-600",children:["Already have an account?"," ",s.jsx(i.default,{href:"/auth/login",className:"text-blue-600 hover:underline",children:"Sign in"})]})})]})})}},90734:(e,a,r)=>{"use strict";r.r(a),r.d(a,{default:()=>s});let s=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\auth\register\page.tsx#default`)}};var a=require("../../../webpack-runtime.js");a.C(e);var r=e=>a(a.s=e),s=a.X(0,[276,448,404,22],()=>r(28965));module.exports=s})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/register/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/auth/register/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..44c3bb5c19ed15539ab34d23a6e9104c181ea068 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/register/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/404.js","../../../chunks/22.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/auth/register/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/auth/register/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..77c56d5b70ae5792550fae9f61e5b51fdb007389 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/auth/register/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/auth/register/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","454","static/chunks/app/auth/register/page-d5fe300710df2f7a.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard.html b/phase-1-core-infra/frontend/.next/server/app/dashboard.html new file mode 100644 index 0000000000000000000000000000000000000000..d1705198fa5a8235f7751c2cafbb9a19cc32df64 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard.html @@ -0,0 +1 @@ +
                Loading...
                  \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard.meta b/phase-1-core-infra/frontend/.next/server/app/dashboard.meta new file mode 100644 index 0000000000000000000000000000000000000000..1e4d246541cd13dd8ef237d50608d1a6f70adb2f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/page,_N_T_/dashboard" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard.rsc b/phase-1-core-infra/frontend/.next/server/app/dashboard.rsc new file mode 100644 index 0000000000000000000000000000000000000000..9406a3cc872d880a12ddf603083889e2b1f0efb5 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard.rsc @@ -0,0 +1,10 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[50441,["972","static/chunks/972-5b96c0591eeae4ee.js","702","static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js"],"default",1] +4:I[58328,["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"default",1] +5:I[4707,[],""] +6:I[36423,[],""] +8:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["dashboard",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[null,["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],"params":"$7"}]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L8",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L9",null]]]] +9:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.html b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.html new file mode 100644 index 0000000000000000000000000000000000000000..30ab6234c490cbeac3211e4e842052b6094dcb69 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.html @@ -0,0 +1 @@ +
                  Loading...
                    \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.meta b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.meta new file mode 100644 index 0000000000000000000000000000000000000000..aba8321a7aca75933ec9a17112e1b705490d7d8f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/connected-accounts/layout,_N_T_/dashboard/connected-accounts/page,_N_T_/dashboard/connected-accounts" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.rsc b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.rsc new file mode 100644 index 0000000000000000000000000000000000000000..d6cba9b33f11b9c9c297db00b860911a390b9433 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts.rsc @@ -0,0 +1,10 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[95761,["731","static/chunks/app/dashboard/connected-accounts/page-00a803a131eed5fc.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[58328,["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"default",1] +8:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["dashboard",{"children":["connected-accounts",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["connected-accounts",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","connected-accounts","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[null,["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],"params":"$7"}]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L8",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L9",null]]]] +9:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page.js new file mode 100644 index 0000000000000000000000000000000000000000..ebba252d217bf63f44a5e54d8f3ad076be1e5bd7 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=731,e.ids=[731],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},64945:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>o.a,__next_app__:()=>h,originalPathname:()=>u,pages:()=>l,routeModule:()=>m,tree:()=>d}),s(26697),s(22834),s(32029),s(35866);var r=s(23191),n=s(88716),a=s(37922),o=s.n(a),i=s(95231),c={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(c[e]=()=>i[e]);s.d(t,c);let d=["",{children:["dashboard",{children:["connected-accounts",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,26697)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(s.bind(s,22834)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx"]}]},{layout:[()=>Promise.resolve().then(s.bind(s,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,35866,23)),"next/dist/client/components/not-found-error"]}],l=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx"],u="/dashboard/connected-accounts/page",h={require:s,loadChunk:()=>Promise.resolve()},m=new r.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/dashboard/connected-accounts/page",pathname:"/dashboard/connected-accounts",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},93077:(e,t,s)=>{Promise.resolve().then(s.bind(s,54864))},54864:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>i});var r=s(10326),n=s(17577);let a=[{key:"linkedin",label:"LinkedIn",icon:"\uD83D\uDCBC"}],o=["Automatically post AI-generated content to LinkedIn","Schedule posts at optimal times for maximum reach","Track engagement, impressions, and performance metrics","Your credentials are encrypted and stored securely"];function i(){let[e,t]=(0,n.useState)([]),[s,i]=(0,n.useState)(!0),[c,d]=(0,n.useState)(null),[l,u]=(0,n.useState)(null),h=async()=>{i(!0),u(null);try{let e=await fetch("/api/v1/oauth/accounts",{credentials:"include"});if(!e.ok){if(401===e.status)u("Please login to view connected accounts");else throw Error(`Failed to fetch accounts: ${e.status}`);return}let s=await e.json();t(Array.isArray(s)?s:[])}catch(e){console.error("Error fetching accounts:",e),u("Failed to load connected accounts")}finally{i(!1)}},m=async e=>{d(e);try{let t=await fetch(`/api/v1/oauth/authorize/${e}`,{credentials:"include"});if(!t.ok){let s=await t.json().catch(()=>({}));throw Error(s.detail||`Failed to initiate ${e} OAuth`)}let s=await t.json();s.authorization_url?(s.redirect_uri&&sessionStorage.setItem(`oauth_redirect_uri_${e}`,s.redirect_uri),s.state&&sessionStorage.setItem(`oauth_state_${e}`,s.state),s.code_verifier&&sessionStorage.setItem("oauth_code_verifier",s.code_verifier),window.location.href=s.authorization_url):window.location.href=`/api/auth/signin/${e}`}catch(t){console.error(`Error connecting ${e}:`,t),alert(`Failed to connect ${e}: ${t.message}`),d(null)}},x=async e=>{if(confirm(`Are you sure you want to disconnect your ${e.platform} account?`))try{let t=await fetch(`/api/v1/oauth/disconnect/${e.id}`,{method:"DELETE",credentials:"include"});if(!t.ok&&204!==t.status)throw Error("Failed to disconnect account");alert(`${e.platform} account disconnected successfully`),h()}catch(e){console.error("Error disconnecting account:",e),alert("Failed to disconnect account")}},p=t=>e.find(e=>e.platform===t);return r.jsx("div",{className:"min-h-screen bg-[#F3F2EF] py-6 px-4",children:(0,r.jsxs)("div",{className:"max-w-2xl mx-auto space-y-4",children:[(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6",children:[r.jsx("h1",{className:"font-semibold text-gray-900 text-xl",children:"Connected Accounts"}),r.jsx("p",{className:"text-gray-600 text-sm mt-1",children:"Link your social media accounts to enable AI-powered automated posting."})]}),s?(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-10 text-center",children:[r.jsx("div",{className:"w-8 h-8 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin mx-auto mb-3"}),r.jsx("p",{className:"text-gray-600 text-sm",children:"Loading accounts..."})]}):l?(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-8 text-center border-l-4 border-red-400",children:[r.jsx("div",{className:"w-10 h-10 rounded-full bg-red-100 flex items-center justify-center mx-auto mb-3",children:r.jsx("svg",{className:"w-5 h-5 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),r.jsx("p",{className:"text-gray-900 font-semibold text-sm mb-1",children:"Something went wrong"}),r.jsx("p",{className:"text-gray-600 text-sm",children:l})]}):(0,r.jsxs)("div",{className:"space-y-4",children:[a.map(({key:e,label:t})=>{let s=p(e);return r.jsx("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-6",children:(0,r.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-4",children:[r.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#0A66C2] flex items-center justify-center shrink-0",children:r.jsx("svg",{className:"w-6 h-6 text-white",viewBox:"0 0 24 24",fill:"currentColor",children:r.jsx("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})})}),(0,r.jsxs)("div",{children:[r.jsx("h3",{className:"font-semibold text-gray-900",children:t}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[r.jsx("span",{className:`w-2 h-2 rounded-full ${s?"bg-green-500":"bg-gray-300"}`}),r.jsx("span",{className:`text-sm ${s?"text-green-600 font-medium":"text-gray-500"}`,children:s?"Connected":"Not connected"})]}),s?.platform_username&&(0,r.jsxs)("p",{className:"text-xs text-gray-500 mt-0.5",children:["as ",(0,r.jsxs)("span",{className:"font-medium text-gray-700",children:["@",s.platform_username]})]})]})]}),r.jsx("div",{className:"shrink-0",children:s?r.jsx("button",{onClick:()=>x(s),className:"border border-red-400 text-red-500 hover:bg-red-50 font-semibold text-sm rounded-full px-5 py-2 transition-colors",children:"Disconnect"}):r.jsx("button",{onClick:()=>m(e),disabled:c===e,className:"bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2 transition-colors disabled:opacity-60 disabled:cursor-not-allowed flex items-center gap-2",children:c===e?(0,r.jsxs)(r.Fragment,{children:[r.jsx("span",{className:"w-3.5 h-3.5 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Connecting..."]}):"Connect"})})]})},e)}),(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6",children:[(0,r.jsxs)("h4",{className:"font-semibold text-gray-900 mb-4 flex items-center gap-2",children:[r.jsx("div",{className:"w-7 h-7 rounded-full bg-blue-50 flex items-center justify-center",children:r.jsx("svg",{className:"w-4 h-4 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),"Why connect?"]}),r.jsx("ul",{className:"space-y-3",children:o.map((e,t)=>(0,r.jsxs)("li",{className:"flex items-start gap-3 text-sm text-gray-600",children:[r.jsx("div",{className:"w-5 h-5 rounded-full bg-green-100 flex items-center justify-center shrink-0 mt-0.5",children:r.jsx("svg",{className:"w-3 h-3 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})}),e]},t))})]})]})]})})}},26697:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\dashboard\connected-accounts\page.tsx#default`)}};var t=require("../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[276,448,404,729],()=>s(64945));module.exports=r})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..99133613940ab5396d09f61b4a0443e53a437b1e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/404.js","../../../chunks/729.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..b4fe223ed290d628b53d44797c1310a87df436d8 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/connected-accounts/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/connected-accounts/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":["731","static/chunks/app/dashboard/connected-accounts/page-00a803a131eed5fc.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","702","static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.html b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.html new file mode 100644 index 0000000000000000000000000000000000000000..9f12df0b5e7712a2764018e8e623d4a238841783 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.html @@ -0,0 +1 @@ +
                    Loading...
                      \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.meta b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.meta new file mode 100644 index 0000000000000000000000000000000000000000..fef8280ca6c2c7a9c636f2b87e0effd5d07e360f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/content/layout,_N_T_/dashboard/content/create/layout,_N_T_/dashboard/content/create/page,_N_T_/dashboard/content/create" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.rsc b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.rsc new file mode 100644 index 0000000000000000000000000000000000000000..a1d1130d3a189d1d5bd34d36ad70e28b00b0e72e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create.rsc @@ -0,0 +1,10 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[32197,["950","static/chunks/app/dashboard/content/create/page-0c645fe1447e610f.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[58328,["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"default",1] +8:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["dashboard",{"children":["content",{"children":["create",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["content",{"children":["create",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","content","children","create","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","content","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[null,["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],"params":"$7"}]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L8",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L9",null]]]] +9:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page.js new file mode 100644 index 0000000000000000000000000000000000000000..d753e744b204336d8cbde652bb0414b1a70a8c08 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=950,e.ids=[950],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},69628:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>o.a,__next_app__:()=>h,originalPathname:()=>x,pages:()=>c,routeModule:()=>m,tree:()=>d}),s(76644),s(22834),s(32029),s(35866);var r=s(23191),a=s(88716),n=s(37922),o=s.n(n),l=s(95231),i={};for(let e in l)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(i[e]=()=>l[e]);s.d(t,i);let d=["",{children:["dashboard",{children:["content",{children:["create",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,76644)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx"]}]},{}]},{}]},{layout:[()=>Promise.resolve().then(s.bind(s,22834)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx"]}]},{layout:[()=>Promise.resolve().then(s.bind(s,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx"],x="/dashboard/content/create/page",h={require:s,loadChunk:()=>Promise.resolve()},m=new r.AppPageRouteModule({definition:{kind:a.x.APP_PAGE,page:"/dashboard/content/create/page",pathname:"/dashboard/content/create",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},24900:(e,t,s)=>{Promise.resolve().then(s.bind(s,2327))},2327:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>o});var r=s(10326),a=s(17577);let n=["professional","casual","inspiring","funny","educational"];function o(){let[e,t]=(0,a.useState)(""),[s,o]=(0,a.useState)(null),[l,i]=(0,a.useState)(!1),[d,c]=(0,a.useState)(""),[x,h]=(0,a.useState)("professional"),[m,u]=(0,a.useState)(!1),[p,g]=(0,a.useState)(""),[b,f]=(0,a.useState)(!1),[j,y]=(0,a.useState)("upload"),[v,k]=(0,a.useState)(null),[w,N]=(0,a.useState)(!1),[C,A]=(0,a.useState)(""),L=(0,a.useRef)(null),[M,P]=(0,a.useState)(!1),[S,I]=(0,a.useState)("upload"),[_,B]=(0,a.useState)(null),[W,G]=(0,a.useState)(!1),[O,T]=(0,a.useState)(""),V=(0,a.useRef)(null),[E,F]=(0,a.useState)(!1),[D,z]=(0,a.useState)(""),[$,H]=(0,a.useState)(""),[K,q]=(0,a.useState)(!1),[U,J]=(0,a.useState)("");async function R(){if(d.trim().length<3){g("Topic kam se kam 3 characters ka hona chahiye");return}u(!0),g("");try{let e=await fetch("/api/v1/posts/generate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({topic:d.trim(),platforms:["linkedin"],tone:x})});if(!e.ok){let t=await e.json();throw Error(Array.isArray(t.detail)?t.detail.map(e=>e.msg).join(", "):t.detail||"Generation failed")}let s=await e.json();t(s.content||""),o(s.post_id||null),i(!1),z(""),H("")}catch(e){g(e.message)}finally{u(!1)}}async function X(){if(s)return s;if(!e.trim())return null;try{let t=await fetch("/api/v1/posts/save-draft",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({content:e.trim(),platforms:["linkedin"]})});if(!t.ok)return null;let s=await t.json();return o(s.post_id),s.post_id}catch{return null}}async function Q(){if(e.trim()){N(!0),A("");try{let t=await fetch("/api/v1/posts/generate-image",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({content:e.trim()})});if(!t.ok){let e=await t.json();throw Error(e.detail||"Image generation failed")}let s=await t.json();k({url:s.url,name:"AI Generated Image"})}catch(e){A(e.message)}finally{N(!1)}}}async function Y(e){N(!0),A("");try{let t=new FormData;t.append("file",e);let s=await fetch("/api/v1/upload/media",{method:"POST",credentials:"include",body:t});if(!s.ok){let e=await s.json();throw Error(e.detail||"Upload failed")}let r=await s.json();k({url:r.url,name:e.name})}catch(e){A(e.message)}finally{N(!1)}}async function Z(e){G(!0),T("");try{let t=new FormData;t.append("file",e);let s=await fetch("/api/v1/upload/media",{method:"POST",credentials:"include",body:t});if(!s.ok){let e=await s.json();throw Error(e.detail||"Upload failed")}let r=await s.json();B({url:r.url,name:e.name})}catch(e){T(e.message)}finally{G(!1)}}function ee(){let e=[];return v?.url&&e.push(v.url),_?.url&&e.push(_.url),e}async function et(){if(e.trim()){F(!0),H(""),z("");try{let e=await X();if(!e){H("Post content empty hai"),F(!1);return}let t=await fetch("/api/v1/posts/publish",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({post_id:e,platforms:["linkedin"],media_urls:ee()})});if(!t.ok){let e=await t.json();throw Error(e.detail||"Publish failed")}let s=await t.json(),r=s.results?.filter(e=>e.success)??[],a=s.results?.filter(e=>!e.success)??[];if(r.length>0&&z("LinkedIn pe publish ho gaya!"),a.length>0){let e=a.some(e=>e.error?.toLowerCase().includes("no connected")||e.error?.toLowerCase().includes("connect"));H(e?"LinkedIn account connect nahi hai.":a.map(e=>e.error).join(", "))}}catch(e){H(e.message)}finally{F(!1)}}}async function es(){if(U&&e.trim()){F(!0),H(""),z("");try{let e=await X();if(!e){H("Post content empty hai"),F(!1);return}let t=await fetch("/api/v1/posts/schedule",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({post_id:e,platforms:["linkedin"],scheduled_at:new Date(U).toISOString(),media_urls:ee()})});if(!t.ok){let e=await t.json();throw Error(e.detail||"Schedule failed")}z(`Post schedule ho gaya — ${new Date(U).toLocaleString()}`),q(!1)}catch(e){H(e.message)}finally{F(!1)}}}function er(e,t){e.preventDefault();let s=e.dataTransfer.files[0];s&&t(s)}return r.jsx("div",{className:"min-h-screen bg-[#F3F2EF] py-6 px-4",children:(0,r.jsxs)("div",{className:"max-w-2xl mx-auto space-y-4",children:[(0,r.jsxs)("div",{children:[r.jsx("h1",{className:"text-xl font-semibold text-gray-900",children:"Create Post"}),r.jsx("p",{className:"text-gray-600 text-sm mt-0.5",children:"LinkedIn ke liye post banao"})]}),(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] overflow-hidden divide-y divide-gray-100",children:[(0,r.jsxs)("div",{className:"p-5 space-y-3",children:[r.jsx("textarea",{rows:6,value:e,onChange:e=>{t(e.target.value),H("")},placeholder:"Apna post yahan likhein... ya neeche AI se Likhwao use karo",className:"w-full px-4 py-2.5 bg-white border border-gray-200 rounded-lg text-gray-900 text-sm placeholder-gray-400 focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all resize-none"}),(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("span",{className:"text-xs text-gray-400",children:[e.length," characters"]}),s&&r.jsx("span",{className:"text-xs text-[#0A66C2] font-semibold",children:"Draft saved"})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{onClick:()=>i(!l),className:"w-full flex items-center gap-2 px-5 py-3 text-sm font-semibold text-[#0A66C2] hover:bg-blue-50 transition-colors text-left",children:[r.jsx("svg",{className:"w-4 h-4 shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})}),r.jsx("span",{children:"AI se Likhwao"}),r.jsx("svg",{className:`w-4 h-4 ml-auto text-gray-400 transition-transform ${l?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),l&&(0,r.jsxs)("div",{className:"px-5 pb-5 pt-3 space-y-4 bg-blue-50/30",children:[(0,r.jsxs)("div",{children:[r.jsx("label",{className:"text-sm font-semibold text-gray-900 mb-1.5 block",children:"Topic / Subject"}),r.jsx("input",{type:"text",value:d,onChange:e=>{c(e.target.value),g("")},placeholder:"e.g. Leadership tips for startup founders",className:"w-full px-4 py-2.5 bg-white border border-gray-200 rounded-lg text-gray-900 text-sm placeholder-gray-400 focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all"})]}),(0,r.jsxs)("div",{children:[r.jsx("label",{className:"text-sm font-semibold text-gray-900 mb-1.5 block",children:"Tone"}),r.jsx("div",{className:"flex flex-wrap gap-2",children:n.map(e=>r.jsx("button",{onClick:()=>h(e),className:`px-3 py-1 text-xs rounded-full border capitalize transition-colors font-medium ${x===e?"bg-[#0A66C2] text-white border-[#0A66C2]":"bg-white text-gray-600 border-gray-200 hover:border-[#0A66C2]"}`,children:e},e))})]}),p&&r.jsx("p",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:p}),r.jsx("button",{onClick:R,disabled:m||d.trim().length<3,className:"flex items-center gap-2 bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:m?(0,r.jsxs)(r.Fragment,{children:[r.jsx("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Generating..."]}):(0,r.jsxs)(r.Fragment,{children:[r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})}),"Generate Karo"]})})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{onClick:()=>f(!b),className:"w-full flex items-center gap-2 px-5 py-3 text-sm font-semibold text-gray-700 hover:bg-gray-50 transition-colors text-left",children:[r.jsx("svg",{className:"w-4 h-4 shrink-0 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})}),r.jsx("span",{children:"Image Add Karo"}),v&&(0,r.jsxs)("span",{className:"ml-2 text-xs text-[#0A66C2] font-normal flex items-center gap-1",children:[r.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),v.name]}),r.jsx("svg",{className:`w-4 h-4 ml-auto text-gray-400 transition-transform ${b?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),b&&(0,r.jsxs)("div",{className:"px-5 pb-5 pt-3 space-y-3",children:[(0,r.jsxs)("div",{className:"flex rounded-lg border border-gray-200 overflow-hidden w-fit",children:[r.jsx("button",{onClick:()=>y("upload"),className:`px-4 py-1.5 text-xs font-medium transition-colors ${"upload"===j?"bg-gray-900 text-white":"bg-white text-gray-600 hover:bg-gray-50"}`,children:"Upload Karo"}),r.jsx("button",{onClick:()=>y("ai"),className:`px-4 py-1.5 text-xs font-medium transition-colors ${"ai"===j?"bg-gray-900 text-white":"bg-white text-gray-600 hover:bg-gray-50"}`,children:"AI se Banao"})]}),"upload"===j&&(0,r.jsxs)("div",{className:"space-y-2",children:[r.jsx("input",{ref:L,type:"file",accept:"image/*",className:"hidden",onChange:e=>e.target.files?.[0]&&Y(e.target.files[0])}),r.jsx("div",{onClick:()=>L.current?.click(),onDrop:e=>er(e,Y),onDragOver:e=>e.preventDefault(),className:"border-2 border-dashed border-gray-200 rounded-xl p-8 text-center cursor-pointer hover:border-[#0A66C2] hover:bg-blue-50/30 transition-colors",children:w?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[r.jsx("span",{className:"w-7 h-7 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),r.jsx("p",{className:"text-xs text-gray-500",children:"Uploading..."})]}):v?(0,r.jsxs)("div",{className:"space-y-2",children:[r.jsx("img",{src:v.url,alt:"Uploaded",className:"max-h-40 mx-auto rounded-lg object-contain"}),r.jsx("p",{className:"text-xs text-[#0A66C2] font-semibold",children:v.name}),r.jsx("p",{className:"text-xs text-gray-400",children:"Change karne ke liye click karo"})]}):(0,r.jsxs)("div",{className:"space-y-2",children:[r.jsx("div",{className:"w-12 h-12 rounded-full bg-blue-50 flex items-center justify-center mx-auto",children:r.jsx("svg",{className:"w-6 h-6 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})})}),r.jsx("p",{className:"text-sm font-semibold text-gray-700",children:"Click karo ya drag & drop karo"}),r.jsx("p",{className:"text-xs text-gray-400",children:"JPG, PNG, GIF, WebP — max 50MB"})]})}),C&&r.jsx("p",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:C})]}),"ai"===j&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"p-3 bg-gray-50 border border-gray-200 rounded-lg",children:[r.jsx("p",{className:"text-xs font-semibold text-gray-700 mb-1",children:"Post content se image banegi:"}),r.jsx("p",{className:"text-xs text-gray-500 line-clamp-3 italic",children:e.trim()?`"${e.trim().slice(0,120)}${e.length>120?"...":""}"`:"Pehle upar post likho ya AI se generate karo"})]}),v&&"ai"===j&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"relative",children:[r.jsx("img",{src:v.url,alt:"AI Generated",className:`rounded-lg w-full object-cover max-h-52 border border-gray-200 transition-opacity ${w?"opacity-40":"opacity-100"}`}),w&&(0,r.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-2 rounded-lg",children:[r.jsx("span",{className:"w-8 h-8 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),r.jsx("span",{className:"text-xs font-semibold text-[#0A66C2] bg-white/80 px-2 py-0.5 rounded",children:"Generating new image..."})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[r.jsx("p",{className:"text-xs text-[#0A66C2] font-semibold",children:w?"Generating...":"Image ready"}),r.jsx("button",{onClick:Q,disabled:w,className:"border border-gray-300 text-gray-600 hover:border-[#0A66C2] hover:text-[#0A66C2] text-xs font-semibold rounded-full px-3 py-1.5 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:"Re-generate"})]})]}),!v&&(0,r.jsxs)(r.Fragment,{children:[r.jsx("button",{onClick:Q,disabled:w||!e.trim(),className:"flex items-center gap-2 bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:w?(0,r.jsxs)(r.Fragment,{children:[r.jsx("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Generating (~30s)..."]}):(0,r.jsxs)(r.Fragment,{children:[r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})}),"AI Image Generate Karo"]})}),!e.trim()&&r.jsx("p",{className:"text-xs text-amber-600",children:"Pehle post content likho ya generate karo"})]}),C&&r.jsx("p",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:C})]})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{onClick:()=>P(!M),className:"w-full flex items-center gap-2 px-5 py-3 text-sm font-semibold text-gray-700 hover:bg-gray-50 transition-colors text-left",children:[r.jsx("svg",{className:"w-4 h-4 shrink-0 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 10l4.553-2.069A1 1 0 0121 8.87v6.26a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})}),r.jsx("span",{children:"Video Add Karo"}),_&&(0,r.jsxs)("span",{className:"ml-2 text-xs text-[#0A66C2] font-normal flex items-center gap-1",children:[r.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),_.name]}),r.jsx("svg",{className:`w-4 h-4 ml-auto text-gray-400 transition-transform ${M?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),M&&(0,r.jsxs)("div",{className:"px-5 pb-5 pt-3 space-y-3",children:[(0,r.jsxs)("div",{className:"flex rounded-lg border border-gray-200 overflow-hidden w-fit",children:[r.jsx("button",{onClick:()=>I("upload"),className:`px-4 py-1.5 text-xs font-medium transition-colors ${"upload"===S?"bg-gray-900 text-white":"bg-white text-gray-600 hover:bg-gray-50"}`,children:"Upload Karo"}),r.jsx("button",{onClick:()=>I("ai"),className:`px-4 py-1.5 text-xs font-medium transition-colors ${"ai"===S?"bg-gray-900 text-white":"bg-white text-gray-600 hover:bg-gray-50"}`,children:"AI se Banao"})]}),"upload"===S&&(0,r.jsxs)("div",{className:"space-y-2",children:[r.jsx("input",{ref:V,type:"file",accept:"video/*",className:"hidden",onChange:e=>e.target.files?.[0]&&Z(e.target.files[0])}),r.jsx("div",{onClick:()=>V.current?.click(),onDrop:e=>er(e,Z),onDragOver:e=>e.preventDefault(),className:"border-2 border-dashed border-gray-200 rounded-xl p-8 text-center cursor-pointer hover:border-[#0A66C2] hover:bg-blue-50/30 transition-colors",children:W?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[r.jsx("span",{className:"w-7 h-7 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),r.jsx("p",{className:"text-xs text-gray-500",children:"Uploading..."})]}):_?(0,r.jsxs)("div",{className:"space-y-2",children:[r.jsx("div",{className:"w-12 h-12 rounded-full bg-green-100 flex items-center justify-center mx-auto",children:r.jsx("svg",{className:"w-6 h-6 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})}),r.jsx("p",{className:"text-xs text-[#0A66C2] font-semibold",children:_.name}),r.jsx("p",{className:"text-xs text-gray-400",children:"Change karne ke liye click karo"})]}):(0,r.jsxs)("div",{className:"space-y-2",children:[r.jsx("div",{className:"w-12 h-12 rounded-full bg-blue-50 flex items-center justify-center mx-auto",children:r.jsx("svg",{className:"w-6 h-6 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 10l4.553-2.069A1 1 0 0121 8.87v6.26a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})})}),r.jsx("p",{className:"text-sm font-semibold text-gray-700",children:"Click karo ya drag & drop karo"}),r.jsx("p",{className:"text-xs text-gray-400",children:"MP4, MOV, AVI, WebM — max 50MB"})]})}),O&&r.jsx("p",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:O})]}),"ai"===S&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"p-4 bg-amber-50 border border-amber-200 rounded-lg space-y-2",children:[r.jsx("p",{className:"text-sm font-semibold text-amber-800",children:"AI Video Generation — Paid API Required"}),r.jsx("p",{className:"text-xs text-amber-700",children:"Google Veo, Replicate, aur sab video AI services paid hain. Abhi video upload option use karo."}),r.jsx("p",{className:"text-xs text-amber-600 font-semibold",children:"Upcoming: Pro plan mein AI video generation include hoga."})]}),(0,r.jsxs)("button",{disabled:!0,className:"flex items-center gap-2 bg-gray-300 text-gray-500 font-semibold text-sm rounded-full px-5 py-2 cursor-not-allowed opacity-60",children:[r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 10l4.553-2.069A1 1 0 0121 8.87v6.26a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})}),"AI Video Generate Karo",r.jsx("span",{className:"ml-1 text-xs bg-gray-400 text-white px-2 py-0.5 rounded-full",children:"Pro Plan"})]})]})]})]}),(0,r.jsxs)("div",{className:"p-5 space-y-3",children:[(v||_)&&(0,r.jsxs)("div",{className:"bg-[#F3F2EF] rounded-lg p-3 flex items-center gap-3",children:[r.jsx("span",{className:"text-xs font-semibold text-gray-600 shrink-0",children:"Attached:"}),v&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[r.jsx("img",{src:v.url,alt:"",className:"w-10 h-10 rounded object-cover"}),r.jsx("span",{className:"text-xs text-gray-500 truncate max-w-24",children:v.name}),r.jsx("button",{onClick:()=>k(null),className:"text-gray-400 hover:text-red-500 text-xs ml-1",children:r.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),_&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[r.jsx("div",{className:"w-10 h-10 rounded bg-gray-200 flex items-center justify-center",children:r.jsx("svg",{className:"w-5 h-5 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 10l4.553-2.069A1 1 0 0121 8.87v6.26a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})})}),r.jsx("span",{className:"text-xs text-gray-500 truncate max-w-24",children:_.name}),r.jsx("button",{onClick:()=>B(null),className:"text-gray-400 hover:text-red-500 text-xs ml-1",children:r.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]})]}),$&&(0,r.jsxs)("div",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg flex items-start justify-between gap-3",children:[r.jsx("span",{children:$}),$.includes("connect")&&r.jsx("a",{href:"/dashboard/connected-accounts",className:"shrink-0 text-[#0A66C2] font-semibold underline hover:text-[#004182] text-xs",children:"Connect Karo"})]}),D&&(0,r.jsxs)("div",{className:"text-sm text-green-700 bg-green-50 border border-green-200 px-4 py-3 rounded-lg flex items-center justify-between",children:[r.jsx("span",{children:D}),r.jsx("button",{onClick:function(){t(""),o(null),c(""),h("professional"),k(null),B(null),A(""),T(""),z(""),H(""),q(!1),i(!1),f(!1),P(!1)},className:"text-xs text-green-700 font-semibold hover:underline ml-4 shrink-0",children:"Naya Post"})]}),!D&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex gap-3",children:[r.jsx("button",{onClick:et,disabled:E||!e.trim(),className:"flex-1 flex items-center justify-center gap-2 py-2.5 bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:E&&!K?(0,r.jsxs)(r.Fragment,{children:[r.jsx("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Publishing..."]}):(0,r.jsxs)(r.Fragment,{children:[r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 19l9 2-9-18-9 18 9-2zm0 0v-8"})}),"Abhi Publish Karo"]})}),(0,r.jsxs)("button",{onClick:()=>q(!K),disabled:E||!e.trim(),className:"flex-1 flex items-center justify-center gap-2 py-2.5 border-2 border-[#0A66C2] text-[#0A66C2] hover:bg-blue-50 font-semibold text-sm rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})}),"Schedule Karo"]})]}),!e.trim()&&r.jsx("p",{className:"text-xs text-center text-gray-400",children:"Pehle post likho ya AI se generate karo"}),K&&(0,r.jsxs)("div",{className:"flex gap-2 items-end",children:[(0,r.jsxs)("div",{className:"flex-1",children:[r.jsx("label",{className:"text-sm font-semibold text-gray-900 mb-1.5 block",children:"Date & Time (Local)"}),r.jsx("input",{type:"datetime-local",value:U,onChange:e=>J(e.target.value),min:new Date().toISOString().slice(0,16),className:"w-full px-4 py-2.5 bg-white border border-gray-200 rounded-lg text-gray-900 text-sm placeholder-gray-400 focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all"})]}),r.jsx("button",{onClick:es,disabled:E||!U||!e.trim(),className:"bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2.5 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:E&&K?r.jsx("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin inline-block"}):"Confirm"})]})]})]})]})]})})}},76644:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\dashboard\content\create\page.tsx#default`)}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[276,448,404,729],()=>s(69628));module.exports=r})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..17625d2a5585f992b310e65705f03eb177a94792 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../webpack-runtime.js","../../../../chunks/276.js","../../../../chunks/448.js","../../../../chunks/404.js","../../../../chunks/729.js","page_client-reference-manifest.js","../../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..27de02ced219375c4d6bf453dd268a6746873489 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/content/create/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/content/create/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","702","static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":["950","static/chunks/app/dashboard/content/create/page-0c645fe1447e610f.js"],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.html b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.html new file mode 100644 index 0000000000000000000000000000000000000000..f243c89d2617e99a4ff69c0f1b68c622cc445bb5 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.html @@ -0,0 +1 @@ +
                      Loading...
                        \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.meta b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.meta new file mode 100644 index 0000000000000000000000000000000000000000..e6ee7cc9a06637e6482ff3a989fc215a9ab0e142 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/insights/layout,_N_T_/dashboard/insights/page,_N_T_/dashboard/insights" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.rsc b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.rsc new file mode 100644 index 0000000000000000000000000000000000000000..60562f6b2748be034907c25b069e070eb4b80469 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights.rsc @@ -0,0 +1,10 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[78626,["687","static/chunks/app/dashboard/insights/page-b15066396f5f685e.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[58328,["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"default",1] +8:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["dashboard",{"children":["insights",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["insights",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","insights","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[null,["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],"params":"$7"}]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L8",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L9",null]]]] +9:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page.js new file mode 100644 index 0000000000000000000000000000000000000000..118b0038e7c4dd48cc1714435a8e9580453129b4 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=687,e.ids=[687],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},56425:(e,s,a)=>{"use strict";a.r(s),a.d(s,{GlobalError:()=>i.a,__next_app__:()=>h,originalPathname:()=>x,pages:()=>c,routeModule:()=>m,tree:()=>o}),a(67418),a(22834),a(32029),a(35866);var t=a(23191),r=a(88716),n=a(37922),i=a.n(n),l=a(95231),d={};for(let e in l)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(d[e]=()=>l[e]);a.d(s,d);let o=["",{children:["dashboard",{children:["insights",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(a.bind(a,67418)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(a.bind(a,22834)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx"]}]},{layout:[()=>Promise.resolve().then(a.bind(a,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(a.t.bind(a,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx"],x="/dashboard/insights/page",h={require:a,loadChunk:()=>Promise.resolve()},m=new t.AppPageRouteModule({definition:{kind:r.x.APP_PAGE,page:"/dashboard/insights/page",pathname:"/dashboard/insights",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:o}})},71566:(e,s,a)=>{Promise.resolve().then(a.bind(a,1166))},1166:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>u});var t=a(10326),r=a(17577);let n="/api/v1";async function i(e,s){let a=new URL(e,window.location.origin);s&&Object.entries(s).forEach(([e,s])=>{null!=s&&a.searchParams.set(e,String(s))});let t=await fetch(a.toString(),{credentials:"include"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).detail||`API error ${t.status}`);return t.json()}class l{getAggregatedMetrics(e){return i(`${n}/analytics/aggregated`,e)}getSummary(){return i(`${n}/analytics/summary`)}getInsights(e){return i(`${n}/insights`,e)}getLessons(e){return i(`${n}/insights/lessons`,e)}}let d=new l,o=[{value:"7d",label:"7 Days"},{value:"30d",label:"30 Days"},{value:"90d",label:"90 Days"}],c=[{value:"day",label:"Daily"},{value:"week",label:"Weekly"},{value:"month",label:"Monthly"}];function x({data:e}){if(!e.length)return t.jsx("div",{className:"h-48 flex items-center justify-center text-gray-400 text-sm",children:"Abhi koi data nahi — posts publish karo aur yahan track hogi activity"});let s=Math.max(...e.map(e=>e.post_count),1);return t.jsx("div",{className:"space-y-2",children:e.map((e,a)=>(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[t.jsx("span",{className:"text-xs text-gray-500 w-20 shrink-0",children:e.date.slice(5)}),(0,t.jsxs)("div",{className:"flex-1 flex items-center gap-2",children:[e.post_count>0&&t.jsx("div",{className:"h-6 bg-[#0A66C2] rounded text-xs text-white flex items-center px-2 font-semibold transition-all",style:{width:`${Math.max(e.post_count/s*100,8)}%`},children:e.post_count}),e.published_count>0&&(0,t.jsxs)("span",{className:"text-xs text-green-600 font-medium",children:[e.published_count," published"]}),e.scheduled_count>0&&(0,t.jsxs)("span",{className:"text-xs text-[#0A66C2] font-medium",children:[e.scheduled_count," scheduled"]}),e.failed_count>0&&(0,t.jsxs)("span",{className:"text-xs text-red-500 font-medium",children:[e.failed_count," failed"]}),0===e.post_count&&t.jsx("span",{className:"text-xs text-gray-300",children:"—"})]})]},a))})}function h({insight:e}){let s=Math.round(e.impact_percentage),a=Math.round(100*e.confidence_score),r=e.correlation_coefficient>=0,n={publish_success_rate:"border-l-green-500",posting_frequency:"border-l-[#0A66C2]",best_posting_day:"border-l-purple-500",media_usage:"border-l-indigo-500",scheduled_posts:"border-l-cyan-500",failure_rate:"border-l-red-500"}[e.characteristic]||"border-l-gray-400";return(0,t.jsxs)("div",{className:`bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 border-l-4 ${n} space-y-2`,children:[t.jsx("p",{className:"text-sm text-gray-800 font-medium leading-snug",children:e.insight_text}),(0,t.jsxs)("div",{className:"flex items-center gap-4 text-xs text-gray-500",children:[(0,t.jsxs)("span",{children:["Impact: ",(0,t.jsxs)("span",{className:"font-semibold text-gray-700",children:[s,"%"]})]}),(0,t.jsxs)("span",{children:["Confidence: ",(0,t.jsxs)("span",{className:"font-semibold text-gray-700",children:[a,"%"]})]}),(0,t.jsxs)("span",{children:["Sample: ",t.jsx("span",{className:"font-semibold text-gray-700",children:e.sample_size})," posts"]}),t.jsx("span",{className:`font-semibold ${r?"text-green-600":"text-red-500"}`,children:r?"↑ Positive":"↓ Negative"})]})]})}function m({lesson:e}){let s=e.effectiveness_score?Math.round(100*e.effectiveness_score):null;return(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 border-l-4 border-amber-400 space-y-1.5",children:[t.jsx("p",{className:"text-sm text-gray-800 leading-snug",children:e.lesson_text}),s&&(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"text-xs text-gray-500",children:"Effectiveness"}),(0,t.jsxs)("span",{className:"text-xs text-amber-700 font-semibold",children:[s,"%"]})]}),t.jsx("div",{className:"w-full bg-amber-100 rounded-full h-1.5",children:t.jsx("div",{className:"bg-amber-400 h-1.5 rounded-full",style:{width:`${s}%`}})})]})]})}function u(){let[e,s]=(0,r.useState)("30d"),[a,n]=(0,r.useState)("day"),[i,l]=(0,r.useState)(null),[u,g]=(0,r.useState)([]),[p,b]=(0,r.useState)([]),[j,f]=(0,r.useState)([]),[v,y]=(0,r.useState)(!0),[_,N]=(0,r.useState)(""),w=(0,r.useCallback)(async()=>{y(!0),N("");try{let[s,t,r,n]=await Promise.all([d.getSummary(),d.getAggregatedMetrics({date_range:e,group_by:a}),d.getInsights({is_active:!0,limit:10}),d.getLessons({limit:6})]);l(s),g(t.data),b(r.data),f(n.data)}catch(e){N(e.message||"Data load nahi hua")}finally{y(!1)}},[e,a]);return t.jsx("div",{className:"min-h-screen bg-[#F3F2EF] py-6 px-4",children:(0,t.jsxs)("div",{className:"max-w-5xl mx-auto space-y-5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,t.jsxs)("div",{children:[t.jsx("h1",{className:"text-xl font-semibold text-gray-900",children:"Performance Insights"}),t.jsx("p",{className:"text-sm text-gray-600 mt-0.5",children:"Apni LinkedIn posting activity aur patterns dekho"})]}),(0,t.jsxs)("button",{onClick:w,disabled:v,className:"border border-[#0A66C2] text-[#0A66C2] hover:bg-blue-50 font-semibold text-sm rounded-full px-5 py-2 transition-colors disabled:opacity-50 flex items-center gap-2 shrink-0",children:[t.jsx("svg",{className:`w-4 h-4 ${v?"animate-spin":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Refresh"]})]}),_&&t.jsx("div",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:_}),v?t.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[1,2,3,4].map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5 animate-pulse",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[t.jsx("div",{className:"w-10 h-10 rounded-full bg-gray-100"}),t.jsx("div",{className:"h-7 w-12 bg-gray-100 rounded"})]}),t.jsx("div",{className:"h-4 bg-gray-100 rounded w-20"})]},e))}):i&&t.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{label:"Total Posts",value:i.total_posts,sub:`${i.posts_last_30d} last 30d`,iconBg:"bg-blue-100",iconColor:"text-[#0A66C2]",icon:t.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})},{label:"Published",value:i.published,sub:`${i.published_last_30d} last 30d`,iconBg:"bg-green-100",iconColor:"text-green-600",icon:t.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})},{label:"Scheduled",value:i.scheduled,sub:null,iconBg:"bg-purple-100",iconColor:"text-purple-600",icon:t.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})})},{label:"Success Rate",value:`${i.success_rate}%`,sub:null,iconBg:"bg-indigo-100",iconColor:"text-indigo-600",icon:t.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"})})}].map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-2",children:[t.jsx("div",{className:`w-10 h-10 rounded-full ${e.iconBg} ${e.iconColor} flex items-center justify-center shrink-0`,children:e.icon}),t.jsx("span",{className:"text-2xl font-bold text-[#0A66C2]",children:e.value})]}),t.jsx("p",{className:"text-sm font-semibold text-gray-900",children:e.label}),e.sub&&t.jsx("p",{className:"text-xs text-gray-400 mt-0.5",children:e.sub})]},e.label))}),(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 border-l-4 border-[#0A66C2] flex items-start gap-3",children:[t.jsx("div",{className:"w-8 h-8 rounded-full bg-blue-50 flex items-center justify-center shrink-0 mt-0.5",children:t.jsx("svg",{className:"w-4 h-4 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,t.jsxs)("div",{children:[t.jsx("p",{className:"text-sm font-semibold text-gray-900",children:"LinkedIn Engagement Data (Likes, Comments, Views)"}),t.jsx("p",{className:"text-xs text-gray-600 mt-0.5",children:"Abhi sirf tumhari post activity track ho rahi hai. LinkedIn Analytics API integration Phase 4 mein ayega jisme actual likes, comments, aur views bhi dikhenge."})]})]}),(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5 space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[t.jsx("h2",{className:"font-semibold text-gray-900 text-base",children:"Posting Activity"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[t.jsx("div",{className:"flex items-center gap-1",children:o.map(a=>t.jsx("button",{onClick:()=>s(a.value),className:`text-xs font-semibold rounded-full px-3 py-1 transition-colors ${e===a.value?"bg-[#0A66C2] text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"}`,children:a.label},a.value))}),t.jsx("div",{className:"flex items-center gap-1",children:c.map(e=>t.jsx("button",{onClick:()=>n(e.value),className:`text-xs font-semibold rounded-full px-3 py-1 transition-colors ${a===e.value?"bg-[#0A66C2] text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"}`,children:e.label},e.value))})]})]}),v?t.jsx("div",{className:"h-48 flex items-center justify-center",children:t.jsx("span",{className:"w-8 h-8 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"})}):t.jsx(x,{data:u})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-5",children:[(0,t.jsxs)("div",{className:"lg:col-span-2 space-y-4",children:[t.jsx("h2",{className:"font-semibold text-gray-900 text-base",children:"Patterns & Insights"}),v?t.jsx("div",{className:"space-y-3",children:[1,2,3].map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 animate-pulse",children:[t.jsx("div",{className:"h-4 bg-gray-100 rounded w-full mb-2"}),t.jsx("div",{className:"h-4 bg-gray-100 rounded w-3/4"})]},e))}):0===p.length?(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-8 text-center",children:[t.jsx("div",{className:"w-12 h-12 rounded-full bg-gray-100 flex items-center justify-center mx-auto mb-3",children:t.jsx("svg",{className:"w-6 h-6 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})}),t.jsx("p",{className:"text-gray-600 text-sm",children:"Abhi koi posts nahi hain. Posts banao aur yahan patterns dikhenge."}),t.jsx("a",{href:"/dashboard/content/create",className:"mt-3 inline-block text-sm text-[#0A66C2] font-semibold hover:text-[#004182]",children:"Pehla Post Banao"})]}):t.jsx("div",{className:"space-y-3",children:p.map(e=>t.jsx(h,{insight:e},e.id))})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[t.jsx("h2",{className:"font-semibold text-gray-900 text-base",children:"AI Tips"}),v?t.jsx("div",{className:"space-y-3",children:[1,2,3].map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 animate-pulse",children:[t.jsx("div",{className:"h-4 bg-gray-100 rounded w-full mb-2"}),t.jsx("div",{className:"h-4 bg-gray-100 rounded w-2/3 mb-3"}),t.jsx("div",{className:"h-1.5 bg-gray-100 rounded w-full"})]},e))}):(0,t.jsxs)("div",{className:"space-y-3",children:[j.map(e=>t.jsx(m,{lesson:e},e.id)),0===j.length&&t.jsx("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6 text-center",children:t.jsx("p",{className:"text-sm text-gray-400",children:"Tips load nahi hue"})})]})]})]})]})})}},67418:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>t});let t=(0,a(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\dashboard\insights\page.tsx#default`)}};var s=require("../../../webpack-runtime.js");s.C(e);var a=e=>s(s.s=e),t=s.X(0,[276,448,404,729],()=>a(56425));module.exports=t})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..99133613940ab5396d09f61b4a0443e53a437b1e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/404.js","../../../chunks/729.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..8b35998e2521668c70a68533cdbf27c6bebac133 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/insights/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/insights/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","702","static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":["687","static/chunks/app/dashboard/insights/page-b15066396f5f685e.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/page.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/page.js new file mode 100644 index 0000000000000000000000000000000000000000..9cd38f82010aa19c4a515b5bed89da5750fe2891 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=702,e.ids=[702],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},4030:(e,s,t)=>{"use strict";t.r(s),t.d(s,{GlobalError:()=>o.a,__next_app__:()=>x,originalPathname:()=>h,pages:()=>c,routeModule:()=>m,tree:()=>d}),t(38256),t(22834),t(32029),t(35866);var r=t(23191),a=t(88716),n=t(37922),o=t.n(n),l=t(95231),i={};for(let e in l)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(i[e]=()=>l[e]);t.d(s,i);let d=["",{children:["dashboard",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(t.bind(t,38256)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx"]}]},{layout:[()=>Promise.resolve().then(t.bind(t,22834)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx"]}]},{layout:[()=>Promise.resolve().then(t.bind(t,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(t.t.bind(t,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx"],h="/dashboard/page",x={require:t,loadChunk:()=>Promise.resolve()},m=new r.AppPageRouteModule({definition:{kind:a.x.APP_PAGE,page:"/dashboard/page",pathname:"/dashboard",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},8067:(e,s,t)=>{Promise.resolve().then(t.bind(t,59530))},59530:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>d});var r=t(10326),a=t(35047),n=t(17577),o=t(32082),l=t(90434);let i=[{href:"/dashboard/content/create",label:"Create Post",desc:"Generate AI-powered LinkedIn content",iconBg:"bg-blue-100",iconColor:"text-[#0A66C2]",icon:r.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4v16m8-8H4"})})},{href:"/dashboard/insights",label:"Insights",desc:"View performance analytics",iconBg:"bg-green-100",iconColor:"text-green-600",icon:r.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})})},{href:"/dashboard/post-history",label:"Post History",desc:"Review all your past posts",iconBg:"bg-amber-100",iconColor:"text-amber-600",icon:r.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})})},{href:"/dashboard/connected-accounts",label:"Accounts",desc:"Manage connected platforms",iconBg:"bg-purple-100",iconColor:"text-purple-600",icon:r.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"})})}];function d(){(0,a.useRouter)();let{user:e,isSignedIn:s,isLoading:t}=(0,o.a)(),[d,c]=(0,n.useState)(null),[h,x]=(0,n.useState)(null),[m,u]=(0,n.useState)(!0);if(t||m)return r.jsx("div",{className:"min-h-screen flex items-center justify-center bg-[#F3F2EF]",children:r.jsx("div",{className:"w-10 h-10 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"})});let p=d?.connected_accounts.find(e=>"linkedin"===e.platform.toLowerCase()),g=!!p,b=(e?.name||e?.email||"").split(" ")[0],f=(e?.name||e?.email||"U").split(" ").map(e=>e[0]).slice(0,2).join("").toUpperCase();return r.jsx("div",{className:"bg-[#F3F2EF] min-h-screen py-6 px-4",children:r.jsx("div",{className:"max-w-6xl mx-auto",children:(0,r.jsxs)("div",{className:"flex flex-col lg:flex-row gap-6",children:[(0,r.jsxs)("div",{className:"flex-1 space-y-5",children:[(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-6",children:[(0,r.jsxs)("div",{className:"flex items-center gap-4 mb-4",children:[r.jsx("div",{className:"w-14 h-14 rounded-full bg-[#0A66C2] flex items-center justify-center shrink-0",children:r.jsx("span",{className:"text-white text-xl font-bold",children:f})}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("h1",{className:"font-semibold text-gray-900 text-lg leading-tight",children:["Welcome back, ",b]}),r.jsx("p",{className:"text-gray-600 text-sm",children:e?.email}),r.jsx("span",{className:"inline-block mt-1 px-2.5 py-0.5 bg-blue-50 text-[#0A66C2] text-xs font-semibold rounded-full border border-blue-100",children:"Free Plan"})]})]}),r.jsx("div",{className:"border-t border-gray-100 pt-4",children:r.jsx("div",{className:"grid grid-cols-4 gap-3",children:[{label:"Total Posts",value:h?.total_posts??0},{label:"Published",value:h?.published??0},{label:"Scheduled",value:h?.scheduled??0},{label:"Success Rate",value:`${h?.success_rate??0}%`}].map(e=>(0,r.jsxs)("div",{className:"text-center",children:[r.jsx("p",{className:"text-2xl font-semibold text-[#0A66C2]",children:e.value}),r.jsx("p",{className:"text-xs text-gray-600 mt-0.5 leading-tight",children:e.label})]},e.label))})})]}),(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-6",children:[r.jsx("h2",{className:"font-semibold text-gray-900 mb-4",children:"Quick Actions"}),r.jsx("div",{className:"grid grid-cols-2 gap-3",children:i.map(e=>(0,r.jsxs)(l.default,{href:e.href,className:"group flex items-start gap-3 p-4 bg-white rounded-xl border border-gray-100 hover:border-gray-200 hover:shadow-sm transition-all duration-150 cursor-pointer",children:[r.jsx("div",{className:`w-9 h-9 rounded-lg ${e.iconBg} ${e.iconColor} flex items-center justify-center shrink-0`,children:e.icon}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[r.jsx("p",{className:"font-semibold text-gray-900 text-sm",children:e.label}),r.jsx("p",{className:"text-xs text-gray-600 mt-0.5 leading-tight",children:e.desc})]}),r.jsx("svg",{className:"w-4 h-4 text-gray-400 group-hover:text-gray-600 shrink-0 mt-0.5 transition-colors",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]},e.href))})]}),(h?.total_posts??0)===0&&r.jsx("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6 border-l-4 border-[#0A66C2]",children:(0,r.jsxs)("div",{className:"flex items-start gap-4",children:[r.jsx("div",{className:"w-10 h-10 rounded-full bg-blue-50 flex items-center justify-center shrink-0",children:r.jsx("svg",{className:"w-5 h-5 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,r.jsxs)("div",{className:"flex-1",children:[r.jsx("h3",{className:"font-semibold text-gray-900 text-sm mb-1",children:"Create your first post"}),r.jsx("p",{className:"text-gray-600 text-sm mb-3",children:"Use AI to generate professional LinkedIn content, add images, and publish — all in one place."}),(0,r.jsxs)(l.default,{href:"/dashboard/content/create",className:"inline-flex items-center gap-2 bg-[#0A66C2] hover:bg-[#004182] text-white rounded-full px-5 py-2 text-sm font-semibold transition-colors",children:["Create Post",r.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]})]})]})})]}),(0,r.jsxs)("div",{className:"lg:w-80 shrink-0 space-y-4",children:[(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[r.jsx("div",{className:"w-10 h-10 rounded-lg bg-[#0A66C2] flex items-center justify-center",children:r.jsx("svg",{className:"w-5 h-5 text-white",viewBox:"0 0 24 24",fill:"currentColor",children:r.jsx("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})})}),(0,r.jsxs)("div",{children:[r.jsx("p",{className:"font-semibold text-gray-900 text-sm",children:"LinkedIn"}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[r.jsx("span",{className:`w-2 h-2 rounded-full ${g?"bg-green-500":"bg-gray-300"}`}),r.jsx("span",{className:`text-xs ${g?"text-green-600":"text-gray-500"}`,children:g?"Connected":"Not connected"})]})]})]}),g&&p?.last_sync_at&&(0,r.jsxs)("p",{className:"text-xs text-gray-500 mb-3",children:["Last sync: ",new Date(p.last_sync_at).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})]}),r.jsx(l.default,{href:"/dashboard/connected-accounts",className:`w-full flex items-center justify-center py-2 text-sm font-semibold rounded-full transition-colors ${g?"border-2 border-[#0A66C2] text-[#0A66C2] hover:bg-blue-50":"bg-[#0A66C2] hover:bg-[#004182] text-white"}`,children:g?"Manage Connection":"Connect LinkedIn"})]}),(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5",children:[(0,r.jsxs)("h3",{className:"font-semibold text-gray-900 text-sm mb-3 flex items-center gap-2",children:[r.jsx("span",{children:"\uD83D\uDCA1"})," Pro Tips"]}),r.jsx("ul",{className:"space-y-3",children:["Post consistently — 3-5 times per week for optimal LinkedIn reach.","Include a question in your post to boost comments and engagement.","Use the scheduler to post during peak hours (8–10 AM or 5–6 PM)."].map((e,s)=>(0,r.jsxs)("li",{className:"flex items-start gap-2 text-xs text-gray-600",children:[r.jsx("span",{className:"w-4 h-4 rounded-full bg-blue-50 text-[#0A66C2] flex items-center justify-center text-xs font-bold shrink-0 mt-0.5",children:s+1}),e]},s))})]})]})]})})})}},38256:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>r});let r=(0,t(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\dashboard\page.tsx#default`)}};var s=require("../../webpack-runtime.js");s.C(e);var t=e=>s(s.s=e),r=s.X(0,[276,448,404,729],()=>t(4030));module.exports=r})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/dashboard/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..2aedff09b278c102b7db291cdb7460f5d2a05083 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../webpack-runtime.js","../../chunks/276.js","../../chunks/448.js","../../chunks/404.js","../../chunks/729.js","page_client-reference-manifest.js","../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..d2a55b7af157bb19ace542d9e86d7c421ae12117 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","702","static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.html b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.html new file mode 100644 index 0000000000000000000000000000000000000000..e389f890a23e930263f9dc99db87ff5a5eee0468 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.html @@ -0,0 +1 @@ +
                        Loading...
                          \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.meta b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.meta new file mode 100644 index 0000000000000000000000000000000000000000..32b3bba2cc221d6cf12dad060ba0a228501811c4 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/post-history/layout,_N_T_/dashboard/post-history/page,_N_T_/dashboard/post-history" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.rsc b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.rsc new file mode 100644 index 0000000000000000000000000000000000000000..df84de9b9632e8f4b1cea705b5ed282548fb05d5 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history.rsc @@ -0,0 +1,10 @@ +2:"$Sreact.suspense" +3:I[17224,["972","static/chunks/972-5b96c0591eeae4ee.js","485","static/chunks/app/dashboard/post-history/page-5815ebeb70f0d388.js"],"default"] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[58328,["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"default",1] +7:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +8:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["dashboard",{"children":["post-history",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["post-history",{"children":["__PAGE__",{},[["$L1",["$","div",null,{"className":"min-h-screen bg-gray-50 py-8","children":["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8","children":[["$","div",null,{"className":"mb-8","children":[["$","h1",null,{"className":"text-3xl font-bold text-gray-900","children":"Post History"}],["$","p",null,{"className":"mt-2 text-sm text-gray-600","children":"View and manage your content approval status"}]]}],["$","$2",null,{"fallback":["$","div",null,{"className":"bg-white shadow rounded-lg p-6","children":["$","div",null,{"className":"animate-pulse space-y-4","children":[["$","div","1",{"className":"flex items-center space-x-4","children":[["$","div",null,{"className":"h-12 w-12 bg-gray-200 rounded"}],["$","div",null,{"className":"flex-1 space-y-2","children":[["$","div",null,{"className":"h-4 bg-gray-200 rounded w-3/4"}],["$","div",null,{"className":"h-3 bg-gray-200 rounded w-1/2"}]]}]]}],["$","div","2",{"className":"flex items-center space-x-4","children":[["$","div",null,{"className":"h-12 w-12 bg-gray-200 rounded"}],["$","div",null,{"className":"flex-1 space-y-2","children":[["$","div",null,{"className":"h-4 bg-gray-200 rounded w-3/4"}],["$","div",null,{"className":"h-3 bg-gray-200 rounded w-1/2"}]]}]]}],["$","div","3",{"className":"flex items-center space-x-4","children":[["$","div",null,{"className":"h-12 w-12 bg-gray-200 rounded"}],["$","div",null,{"className":"flex-1 space-y-2","children":[["$","div",null,{"className":"h-4 bg-gray-200 rounded w-3/4"}],["$","div",null,{"className":"h-3 bg-gray-200 rounded w-1/2"}]]}]]}]]}]}],"children":["$","$L3",null,{}]}]]}]}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","post-history","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[null,["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],"params":{}}]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L7",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$8"}]],null],null],["$L9",null]]]] +9:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page.js new file mode 100644 index 0000000000000000000000000000000000000000..2c4a7564b6d2650a41e0887f3854999e7fecf60a --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=485,e.ids=[485],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},72537:(e,s,t)=>{"use strict";t.r(s),t.d(s,{GlobalError:()=>o.a,__next_app__:()=>h,originalPathname:()=>x,pages:()=>c,routeModule:()=>p,tree:()=>d}),t(94390),t(22834),t(32029),t(35866);var r=t(23191),a=t(88716),n=t(37922),o=t.n(n),l=t(95231),i={};for(let e in l)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(i[e]=()=>l[e]);t.d(s,i);let d=["",{children:["dashboard",{children:["post-history",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(t.bind(t,94390)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\post-history\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(t.bind(t,22834)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx"]}]},{layout:[()=>Promise.resolve().then(t.bind(t,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(t.t.bind(t,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\post-history\\page.tsx"],x="/dashboard/post-history/page",h={require:t,loadChunk:()=>Promise.resolve()},p=new r.AppPageRouteModule({definition:{kind:a.x.APP_PAGE,page:"/dashboard/post-history/page",pathname:"/dashboard/post-history",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},9082:(e,s,t)=>{Promise.resolve().then(t.bind(t,41183))},41183:(e,s,t)=>{"use strict";t.d(s,{default:()=>l});var r=t(10326),a=t(17577),n=t(90434);let o=["all","draft","published","scheduled","failed"];function l(){let[e,s]=(0,a.useState)([]),[t,n]=(0,a.useState)(!0),[l,x]=(0,a.useState)(null),[h,p]=(0,a.useState)("all"),u=async()=>{try{n(!0);let e=new URLSearchParams({per_page:"50"}),t=await fetch(`/api/v1/posts/history?${e}`,{credentials:"include"});if(!t.ok)throw Error("Failed to fetch post history");let r=(await t.json()).posts||[],a="all"===h?r:r.filter(e=>e.status===h);s(a),x(null)}catch(e){x(e instanceof Error?e.message:"An error occurred")}finally{n(!1)}};return t?r.jsx(c,{}):l?(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[r.jsx("div",{className:"w-8 h-8 rounded-full bg-red-100 flex items-center justify-center",children:r.jsx("svg",{className:"w-4 h-4 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),r.jsx("p",{className:"text-gray-900 font-semibold text-sm",children:"Failed to load posts"})]}),r.jsx("p",{className:"text-gray-600 text-sm mb-3",children:l}),r.jsx("button",{onClick:u,className:"bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2 transition-colors",children:"Retry"})]}):(0,r.jsxs)("div",{className:"space-y-4",children:[r.jsx("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 flex flex-wrap gap-2",children:o.map(e=>r.jsx("button",{onClick:()=>p(e),className:`px-4 py-1.5 text-sm font-semibold rounded-full transition-colors ${h===e?"bg-[#0A66C2] text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"}`,children:e.charAt(0).toUpperCase()+e.slice(1)},e))}),0===e.length?r.jsx(d,{filter:h}):r.jsx("div",{className:"space-y-3",children:e.map(e=>r.jsx(i,{post:e},e.id))})]})}function i({post:e}){let s={published:{iconBg:"bg-green-100",iconColor:"text-green-600",badgeClasses:"bg-green-100 text-green-700 text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Published",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})},scheduled:{iconBg:"bg-blue-100",iconColor:"text-[#0A66C2]",badgeClasses:"bg-blue-100 text-[#0A66C2] text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Scheduled",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})})},failed:{iconBg:"bg-red-100",iconColor:"text-red-500",badgeClasses:"bg-red-100 text-red-600 text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Failed",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})},draft:{iconBg:"bg-gray-100",iconColor:"text-gray-500",badgeClasses:"bg-gray-100 text-gray-600 text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Draft",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})},pending:{iconBg:"bg-yellow-100",iconColor:"text-yellow-600",badgeClasses:"bg-yellow-100 text-yellow-700 text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Pending",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})})}},t=s[e.status]??s.draft,a=e=>new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"});return r.jsx("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-5",children:(0,r.jsxs)("div",{className:"flex items-start gap-4",children:[r.jsx("div",{className:`w-10 h-10 rounded-full ${t.iconBg} ${t.iconColor} flex items-center justify-center shrink-0`,children:t.icon}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-3 mb-1",children:[r.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 bg-blue-50 text-[#0A66C2] text-xs font-semibold px-2 py-0.5 rounded-full",children:[r.jsx("svg",{className:"w-3 h-3",viewBox:"0 0 24 24",fill:"currentColor",children:r.jsx("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})}),(e.platform||"linkedin").charAt(0).toUpperCase()+(e.platform||"linkedin").slice(1)]})}),r.jsx("span",{className:`shrink-0 ${t.badgeClasses}`,children:t.label})]}),r.jsx("p",{className:"text-sm text-gray-700 line-clamp-2 mt-1 leading-relaxed",children:e.content_preview||"—"}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-2",children:[r.jsx("span",{className:"text-xs text-gray-400",children:a(e.created_at)}),e.published_at&&(0,r.jsxs)("span",{className:"text-xs text-gray-400 flex items-center gap-1",children:[r.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),"Published ",a(e.published_at)]}),e.error_message&&(0,r.jsxs)("span",{className:"text-xs text-red-500 flex items-center gap-1",children:[r.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01"})}),e.error_message]})]})]})]})})}function d({filter:e}){return(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-12 text-center",children:[r.jsx("div",{className:"w-16 h-16 rounded-full bg-gray-100 flex items-center justify-center mx-auto mb-3",children:r.jsx("svg",{className:"w-8 h-8 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}),r.jsx("h3",{className:"font-semibold text-gray-900 mb-2",children:"all"===e?"No posts yet":`No ${e} posts`}),r.jsx("p",{className:"text-gray-600 text-sm mb-5",children:"all"===e?"Create your first LinkedIn post to get started.":`You don't have any ${e} posts at the moment.`}),(0,r.jsxs)(n.default,{href:"/dashboard/content/create",className:"inline-flex items-center gap-2 bg-[#0A66C2] hover:bg-[#004182] text-white rounded-full px-5 py-2 text-sm font-semibold transition-colors",children:[r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4v16m8-8H4"})}),"Create Post"]})]})}function c(){return r.jsx("div",{className:"space-y-3",children:[1,2,3].map(e=>r.jsx("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5",children:(0,r.jsxs)("div",{className:"animate-pulse flex items-start gap-4",children:[r.jsx("div",{className:"w-10 h-10 rounded-full bg-gray-100 shrink-0"}),(0,r.jsxs)("div",{className:"flex-1 space-y-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[r.jsx("div",{className:"h-5 w-20 bg-gray-100 rounded-full"}),r.jsx("div",{className:"h-4 w-28 bg-gray-100 rounded"})]}),r.jsx("div",{className:"h-4 bg-gray-100 rounded w-full"}),r.jsx("div",{className:"h-4 bg-gray-100 rounded w-3/4"})]})]})},e))})}},94390:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>o});var r=t(19510),a=t(71159);let n=(0,t(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\components\PostHistoryList.tsx#default`);function o(){return r.jsx("div",{className:"min-h-screen bg-gray-50 py-8",children:(0,r.jsxs)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",children:[(0,r.jsxs)("div",{className:"mb-8",children:[r.jsx("h1",{className:"text-3xl font-bold text-gray-900",children:"Post History"}),r.jsx("p",{className:"mt-2 text-sm text-gray-600",children:"View and manage your content approval status"})]}),r.jsx(a.Suspense,{fallback:r.jsx(l,{}),children:r.jsx(n,{})})]})})}function l(){return r.jsx("div",{className:"bg-white shadow rounded-lg p-6",children:r.jsx("div",{className:"animate-pulse space-y-4",children:[1,2,3].map(e=>(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[r.jsx("div",{className:"h-12 w-12 bg-gray-200 rounded"}),(0,r.jsxs)("div",{className:"flex-1 space-y-2",children:[r.jsx("div",{className:"h-4 bg-gray-200 rounded w-3/4"}),r.jsx("div",{className:"h-3 bg-gray-200 rounded w-1/2"})]})]},e))})})}}};var s=require("../../../webpack-runtime.js");s.C(e);var t=e=>s(s.s=e),r=s.X(0,[276,448,404,729],()=>t(72537));module.exports=r})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..99133613940ab5396d09f61b4a0443e53a437b1e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/404.js","../../../chunks/729.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..d951912233ae6347d2acfc4abe69c82593b4980f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/post-history/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/post-history/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","485","static/chunks/app/dashboard/post-history/page-5815ebeb70f0d388.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","702","static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\post-history\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.html b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.html new file mode 100644 index 0000000000000000000000000000000000000000..12f9fd7ae44b890c33804ba13687a8e8c4d256eb --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.html @@ -0,0 +1 @@ +
                          Loading...
                            \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.meta b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.meta new file mode 100644 index 0000000000000000000000000000000000000000..ce4f23fdc922c2739477e57def7f7867decd8743 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/video-library/layout,_N_T_/dashboard/video-library/page,_N_T_/dashboard/video-library" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.rsc b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.rsc new file mode 100644 index 0000000000000000000000000000000000000000..08f31cb807310f24308810e8a471563376bdae6e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library.rsc @@ -0,0 +1,9 @@ +3:I[4707,[],""] +4:I[36423,[],""] +5:I[58328,["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"default",1] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["dashboard",{"children":["video-library",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["video-library",{"children":["__PAGE__",{},[["$L1","$L2",null],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","video-library","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[null,["$","$L5",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],"params":{}}]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +2:E{"digest":"NEXT_REDIRECT;replace;/dashboard;307;"} +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page.js new file mode 100644 index 0000000000000000000000000000000000000000..e4514ce0531d2d03c0e3e62b9aef49b15cf9d47c --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=628,e.ids=[628],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},22775:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>f,originalPathname:()=>l,pages:()=>c,routeModule:()=>p,tree:()=>s}),r(6811),r(22834),r(32029),r(35866);var n=r(23191),o=r(88716),i=r(37922),a=r.n(i),u=r(95231),d={};for(let e in u)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(d[e]=()=>u[e]);r.d(t,d);let s=["",{children:["dashboard",{children:["video-library",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,6811)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\video-library\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,22834)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx"]}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\video-library\\page.tsx"],l="/dashboard/video-library/page",f={require:r,loadChunk:()=>Promise.resolve()},p=new n.AppPageRouteModule({definition:{kind:o.x.APP_PAGE,page:"/dashboard/video-library/page",pathname:"/dashboard/video-library",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:s}})},35303:()=>{},58585:(e,t,r)=>{"use strict";var n=r(61085);r.o(n,"redirect")&&r.d(t,{redirect:function(){return n.redirect}})},61085:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return a},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(83953),o=r(16399);class i extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class a extends URLSearchParams{append(){throw new i}delete(){throw new i}set(){throw new i}sort(){throw new i}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8586:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83953:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return d},getRedirectStatusCodeFromError:function(){return g},getRedirectTypeFromError:function(){return p},getURLFromRedirectError:function(){return f},isRedirectError:function(){return l},permanentRedirect:function(){return c},redirect:function(){return s}});let o=r(54580),i=r(72934),a=r(8586),u="NEXT_REDIRECT";function d(e,t,r){void 0===r&&(r=a.RedirectStatusCode.TemporaryRedirect);let n=Error(u);n.digest=u+";"+t+";"+e+";"+r+";";let i=o.requestAsyncStorage.getStore();return i&&(n.mutableCookies=i.mutableCookies),n}function s(e,t){void 0===t&&(t="replace");let r=i.actionAsyncStorage.getStore();throw d(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.TemporaryRedirect)}function c(e,t){void 0===t&&(t="replace");let r=i.actionAsyncStorage.getStore();throw d(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.PermanentRedirect)}function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),i=Number(o);return t===u&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(i)&&i in a.RedirectStatusCode}function f(e){return l(e)?e.digest.split(";",3)[2]:null}function p(e){if(!l(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function g(e){if(!l(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6811:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(58585);function o(){(0,n.redirect)("/dashboard")}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[276,448,404,729],()=>r(22775));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..99133613940ab5396d09f61b4a0443e53a437b1e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/404.js","../../../chunks/729.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..fab28d38ff5102e8d440a99134c69f1b3db32327 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/video-library/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/video-library/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","702","static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\video-library\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.html b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.html new file mode 100644 index 0000000000000000000000000000000000000000..0941f9e1b4dcb892e91493a11260324902458664 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.html @@ -0,0 +1 @@ +
                            Loading...
                              \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.meta b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.meta new file mode 100644 index 0000000000000000000000000000000000000000..ac1e478819bc5954a1085cc9c697ffb9ed5e7b15 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/whatsapp-settings/layout,_N_T_/dashboard/whatsapp-settings/page,_N_T_/dashboard/whatsapp-settings" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.rsc b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.rsc new file mode 100644 index 0000000000000000000000000000000000000000..4d8d5a9758b56f2f66951adeef81985737ff8572 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings.rsc @@ -0,0 +1,9 @@ +3:I[4707,[],""] +4:I[36423,[],""] +5:I[58328,["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"default",1] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["dashboard",{"children":["whatsapp-settings",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["whatsapp-settings",{"children":["__PAGE__",{},[["$L1","$L2",null],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","whatsapp-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[null,["$","$L5",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],"params":{}}]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +2:E{"digest":"NEXT_REDIRECT;replace;/dashboard;307;"} +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page.js new file mode 100644 index 0000000000000000000000000000000000000000..8fde583a27a048c9fc47fd742cec5fd5eb608e5f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=256,e.ids=[256],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},85282:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>i.a,__next_app__:()=>p,originalPathname:()=>l,pages:()=>c,routeModule:()=>f,tree:()=>d}),r(88514),r(22834),r(32029),r(35866);var n=r(23191),o=r(88716),a=r(37922),i=r.n(a),u=r(95231),s={};for(let e in u)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(s[e]=()=>u[e]);r.d(t,s);let d=["",{children:["dashboard",{children:["whatsapp-settings",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,88514)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\whatsapp-settings\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,22834)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx"]}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\whatsapp-settings\\page.tsx"],l="/dashboard/whatsapp-settings/page",p={require:r,loadChunk:()=>Promise.resolve()},f=new n.AppPageRouteModule({definition:{kind:o.x.APP_PAGE,page:"/dashboard/whatsapp-settings/page",pathname:"/dashboard/whatsapp-settings",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},35303:()=>{},58585:(e,t,r)=>{"use strict";var n=r(61085);r.o(n,"redirect")&&r.d(t,{redirect:function(){return n.redirect}})},61085:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return i},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(83953),o=r(16399);class a extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class i extends URLSearchParams{append(){throw new a}delete(){throw new a}set(){throw new a}sort(){throw new a}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8586:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83953:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return s},getRedirectStatusCodeFromError:function(){return g},getRedirectTypeFromError:function(){return f},getURLFromRedirectError:function(){return p},isRedirectError:function(){return l},permanentRedirect:function(){return c},redirect:function(){return d}});let o=r(54580),a=r(72934),i=r(8586),u="NEXT_REDIRECT";function s(e,t,r){void 0===r&&(r=i.RedirectStatusCode.TemporaryRedirect);let n=Error(u);n.digest=u+";"+t+";"+e+";"+r+";";let a=o.requestAsyncStorage.getStore();return a&&(n.mutableCookies=a.mutableCookies),n}function d(e,t){void 0===t&&(t="replace");let r=a.actionAsyncStorage.getStore();throw s(e,t,(null==r?void 0:r.isAction)?i.RedirectStatusCode.SeeOther:i.RedirectStatusCode.TemporaryRedirect)}function c(e,t){void 0===t&&(t="replace");let r=a.actionAsyncStorage.getStore();throw s(e,t,(null==r?void 0:r.isAction)?i.RedirectStatusCode.SeeOther:i.RedirectStatusCode.PermanentRedirect)}function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),a=Number(o);return t===u&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(a)&&a in i.RedirectStatusCode}function p(e){return l(e)?e.digest.split(";",3)[2]:null}function f(e){if(!l(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function g(e){if(!l(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},88514:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(58585);function o(){(0,n.redirect)("/dashboard")}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[276,448,404,729],()=>r(85282));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..99133613940ab5396d09f61b4a0443e53a437b1e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/404.js","../../../chunks/729.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..951176db747588327385f8678285712e1984eabd --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/dashboard/whatsapp-settings/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/whatsapp-settings/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","137","static/chunks/137-ba5a6ccb277ff542.js","663","static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","702","static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\whatsapp-settings\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/index.html b/phase-1-core-infra/frontend/.next/server/app/index.html new file mode 100644 index 0000000000000000000000000000000000000000..92c65211616a7b7a29a19f3946d85a481b901479 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/index.html @@ -0,0 +1 @@ +
                              AI-Powered LinkedIn Marketing

                              Grow your LinkedIn
                              on autopilot

                              Generate professional posts with AI, create stunning visuals, schedule at peak times, and publish — all from one beautiful dashboard.

                              No credit card required · Free plan available

                              postai.app/dashboard

                              24

                              Total Posts

                              19

                              Published

                              79%

                              Success Rate

                              Recent Posts

                              AI trends in B2B marketing 2025

                              Published

                              Why consistent posting beats viral content

                              Published

                              3 lessons from 100 LinkedIn posts

                              Published

                              Simple Process

                              Up and running in minutes

                              01

                              Sign Up Free

                              Create your account in 30 seconds. No credit card required.

                              02

                              Connect LinkedIn

                              One-click OAuth connection. We never store your password.

                              03

                              Create & Publish

                              Generate AI content, add visuals, and publish or schedule.

                              Everything you need

                              Built for LinkedIn growth

                              All the tools a professional needs to build their personal brand — without spending hours writing content.

                              AI-Powered Content

                              Generate professional LinkedIn posts in seconds using state-of-the-art AI. Just give a topic — get a scroll-stopping post.

                              AI Image Generation

                              Create stunning images automatically from your post content using HuggingFace FLUX — no design skills needed.

                              Smart Scheduling

                              Schedule posts at optimal times for maximum engagement. Set it and forget it — we handle the rest.

                              Performance Analytics

                              Track your posting activity, success rates, and patterns. Understand what works and double down on it.

                              One-Click Publish

                              Connect your LinkedIn once and publish directly from the platform. No copy-pasting, no switching tabs.

                              Secure & Private

                              Your data is encrypted and never shared. OAuth tokens stored securely. Your audience stays yours.

                              Ready to grow on LinkedIn?

                              Join professionals using AI to build their brand consistently — without the daily grind.

                              Get Started — It's Free
                                \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/index.meta b/phase-1-core-infra/frontend/.next/server/app/index.meta new file mode 100644 index 0000000000000000000000000000000000000000..4bb667622e0bb5eb9b84b2e0ad9938bdcbdb15a6 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/index.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/page,_N_T_/" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/index.rsc b/phase-1-core-infra/frontend/.next/server/app/index.rsc new file mode 100644 index 0000000000000000000000000000000000000000..2cc116b9f98c605d7cb45bc9ee32192c631f2c1c --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/index.rsc @@ -0,0 +1,7 @@ +2:I[72972,["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],""] +3:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","div",null,{"className":"min-h-screen bg-white font-sans","children":[["$","header",null,{"className":"sticky top-0 z-50 bg-white border-b border-gray-100 shadow-sm","children":["$","div",null,{"className":"max-w-6xl mx-auto px-6 h-14 flex items-center justify-between","children":[["$","div",null,{"className":"flex items-center gap-2","children":[["$","div",null,{"className":"w-8 h-8 rounded-full bg-[#0A66C2] flex items-center justify-center","children":["$","svg",null,{"className":"w-4 h-4 text-white","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2.5,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M13 10V3L4 14h7v7l9-11h-7z"}]}]}],["$","span",null,{"className":"font-bold text-gray-900 text-sm tracking-tight","children":"PostAI"}]]}],["$","div",null,{"className":"flex items-center gap-3","children":[["$","$L2",null,{"href":"/auth/login","className":"text-sm font-semibold text-gray-700 hover:text-gray-900 px-4 py-2 rounded-full hover:bg-gray-100 transition-colors","children":"Sign In"}],["$","$L2",null,{"href":"/auth/register","className":"text-sm font-semibold text-white bg-[#0A66C2] hover:bg-[#004182] px-5 py-2 rounded-full transition-colors shadow-sm","children":"Get Started Free"}]]}]]}]}],["$","section",null,{"className":"bg-gradient-to-br from-[#0A66C2] via-[#0052a3] to-[#004182] pt-20 pb-28 px-6 relative overflow-hidden","children":[["$","div",null,{"className":"absolute top-0 right-0 w-[600px] h-[600px] bg-white/5 rounded-full -translate-y-1/2 translate-x-1/3 pointer-events-none"}],["$","div",null,{"className":"absolute bottom-0 left-0 w-80 h-80 bg-white/5 rounded-full translate-y-1/2 -translate-x-1/3 pointer-events-none"}],["$","div",null,{"className":"relative max-w-4xl mx-auto text-center","children":[["$","div",null,{"className":"inline-flex items-center gap-2 bg-white/10 text-white/90 text-xs font-semibold px-4 py-1.5 rounded-full mb-6 border border-white/20","children":[["$","span",null,{"className":"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse"}],"AI-Powered LinkedIn Marketing"]}],["$","h1",null,{"className":"text-4xl md:text-6xl font-bold text-white leading-tight mb-6","children":["Grow your LinkedIn",["$","br",null,{}],["$","span",null,{"className":"text-blue-200","children":"on autopilot"}]]}],["$","p",null,{"className":"text-blue-100 text-lg md:text-xl mb-10 max-w-2xl mx-auto leading-relaxed","children":"Generate professional posts with AI, create stunning visuals, schedule at peak times, and publish — all from one beautiful dashboard."}],["$","div",null,{"className":"flex flex-col sm:flex-row items-center justify-center gap-4","children":[["$","$L2",null,{"href":"/auth/register","className":"inline-flex items-center gap-2 bg-white text-[#0A66C2] font-bold text-base px-8 py-3.5 rounded-full shadow-xl hover:shadow-2xl hover:scale-105 transition-all duration-200","children":["Start for Free",["$","svg",null,{"className":"w-5 h-5","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2.5,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M9 5l7 7-7 7"}]}]]}],["$","$L2",null,{"href":"/auth/login","className":"inline-flex items-center gap-2 border-2 border-white/40 text-white font-semibold text-base px-8 py-3.5 rounded-full hover:bg-white/10 transition-colors","children":"Sign In"}]]}],["$","p",null,{"className":"text-blue-200/70 text-sm mt-5","children":"No credit card required · Free plan available"}]]}],["$","div",null,{"className":"relative max-w-3xl mx-auto mt-16","children":[["$","div",null,{"className":"bg-white rounded-2xl shadow-2xl overflow-hidden border border-white/20","children":[["$","div",null,{"className":"bg-gray-100 px-4 py-2.5 flex items-center gap-2 border-b border-gray-200","children":[["$","div",null,{"className":"flex gap-1.5","children":[["$","div",null,{"className":"w-3 h-3 rounded-full bg-red-400"}],["$","div",null,{"className":"w-3 h-3 rounded-full bg-yellow-400"}],["$","div",null,{"className":"w-3 h-3 rounded-full bg-green-400"}]]}],["$","div",null,{"className":"flex-1 bg-white rounded-md h-5 mx-4 flex items-center px-3","children":["$","span",null,{"className":"text-xs text-gray-400","children":"postai.app/dashboard"}]}]]}],["$","div",null,{"className":"bg-[#F3F2EF] p-4 grid grid-cols-3 gap-3","children":[[["$","div","Total Posts",{"className":"bg-white rounded-xl p-4 shadow-[0_0_0_1px_rgba(0,0,0,0.08)]","children":[["$","p",null,{"className":"text-2xl font-bold text-[#0A66C2]","children":"24"}],["$","p",null,{"className":"text-xs text-gray-500 mt-0.5","children":"Total Posts"}]]}],["$","div","Published",{"className":"bg-white rounded-xl p-4 shadow-[0_0_0_1px_rgba(0,0,0,0.08)]","children":[["$","p",null,{"className":"text-2xl font-bold text-green-600","children":"19"}],["$","p",null,{"className":"text-xs text-gray-500 mt-0.5","children":"Published"}]]}],["$","div","Success Rate",{"className":"bg-white rounded-xl p-4 shadow-[0_0_0_1px_rgba(0,0,0,0.08)]","children":[["$","p",null,{"className":"text-2xl font-bold text-purple-600","children":"79%"}],["$","p",null,{"className":"text-xs text-gray-500 mt-0.5","children":"Success Rate"}]]}]],["$","div",null,{"className":"col-span-3 bg-white rounded-xl p-4 shadow-[0_0_0_1px_rgba(0,0,0,0.08)]","children":[["$","p",null,{"className":"text-xs font-semibold text-gray-700 mb-3","children":"Recent Posts"}],[["$","div","0",{"className":"flex items-center gap-3 py-2 border-b border-gray-50 last:border-0","children":[["$","div",null,{"className":"w-2 h-2 rounded-full bg-green-400 shrink-0"}],["$","p",null,{"className":"text-xs text-gray-600 truncate","children":"AI trends in B2B marketing 2025"}],["$","span",null,{"className":"ml-auto text-xs bg-green-100 text-green-700 font-semibold px-2 py-0.5 rounded-full shrink-0","children":"Published"}]]}],["$","div","1",{"className":"flex items-center gap-3 py-2 border-b border-gray-50 last:border-0","children":[["$","div",null,{"className":"w-2 h-2 rounded-full bg-green-400 shrink-0"}],["$","p",null,{"className":"text-xs text-gray-600 truncate","children":"Why consistent posting beats viral content"}],["$","span",null,{"className":"ml-auto text-xs bg-green-100 text-green-700 font-semibold px-2 py-0.5 rounded-full shrink-0","children":"Published"}]]}],["$","div","2",{"className":"flex items-center gap-3 py-2 border-b border-gray-50 last:border-0","children":[["$","div",null,{"className":"w-2 h-2 rounded-full bg-green-400 shrink-0"}],["$","p",null,{"className":"text-xs text-gray-600 truncate","children":"3 lessons from 100 LinkedIn posts"}],["$","span",null,{"className":"ml-auto text-xs bg-green-100 text-green-700 font-semibold px-2 py-0.5 rounded-full shrink-0","children":"Published"}]]}]]]}]]}]]}],["$","div",null,{"className":"absolute -bottom-8 left-1/2 -translate-x-1/2 w-3/4 h-16 bg-blue-600/30 blur-2xl rounded-full pointer-events-none"}]]}]]}],["$","section",null,{"className":"py-20 px-6 bg-white","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":[["$","div",null,{"className":"text-center mb-12","children":[["$","p",null,{"className":"text-[#0A66C2] font-semibold text-sm uppercase tracking-wide mb-2","children":"Simple Process"}],["$","h2",null,{"className":"text-3xl font-bold text-gray-900","children":"Up and running in minutes"}]]}],["$","div",null,{"className":"grid md:grid-cols-3 gap-8","children":[["$","div","01",{"className":"text-center","children":[["$","div",null,{"className":"inline-flex items-center justify-center w-14 h-14 rounded-2xl bg-[#0A66C2] text-white font-bold text-lg mb-4 shadow-lg shadow-blue-200","children":"01"}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"Sign Up Free"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"Create your account in 30 seconds. No credit card required."}]]}],["$","div","02",{"className":"text-center","children":[["$","div",null,{"className":"inline-flex items-center justify-center w-14 h-14 rounded-2xl bg-[#0A66C2] text-white font-bold text-lg mb-4 shadow-lg shadow-blue-200","children":"02"}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"Connect LinkedIn"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"One-click OAuth connection. We never store your password."}]]}],["$","div","03",{"className":"text-center","children":[["$","div",null,{"className":"inline-flex items-center justify-center w-14 h-14 rounded-2xl bg-[#0A66C2] text-white font-bold text-lg mb-4 shadow-lg shadow-blue-200","children":"03"}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"Create & Publish"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"Generate AI content, add visuals, and publish or schedule."}]]}]]}]]}]}],["$","section",null,{"className":"py-20 px-6 bg-[#F3F2EF]","children":["$","div",null,{"className":"max-w-5xl mx-auto","children":[["$","div",null,{"className":"text-center mb-12","children":[["$","p",null,{"className":"text-[#0A66C2] font-semibold text-sm uppercase tracking-wide mb-2","children":"Everything you need"}],["$","h2",null,{"className":"text-3xl font-bold text-gray-900","children":"Built for LinkedIn growth"}],["$","p",null,{"className":"text-gray-600 mt-3 max-w-xl mx-auto","children":"All the tools a professional needs to build their personal brand — without spending hours writing content."}]]}],["$","div",null,{"className":"grid md:grid-cols-2 lg:grid-cols-3 gap-5","children":[["$","div","AI-Powered Content",{"className":"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] hover:-translate-y-0.5 transition-all duration-200 p-6","children":[["$","div",null,{"className":"w-11 h-11 rounded-xl bg-blue-100 text-[#0A66C2] flex items-center justify-center mb-4","children":["$","svg",null,{"className":"w-6 h-6","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"}]}]}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"AI-Powered Content"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"Generate professional LinkedIn posts in seconds using state-of-the-art AI. Just give a topic — get a scroll-stopping post."}]]}],["$","div","AI Image Generation",{"className":"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] hover:-translate-y-0.5 transition-all duration-200 p-6","children":[["$","div",null,{"className":"w-11 h-11 rounded-xl bg-purple-100 text-purple-600 flex items-center justify-center mb-4","children":["$","svg",null,{"className":"w-6 h-6","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"}]}]}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"AI Image Generation"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"Create stunning images automatically from your post content using HuggingFace FLUX — no design skills needed."}]]}],["$","div","Smart Scheduling",{"className":"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] hover:-translate-y-0.5 transition-all duration-200 p-6","children":[["$","div",null,{"className":"w-11 h-11 rounded-xl bg-green-100 text-green-600 flex items-center justify-center mb-4","children":["$","svg",null,{"className":"w-6 h-6","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"}]}]}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"Smart Scheduling"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"Schedule posts at optimal times for maximum engagement. Set it and forget it — we handle the rest."}]]}],["$","div","Performance Analytics",{"className":"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] hover:-translate-y-0.5 transition-all duration-200 p-6","children":[["$","div",null,{"className":"w-11 h-11 rounded-xl bg-amber-100 text-amber-600 flex items-center justify-center mb-4","children":["$","svg",null,{"className":"w-6 h-6","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"}]}]}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"Performance Analytics"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"Track your posting activity, success rates, and patterns. Understand what works and double down on it."}]]}],["$","div","One-Click Publish",{"className":"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] hover:-translate-y-0.5 transition-all duration-200 p-6","children":[["$","div",null,{"className":"w-11 h-11 rounded-xl bg-cyan-100 text-cyan-600 flex items-center justify-center mb-4","children":["$","svg",null,{"className":"w-6 h-6","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"}]}]}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"One-Click Publish"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"Connect your LinkedIn once and publish directly from the platform. No copy-pasting, no switching tabs."}]]}],["$","div","Secure & Private",{"className":"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] hover:-translate-y-0.5 transition-all duration-200 p-6","children":[["$","div",null,{"className":"w-11 h-11 rounded-xl bg-red-100 text-red-500 flex items-center justify-center mb-4","children":["$","svg",null,{"className":"w-6 h-6","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"}]}]}],["$","h3",null,{"className":"font-bold text-gray-900 mb-2","children":"Secure & Private"}],["$","p",null,{"className":"text-gray-600 text-sm leading-relaxed","children":"Your data is encrypted and never shared. OAuth tokens stored securely. Your audience stays yours."}]]}]]}]]}]}],["$","section",null,{"className":"py-20 px-6 bg-gradient-to-br from-[#0A66C2] to-[#004182] relative overflow-hidden","children":[["$","div",null,{"className":"absolute inset-0 pointer-events-none","children":[["$","div",null,{"className":"absolute top-0 right-0 w-96 h-96 bg-white/5 rounded-full -translate-y-1/2 translate-x-1/2"}],["$","div",null,{"className":"absolute bottom-0 left-0 w-64 h-64 bg-white/5 rounded-full translate-y-1/2 -translate-x-1/2"}]]}],["$","div",null,{"className":"relative max-w-2xl mx-auto text-center","children":[["$","h2",null,{"className":"text-3xl md:text-4xl font-bold text-white mb-4","children":"Ready to grow on LinkedIn?"}],["$","p",null,{"className":"text-blue-100 text-lg mb-8","children":"Join professionals using AI to build their brand consistently — without the daily grind."}],["$","$L2",null,{"href":"/auth/register","className":"inline-flex items-center gap-2 bg-white text-[#0A66C2] font-bold text-base px-10 py-4 rounded-full shadow-xl hover:shadow-2xl hover:scale-105 transition-all duration-200","children":["Get Started — It's Free",["$","svg",null,{"className":"w-5 h-5","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2.5,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M9 5l7 7-7 7"}]}]]}]]}]]}],["$","footer",null,{"className":"bg-gray-900 py-8 px-6","children":["$","div",null,{"className":"max-w-5xl mx-auto flex flex-col md:flex-row items-center justify-between gap-4","children":[["$","div",null,{"className":"flex items-center gap-2","children":[["$","div",null,{"className":"w-7 h-7 rounded-full bg-[#0A66C2] flex items-center justify-center","children":["$","svg",null,{"className":"w-3.5 h-3.5 text-white","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":2.5,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M13 10V3L4 14h7v7l9-11h-7z"}]}]}],["$","span",null,{"className":"text-white font-bold text-sm","children":"PostAI"}]]}],["$","p",null,{"className":"text-gray-500 text-xs","children":"© 2026 PostAI. AI-powered LinkedIn marketing platform."}],["$","div",null,{"className":"flex items-center gap-5","children":[["$","$L2",null,{"href":"/auth/login","className":"text-gray-400 hover:text-white text-xs transition-colors","children":"Sign In"}],["$","$L2",null,{"href":"/auth/register","className":"text-gray-400 hover:text-white text-xs transition-colors","children":"Sign Up"}],["$","$L2",null,{"href":"/pricing","className":"text-gray-400 hover:text-white text-xs transition-colors","children":"Pricing"}]]}]]}]}]]}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":{}}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/login.html b/phase-1-core-infra/frontend/.next/server/app/login.html new file mode 100644 index 0000000000000000000000000000000000000000..912ec38c1cb46acd791d684ee5ca6215b021cb36 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/login.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/login.meta b/phase-1-core-infra/frontend/.next/server/app/login.meta new file mode 100644 index 0000000000000000000000000000000000000000..a96257eee4375ced5ed09da3e98b668bec524ccf --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/login.meta @@ -0,0 +1,6 @@ +{ + "status": 307, + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/login/layout,_N_T_/login/page,_N_T_/login" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/login.rsc b/phase-1-core-infra/frontend/.next/server/app/login.rsc new file mode 100644 index 0000000000000000000000000000000000000000..9b2bde87166da3788758e69269e3c9c4fead47d5 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/login.rsc @@ -0,0 +1,7 @@ +3:I[4707,[],""] +4:I[36423,[],""] +5:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["login",{"children":["__PAGE__",{},[["$L1","$L2",null],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L5",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":{}}]],null],null],["$L6",null]]]] +2:E{"digest":"NEXT_REDIRECT;replace;/auth/login;307;"} +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/login/page.js b/phase-1-core-infra/frontend/.next/server/app/login/page.js new file mode 100644 index 0000000000000000000000000000000000000000..4691e4bb38ee0c975c5b0d536cf83617bd924e81 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/login/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=626,e.ids=[626],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},16783:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>f,originalPathname:()=>c,pages:()=>l,routeModule:()=>p,tree:()=>d}),r(80974),r(32029),r(35866);var n=r(23191),o=r(88716),s=r(37922),a=r.n(s),i=r(95231),u={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(u[e]=()=>i[e]);r.d(t,u);let d=["",{children:["login",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,80974)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\login\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],l=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\login\\page.tsx"],c="/login/page",f={require:r,loadChunk:()=>Promise.resolve()},p=new n.AppPageRouteModule({definition:{kind:o.x.APP_PAGE,page:"/login/page",pathname:"/login",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},4271:(e,t,r)=>{Promise.resolve().then(r.bind(r,86325))},35303:()=>{},86325:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>_});var n=r(10326),o=r(46465),s=r.n(o);r(23824);var a=r(17577),i=r(10592),u=r(79360),d=r(94019),l=r(51223);let c=i.zt,f=a.forwardRef(({className:e,...t},r)=>n.jsx(i.l_,{ref:r,className:(0,l.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));f.displayName=i.l_.displayName;let p=(0,u.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),g=a.forwardRef(({className:e,variant:t,...r},o)=>n.jsx(i.fC,{ref:o,className:(0,l.cn)(p({variant:t}),e),...r}));g.displayName=i.fC.displayName,a.forwardRef(({className:e,...t},r)=>n.jsx(i.aU,{ref:r,className:(0,l.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let m=a.forwardRef(({className:e,...t},r)=>n.jsx(i.x8,{ref:r,className:(0,l.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:n.jsx(d.Z,{className:"h-4 w-4"})}));m.displayName=i.x8.displayName;let h=a.forwardRef(({className:e,...t},r)=>n.jsx(i.Dx,{ref:r,className:(0,l.cn)("text-sm font-semibold",e),...t}));h.displayName=i.Dx.displayName;let v=a.forwardRef(({className:e,...t},r)=>n.jsx(i.dk,{ref:r,className:(0,l.cn)("text-sm opacity-90",e),...t}));v.displayName=i.dk.displayName;var y=r(56627);function x(){let{toasts:e}=(0,y.pm)();return(0,n.jsxs)(c,{children:[e.map(function({id:e,title:t,description:r,action:o,...s}){return(0,n.jsxs)(g,{...s,children:[(0,n.jsxs)("div",{className:"grid gap-1",children:[t&&n.jsx(h,{children:t}),r&&n.jsx(v,{children:r})]}),o,n.jsx(m,{})]},e)}),n.jsx(f,{})]})}var b=r(92876),j=r(74951),S=r(44976);function _({children:e}){let[t]=(0,a.useState)(()=>new j.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return n.jsx("html",{lang:"en",children:n.jsx("body",{className:s().className,children:n.jsx(S.aH,{client:t,children:(0,n.jsxs)(b.Ho,{children:[e,n.jsx(x,{})]})})})})}},92876:(e,t,r)=>{"use strict";r.d(t,{Ho:()=>i,aC:()=>u});var n=r(10326),o=r(17577),s=r(42357);let a=(0,o.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,r]=(0,o.useState)(null),[i,u]=(0,o.useState)(null),[d,l]=(0,o.useState)(!0),c=async()=>{try{let e=await (0,s.Gg)();e?(r(e.user),u(e.session)):(r(null),u(null))}catch(e){r(null),u(null)}finally{l(!1)}};return n.jsx(a.Provider,{value:{user:t,session:i,loading:d,refetch:c},children:e})}function u(){return(0,o.useContext)(a)}},56627:(e,t,r)=>{"use strict";r.d(t,{pm:()=>f});var n=r(17577);let o=0,s=new Map,a=e=>{if(s.has(e))return;let t=setTimeout(()=>{s.delete(e),l({type:"REMOVE_TOAST",toastId:e})},1e6);s.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?a(r):e.toasts.forEach(e=>{a(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},u=[],d={toasts:[]};function l(e){d=i(d,e),u.forEach(e=>{e(d)})}function c({...e}){let t=(o=(o+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>l({type:"DISMISS_TOAST",toastId:t});return l({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>l({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function f(){let[e,t]=n.useState(d);return n.useEffect(()=>(u.push(t),()=>{let e=u.indexOf(t);e>-1&&u.splice(e,1)}),[e]),{...e,toast:c,dismiss:e=>l({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,r)=>{"use strict";r.d(t,{Gg:()=>a,w7:()=>s});let n="http://127.0.0.1:8000",o={async signUp(e,t,r){let o=await fetch(`${n}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!o.ok)throw Error((await o.json()).detail||"Registration failed");return o.json()},async signIn(e,t){let r=await fetch(`${n}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${n}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${n}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};o.signUp,o.signIn;let s=o.signOut,a=o.getSession},51223:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var n=r(41135),o=r(31009);function s(...e){return(0,o.m6)((0,n.W)(e))}},58585:(e,t,r)=>{"use strict";var n=r(61085);r.o(n,"redirect")&&r.d(t,{redirect:function(){return n.redirect}})},61085:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return a},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(83953),o=r(16399);class s extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class a extends URLSearchParams{append(){throw new s}delete(){throw new s}set(){throw new s}sort(){throw new s}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8586:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83953:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return u},getRedirectStatusCodeFromError:function(){return g},getRedirectTypeFromError:function(){return p},getURLFromRedirectError:function(){return f},isRedirectError:function(){return c},permanentRedirect:function(){return l},redirect:function(){return d}});let o=r(54580),s=r(72934),a=r(8586),i="NEXT_REDIRECT";function u(e,t,r){void 0===r&&(r=a.RedirectStatusCode.TemporaryRedirect);let n=Error(i);n.digest=i+";"+t+";"+e+";"+r+";";let s=o.requestAsyncStorage.getStore();return s&&(n.mutableCookies=s.mutableCookies),n}function d(e,t){void 0===t&&(t="replace");let r=s.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.TemporaryRedirect)}function l(e,t){void 0===t&&(t="replace");let r=s.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.PermanentRedirect)}function c(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),s=Number(o);return t===i&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(s)&&s in a.RedirectStatusCode}function f(e){return c(e)?e.digest.split(";",3)[2]:null}function p(e){if(!c(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function g(e){if(!c(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},32029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},80974:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(58585);function o(){(0,n.redirect)("/auth/login")}},23824:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[276,448],()=>r(16783));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/login/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/login/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..32af8f97da38d4d8f4b99f17543dc4939737c050 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/login/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../webpack-runtime.js","../../chunks/276.js","../../chunks/448.js","page_client-reference-manifest.js","../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/login/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/login/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..7999418022d5a71554e5075d0a089ac71dc6632f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/login/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/login/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\login\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/page.js b/phase-1-core-infra/frontend/.next/server/app/page.js new file mode 100644 index 0000000000000000000000000000000000000000..7295d98e57380e9117827d64dd9f9d5a7a6637f2 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=931,e.ids=[931],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},77626:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>o.a,__next_app__:()=>u,originalPathname:()=>x,pages:()=>c,routeModule:()=>h,tree:()=>d}),s(35480),s(32029),s(35866);var r=s(23191),a=s(88716),n=s(37922),o=s.n(n),i=s(95231),l={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>i[e]);s.d(t,l);let d=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,35480)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page.tsx"]}]},{layout:[()=>Promise.resolve().then(s.bind(s,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page.tsx"],x="/page",u={require:s,loadChunk:()=>Promise.resolve()},h=new r.AppPageRouteModule({definition:{kind:a.x.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,12994,23)),Promise.resolve().then(s.t.bind(s,96114,23)),Promise.resolve().then(s.t.bind(s,9727,23)),Promise.resolve().then(s.t.bind(s,79671,23)),Promise.resolve().then(s.t.bind(s,41868,23)),Promise.resolve().then(s.t.bind(s,84759,23))},51409:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,79404,23))},4271:(e,t,s)=>{Promise.resolve().then(s.bind(s,86325))},86325:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>N});var r=s(10326),a=s(46465),n=s.n(a);s(23824);var o=s(17577),i=s(10592),l=s(79360),d=s(94019),c=s(51223);let x=i.zt,u=o.forwardRef(({className:e,...t},s)=>r.jsx(i.l_,{ref:s,className:(0,c.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));u.displayName=i.l_.displayName;let h=(0,l.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=o.forwardRef(({className:e,variant:t,...s},a)=>r.jsx(i.fC,{ref:a,className:(0,c.cn)(h({variant:t}),e),...s}));m.displayName=i.fC.displayName,o.forwardRef(({className:e,...t},s)=>r.jsx(i.aU,{ref:s,className:(0,c.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let p=o.forwardRef(({className:e,...t},s)=>r.jsx(i.x8,{ref:s,className:(0,c.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:r.jsx(d.Z,{className:"h-4 w-4"})}));p.displayName=i.x8.displayName;let g=o.forwardRef(({className:e,...t},s)=>r.jsx(i.Dx,{ref:s,className:(0,c.cn)("text-sm font-semibold",e),...t}));g.displayName=i.Dx.displayName;let f=o.forwardRef(({className:e,...t},s)=>r.jsx(i.dk,{ref:s,className:(0,c.cn)("text-sm opacity-90",e),...t}));f.displayName=i.dk.displayName;var v=s(56627);function b(){let{toasts:e}=(0,v.pm)();return(0,r.jsxs)(x,{children:[e.map(function({id:e,title:t,description:s,action:a,...n}){return(0,r.jsxs)(m,{...n,children:[(0,r.jsxs)("div",{className:"grid gap-1",children:[t&&r.jsx(g,{children:t}),s&&r.jsx(f,{children:s})]}),a,r.jsx(p,{})]},e)}),r.jsx(u,{})]})}var j=s(92876),w=s(74951),y=s(44976);function N({children:e}){let[t]=(0,o.useState)(()=>new w.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return r.jsx("html",{lang:"en",children:r.jsx("body",{className:n().className,children:r.jsx(y.aH,{client:t,children:(0,r.jsxs)(j.Ho,{children:[e,r.jsx(b,{})]})})})})}},92876:(e,t,s)=>{"use strict";s.d(t,{Ho:()=>i,aC:()=>l});var r=s(10326),a=s(17577),n=s(42357);let o=(0,a.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,s]=(0,a.useState)(null),[i,l]=(0,a.useState)(null),[d,c]=(0,a.useState)(!0),x=async()=>{try{let e=await (0,n.Gg)();e?(s(e.user),l(e.session)):(s(null),l(null))}catch(e){s(null),l(null)}finally{c(!1)}};return r.jsx(o.Provider,{value:{user:t,session:i,loading:d,refetch:x},children:e})}function l(){return(0,a.useContext)(o)}},56627:(e,t,s)=>{"use strict";s.d(t,{pm:()=>u});var r=s(17577);let a=0,n=new Map,o=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?o(s):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=i(d,e),l.forEach(e=>{e(d)})}function x({...e}){let t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||s()}}}),{id:t,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function u(){let[e,t]=r.useState(d);return r.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:x,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,s)=>{"use strict";s.d(t,{Gg:()=>o,w7:()=>n});let r="http://127.0.0.1:8000",a={async signUp(e,t,s){let a=await fetch(`${r}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:s})});if(!a.ok)throw Error((await a.json()).detail||"Registration failed");return a.json()},async signIn(e,t){let s=await fetch(`${r}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!s.ok)throw Error((await s.json()).detail||"Login failed");return s.json()},async signOut(){if(!(await fetch(`${r}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${r}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};a.signUp,a.signIn;let n=a.signOut,o=a.getSession},51223:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var r=s(41135),a=s(31009);function n(...e){return(0,a.m6)((0,r.W)(e))}},57371:(e,t,s)=>{"use strict";s.d(t,{default:()=>a.a});var r=s(670),a=s.n(r)},670:(e,t,s)=>{"use strict";let{createProxy:r}=s(68570);e.exports=r("E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js")},32029:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},35480:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>i});var r=s(19510),a=s(57371);let n=[{icon:r.jsx("svg",{className:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})}),title:"AI-Powered Content",desc:"Generate professional LinkedIn posts in seconds using state-of-the-art AI. Just give a topic — get a scroll-stopping post.",color:"bg-blue-100 text-[#0A66C2]"},{icon:r.jsx("svg",{className:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})}),title:"AI Image Generation",desc:"Create stunning images automatically from your post content using HuggingFace FLUX — no design skills needed.",color:"bg-purple-100 text-purple-600"},{icon:r.jsx("svg",{className:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})}),title:"Smart Scheduling",desc:"Schedule posts at optimal times for maximum engagement. Set it and forget it — we handle the rest.",color:"bg-green-100 text-green-600"},{icon:r.jsx("svg",{className:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})}),title:"Performance Analytics",desc:"Track your posting activity, success rates, and patterns. Understand what works and double down on it.",color:"bg-amber-100 text-amber-600"},{icon:r.jsx("svg",{className:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"})}),title:"One-Click Publish",desc:"Connect your LinkedIn once and publish directly from the platform. No copy-pasting, no switching tabs.",color:"bg-cyan-100 text-cyan-600"},{icon:r.jsx("svg",{className:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})}),title:"Secure & Private",desc:"Your data is encrypted and never shared. OAuth tokens stored securely. Your audience stays yours.",color:"bg-red-100 text-red-500"}],o=[{num:"01",title:"Sign Up Free",desc:"Create your account in 30 seconds. No credit card required."},{num:"02",title:"Connect LinkedIn",desc:"One-click OAuth connection. We never store your password."},{num:"03",title:"Create & Publish",desc:"Generate AI content, add visuals, and publish or schedule."}];function i(){return(0,r.jsxs)("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx("header",{className:"sticky top-0 z-50 bg-white border-b border-gray-100 shadow-sm",children:(0,r.jsxs)("div",{className:"max-w-6xl mx-auto px-6 h-14 flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[r.jsx("div",{className:"w-8 h-8 rounded-full bg-[#0A66C2] flex items-center justify-center",children:r.jsx("svg",{className:"w-4 h-4 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),r.jsx("span",{className:"font-bold text-gray-900 text-sm tracking-tight",children:"PostAI"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[r.jsx(a.default,{href:"/auth/login",className:"text-sm font-semibold text-gray-700 hover:text-gray-900 px-4 py-2 rounded-full hover:bg-gray-100 transition-colors",children:"Sign In"}),r.jsx(a.default,{href:"/auth/register",className:"text-sm font-semibold text-white bg-[#0A66C2] hover:bg-[#004182] px-5 py-2 rounded-full transition-colors shadow-sm",children:"Get Started Free"})]})]})}),(0,r.jsxs)("section",{className:"bg-gradient-to-br from-[#0A66C2] via-[#0052a3] to-[#004182] pt-20 pb-28 px-6 relative overflow-hidden",children:[r.jsx("div",{className:"absolute top-0 right-0 w-[600px] h-[600px] bg-white/5 rounded-full -translate-y-1/2 translate-x-1/3 pointer-events-none"}),r.jsx("div",{className:"absolute bottom-0 left-0 w-80 h-80 bg-white/5 rounded-full translate-y-1/2 -translate-x-1/3 pointer-events-none"}),(0,r.jsxs)("div",{className:"relative max-w-4xl mx-auto text-center",children:[(0,r.jsxs)("div",{className:"inline-flex items-center gap-2 bg-white/10 text-white/90 text-xs font-semibold px-4 py-1.5 rounded-full mb-6 border border-white/20",children:[r.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse"}),"AI-Powered LinkedIn Marketing"]}),(0,r.jsxs)("h1",{className:"text-4xl md:text-6xl font-bold text-white leading-tight mb-6",children:["Grow your LinkedIn",r.jsx("br",{}),r.jsx("span",{className:"text-blue-200",children:"on autopilot"})]}),r.jsx("p",{className:"text-blue-100 text-lg md:text-xl mb-10 max-w-2xl mx-auto leading-relaxed",children:"Generate professional posts with AI, create stunning visuals, schedule at peak times, and publish — all from one beautiful dashboard."}),(0,r.jsxs)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4",children:[(0,r.jsxs)(a.default,{href:"/auth/register",className:"inline-flex items-center gap-2 bg-white text-[#0A66C2] font-bold text-base px-8 py-3.5 rounded-full shadow-xl hover:shadow-2xl hover:scale-105 transition-all duration-200",children:["Start for Free",r.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}),r.jsx(a.default,{href:"/auth/login",className:"inline-flex items-center gap-2 border-2 border-white/40 text-white font-semibold text-base px-8 py-3.5 rounded-full hover:bg-white/10 transition-colors",children:"Sign In"})]}),r.jsx("p",{className:"text-blue-200/70 text-sm mt-5",children:"No credit card required \xb7 Free plan available"})]}),(0,r.jsxs)("div",{className:"relative max-w-3xl mx-auto mt-16",children:[(0,r.jsxs)("div",{className:"bg-white rounded-2xl shadow-2xl overflow-hidden border border-white/20",children:[(0,r.jsxs)("div",{className:"bg-gray-100 px-4 py-2.5 flex items-center gap-2 border-b border-gray-200",children:[(0,r.jsxs)("div",{className:"flex gap-1.5",children:[r.jsx("div",{className:"w-3 h-3 rounded-full bg-red-400"}),r.jsx("div",{className:"w-3 h-3 rounded-full bg-yellow-400"}),r.jsx("div",{className:"w-3 h-3 rounded-full bg-green-400"})]}),r.jsx("div",{className:"flex-1 bg-white rounded-md h-5 mx-4 flex items-center px-3",children:r.jsx("span",{className:"text-xs text-gray-400",children:"postai.app/dashboard"})})]}),(0,r.jsxs)("div",{className:"bg-[#F3F2EF] p-4 grid grid-cols-3 gap-3",children:[[{label:"Total Posts",value:"24",color:"text-[#0A66C2]"},{label:"Published",value:"19",color:"text-green-600"},{label:"Success Rate",value:"79%",color:"text-purple-600"}].map(e=>(0,r.jsxs)("div",{className:"bg-white rounded-xl p-4 shadow-[0_0_0_1px_rgba(0,0,0,0.08)]",children:[r.jsx("p",{className:`text-2xl font-bold ${e.color}`,children:e.value}),r.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:e.label})]},e.label)),(0,r.jsxs)("div",{className:"col-span-3 bg-white rounded-xl p-4 shadow-[0_0_0_1px_rgba(0,0,0,0.08)]",children:[r.jsx("p",{className:"text-xs font-semibold text-gray-700 mb-3",children:"Recent Posts"}),["AI trends in B2B marketing 2025","Why consistent posting beats viral content","3 lessons from 100 LinkedIn posts"].map((e,t)=>(0,r.jsxs)("div",{className:"flex items-center gap-3 py-2 border-b border-gray-50 last:border-0",children:[r.jsx("div",{className:"w-2 h-2 rounded-full bg-green-400 shrink-0"}),r.jsx("p",{className:"text-xs text-gray-600 truncate",children:e}),r.jsx("span",{className:"ml-auto text-xs bg-green-100 text-green-700 font-semibold px-2 py-0.5 rounded-full shrink-0",children:"Published"})]},t))]})]})]}),r.jsx("div",{className:"absolute -bottom-8 left-1/2 -translate-x-1/2 w-3/4 h-16 bg-blue-600/30 blur-2xl rounded-full pointer-events-none"})]})]}),r.jsx("section",{className:"py-20 px-6 bg-white",children:(0,r.jsxs)("div",{className:"max-w-4xl mx-auto",children:[(0,r.jsxs)("div",{className:"text-center mb-12",children:[r.jsx("p",{className:"text-[#0A66C2] font-semibold text-sm uppercase tracking-wide mb-2",children:"Simple Process"}),r.jsx("h2",{className:"text-3xl font-bold text-gray-900",children:"Up and running in minutes"})]}),r.jsx("div",{className:"grid md:grid-cols-3 gap-8",children:o.map(e=>(0,r.jsxs)("div",{className:"text-center",children:[r.jsx("div",{className:"inline-flex items-center justify-center w-14 h-14 rounded-2xl bg-[#0A66C2] text-white font-bold text-lg mb-4 shadow-lg shadow-blue-200",children:e.num}),r.jsx("h3",{className:"font-bold text-gray-900 mb-2",children:e.title}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:e.desc})]},e.num))})]})}),r.jsx("section",{className:"py-20 px-6 bg-[#F3F2EF]",children:(0,r.jsxs)("div",{className:"max-w-5xl mx-auto",children:[(0,r.jsxs)("div",{className:"text-center mb-12",children:[r.jsx("p",{className:"text-[#0A66C2] font-semibold text-sm uppercase tracking-wide mb-2",children:"Everything you need"}),r.jsx("h2",{className:"text-3xl font-bold text-gray-900",children:"Built for LinkedIn growth"}),r.jsx("p",{className:"text-gray-600 mt-3 max-w-xl mx-auto",children:"All the tools a professional needs to build their personal brand — without spending hours writing content."})]}),r.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-5",children:n.map(e=>(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] hover:-translate-y-0.5 transition-all duration-200 p-6",children:[r.jsx("div",{className:`w-11 h-11 rounded-xl ${e.color} flex items-center justify-center mb-4`,children:e.icon}),r.jsx("h3",{className:"font-bold text-gray-900 mb-2",children:e.title}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:e.desc})]},e.title))})]})}),(0,r.jsxs)("section",{className:"py-20 px-6 bg-gradient-to-br from-[#0A66C2] to-[#004182] relative overflow-hidden",children:[(0,r.jsxs)("div",{className:"absolute inset-0 pointer-events-none",children:[r.jsx("div",{className:"absolute top-0 right-0 w-96 h-96 bg-white/5 rounded-full -translate-y-1/2 translate-x-1/2"}),r.jsx("div",{className:"absolute bottom-0 left-0 w-64 h-64 bg-white/5 rounded-full translate-y-1/2 -translate-x-1/2"})]}),(0,r.jsxs)("div",{className:"relative max-w-2xl mx-auto text-center",children:[r.jsx("h2",{className:"text-3xl md:text-4xl font-bold text-white mb-4",children:"Ready to grow on LinkedIn?"}),r.jsx("p",{className:"text-blue-100 text-lg mb-8",children:"Join professionals using AI to build their brand consistently — without the daily grind."}),(0,r.jsxs)(a.default,{href:"/auth/register",className:"inline-flex items-center gap-2 bg-white text-[#0A66C2] font-bold text-base px-10 py-4 rounded-full shadow-xl hover:shadow-2xl hover:scale-105 transition-all duration-200",children:["Get Started — It's Free",r.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]})]})]}),r.jsx("footer",{className:"bg-gray-900 py-8 px-6",children:(0,r.jsxs)("div",{className:"max-w-5xl mx-auto flex flex-col md:flex-row items-center justify-between gap-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[r.jsx("div",{className:"w-7 h-7 rounded-full bg-[#0A66C2] flex items-center justify-center",children:r.jsx("svg",{className:"w-3.5 h-3.5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),r.jsx("span",{className:"text-white font-bold text-sm",children:"PostAI"})]}),r.jsx("p",{className:"text-gray-500 text-xs",children:"\xa9 2026 PostAI. AI-powered LinkedIn marketing platform."}),(0,r.jsxs)("div",{className:"flex items-center gap-5",children:[r.jsx(a.default,{href:"/auth/login",className:"text-gray-400 hover:text-white text-xs transition-colors",children:"Sign In"}),r.jsx(a.default,{href:"/auth/register",className:"text-gray-400 hover:text-white text-xs transition-colors",children:"Sign Up"}),r.jsx(a.default,{href:"/pricing",className:"text-gray-400 hover:text-white text-xs transition-colors",children:"Pricing"})]})]})})]})}},23824:()=>{}};var t=require("../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[276,448,404],()=>s(77626));module.exports=r})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..ac9764a7ab6f7879a81decccaec36901ae7225a0 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../webpack-runtime.js","../chunks/276.js","../chunks/448.js","../chunks/404.js","page_client-reference-manifest.js","../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..111bcccbefec79e5003a4dd1f2fdb82e44086610 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/pricing.html b/phase-1-core-infra/frontend/.next/server/app/pricing.html new file mode 100644 index 0000000000000000000000000000000000000000..3f7f8ececf9215a306bae68b215ad32c39e089a0 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/pricing.html @@ -0,0 +1 @@ +
                                ← Back to Home

                                Simple, Transparent Pricing

                                Automate your LinkedIn presence with AI. No hidden fees.

                                Starter

                                $0/forever

                                Perfect for individuals getting started with LinkedIn automation.

                                • 1 LinkedIn account
                                • 10 AI-generated posts/month
                                • Basic analytics
                                • Post scheduling
                                • Email support

                                Pro

                                $29/per month

                                For professionals who want to grow their LinkedIn presence.

                                • 3 LinkedIn accounts
                                • 100 AI-generated posts/month
                                • Advanced analytics & insights
                                • Post scheduling & approval workflow
                                • WhatsApp approval notifications
                                • Priority support

                                Agency

                                $99/per month

                                For agencies managing multiple clients on LinkedIn.

                                • Unlimited LinkedIn accounts
                                • Unlimited AI-generated posts
                                • Full analytics & learning loop
                                • Team collaboration
                                • Custom approval workflows
                                • Dedicated support
                                • API access

                                All plans include a 14-day free trial. No credit card required.

                                  \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/pricing.meta b/phase-1-core-infra/frontend/.next/server/app/pricing.meta new file mode 100644 index 0000000000000000000000000000000000000000..8e2fdabc50b205f3720c64c29794a4a791697d7f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/pricing.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/pricing/layout,_N_T_/pricing/page,_N_T_/pricing" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/pricing.rsc b/phase-1-core-infra/frontend/.next/server/app/pricing.rsc new file mode 100644 index 0000000000000000000000000000000000000000..6a71a70573d41283773b9f7c2f558f7efe40d0ac --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/pricing.rsc @@ -0,0 +1,7 @@ +2:I[72972,["972","static/chunks/972-5b96c0591eeae4ee.js","979","static/chunks/app/pricing/page-52ae24507cae00b5.js"],""] +3:I[4707,[],""] +4:I[36423,[],""] +5:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["pricing",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["pricing",{"children":["__PAGE__",{},[["$L1",["$","div",null,{"className":"min-h-screen bg-gradient-to-b from-blue-50 to-white px-4 py-16","children":["$","div",null,{"className":"max-w-5xl mx-auto","children":[["$","div",null,{"className":"text-center mb-12","children":[["$","$L2",null,{"href":"/","className":"text-sm text-blue-600 hover:underline mb-4 inline-block","children":"← Back to Home"}],["$","h1",null,{"className":"text-4xl font-bold text-gray-900 mt-2","children":"Simple, Transparent Pricing"}],["$","p",null,{"className":"text-xl text-gray-600 mt-3","children":"Automate your LinkedIn presence with AI. No hidden fees."}]]}],["$","div",null,{"className":"grid md:grid-cols-3 gap-8","children":[["$","div","Starter",{"className":"rounded-2xl p-8 flex flex-col bg-white text-gray-900 shadow-sm border border-gray-100","children":[["$","div",null,{"className":"mb-6","children":[["$","h2",null,{"className":"text-xl font-bold mb-1 text-gray-900","children":"Starter"}],["$","div",null,{"className":"flex items-end gap-1 mb-3","children":[["$","span",null,{"className":"text-4xl font-bold text-gray-900","children":"$$0"}],["$","span",null,{"className":"text-sm mb-1 text-gray-500","children":["/","forever"]}]]}],["$","p",null,{"className":"text-sm text-gray-500","children":"Perfect for individuals getting started with LinkedIn automation."}]]}],["$","ul",null,{"className":"space-y-3 mb-8 flex-1","children":[["$","li","1 LinkedIn account",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"1 LinkedIn account"}]]}],["$","li","10 AI-generated posts/month",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"10 AI-generated posts/month"}]]}],["$","li","Basic analytics",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Basic analytics"}]]}],["$","li","Post scheduling",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Post scheduling"}]]}],["$","li","Email support",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Email support"}]]}]]}],["$","$L2",null,{"href":"/auth/register","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-11 rounded-md px-8 w-full","children":"Get Started"}]}]]}],["$","div","Pro",{"className":"rounded-2xl p-8 flex flex-col bg-blue-600 text-white shadow-xl scale-105","children":[["$","div",null,{"className":"mb-6","children":[["$","h2",null,{"className":"text-xl font-bold mb-1 text-white","children":"Pro"}],["$","div",null,{"className":"flex items-end gap-1 mb-3","children":[["$","span",null,{"className":"text-4xl font-bold text-white","children":"$$29"}],["$","span",null,{"className":"text-sm mb-1 text-blue-100","children":["/","per month"]}]]}],["$","p",null,{"className":"text-sm text-blue-100","children":"For professionals who want to grow their LinkedIn presence."}]]}],["$","ul",null,{"className":"space-y-3 mb-8 flex-1","children":[["$","li","3 LinkedIn accounts",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-200","children":"✓"}],["$","span",null,{"className":"text-blue-50","children":"3 LinkedIn accounts"}]]}],["$","li","100 AI-generated posts/month",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-200","children":"✓"}],["$","span",null,{"className":"text-blue-50","children":"100 AI-generated posts/month"}]]}],["$","li","Advanced analytics & insights",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-200","children":"✓"}],["$","span",null,{"className":"text-blue-50","children":"Advanced analytics & insights"}]]}],["$","li","Post scheduling & approval workflow",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-200","children":"✓"}],["$","span",null,{"className":"text-blue-50","children":"Post scheduling & approval workflow"}]]}],["$","li","WhatsApp approval notifications",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-200","children":"✓"}],["$","span",null,{"className":"text-blue-50","children":"WhatsApp approval notifications"}]]}],["$","li","Priority support",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-200","children":"✓"}],["$","span",null,{"className":"text-blue-50","children":"Priority support"}]]}]]}],["$","$L2",null,{"href":"/auth/register","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground hover:bg-secondary/80 h-11 rounded-md px-8 w-full","children":"Start Free Trial"}]}]]}],["$","div","Agency",{"className":"rounded-2xl p-8 flex flex-col bg-white text-gray-900 shadow-sm border border-gray-100","children":[["$","div",null,{"className":"mb-6","children":[["$","h2",null,{"className":"text-xl font-bold mb-1 text-gray-900","children":"Agency"}],["$","div",null,{"className":"flex items-end gap-1 mb-3","children":[["$","span",null,{"className":"text-4xl font-bold text-gray-900","children":"$$99"}],["$","span",null,{"className":"text-sm mb-1 text-gray-500","children":["/","per month"]}]]}],["$","p",null,{"className":"text-sm text-gray-500","children":"For agencies managing multiple clients on LinkedIn."}]]}],["$","ul",null,{"className":"space-y-3 mb-8 flex-1","children":[["$","li","Unlimited LinkedIn accounts",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Unlimited LinkedIn accounts"}]]}],["$","li","Unlimited AI-generated posts",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Unlimited AI-generated posts"}]]}],["$","li","Full analytics & learning loop",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Full analytics & learning loop"}]]}],["$","li","Team collaboration",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Team collaboration"}]]}],["$","li","Custom approval workflows",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Custom approval workflows"}]]}],["$","li","Dedicated support",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"Dedicated support"}]]}],["$","li","API access",{"className":"flex items-start gap-2 text-sm","children":[["$","span",null,{"className":"mt-0.5 text-blue-500","children":"✓"}],["$","span",null,{"className":"text-gray-700","children":"API access"}]]}]]}],["$","$L2",null,{"href":"/auth/register","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-11 rounded-md px-8 w-full","children":"Contact Sales"}]}]]}]]}],["$","p",null,{"className":"text-center text-sm text-gray-500 mt-10","children":"All plans include a 14-day free trial. No credit card required."}]]}]}],null],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","pricing","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L5",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":{}}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/pricing/page.js b/phase-1-core-infra/frontend/.next/server/app/pricing/page.js new file mode 100644 index 0000000000000000000000000000000000000000..2b8dd17c692c614caf7be7d4b054423cd51aebb8 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/pricing/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=979,e.ids=[979],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},93342:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>i.a,__next_app__:()=>p,originalPathname:()=>u,pages:()=>c,routeModule:()=>f,tree:()=>d}),r(4077),r(32029),r(35866);var o=r(23191),n=r(88716),s=r(37922),i=r.n(s),a=r(95231),l={};for(let e in a)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>a[e]);r.d(t,l);let d=["",{children:["pricing",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,4077)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\pricing\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\pricing\\page.tsx"],u="/pricing/page",p={require:r,loadChunk:()=>Promise.resolve()},f=new o.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/pricing/page",pathname:"/pricing",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},51409:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,79404,23))},4271:(e,t,r)=>{Promise.resolve().then(r.bind(r,86325))},86325:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>k});var o=r(10326),n=r(46465),s=r.n(n);r(23824);var i=r(17577),a=r(10592),l=r(79360),d=r(94019),c=r(51223);let u=a.zt,p=i.forwardRef(({className:e,...t},r)=>o.jsx(a.l_,{ref:r,className:(0,c.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));p.displayName=a.l_.displayName;let f=(0,l.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=i.forwardRef(({className:e,variant:t,...r},n)=>o.jsx(a.fC,{ref:n,className:(0,c.cn)(f({variant:t}),e),...r}));m.displayName=a.fC.displayName,i.forwardRef(({className:e,...t},r)=>o.jsx(a.aU,{ref:r,className:(0,c.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=a.aU.displayName;let g=i.forwardRef(({className:e,...t},r)=>o.jsx(a.x8,{ref:r,className:(0,c.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:o.jsx(d.Z,{className:"h-4 w-4"})}));g.displayName=a.x8.displayName;let b=i.forwardRef(({className:e,...t},r)=>o.jsx(a.Dx,{ref:r,className:(0,c.cn)("text-sm font-semibold",e),...t}));b.displayName=a.Dx.displayName;let h=i.forwardRef(({className:e,...t},r)=>o.jsx(a.dk,{ref:r,className:(0,c.cn)("text-sm opacity-90",e),...t}));h.displayName=a.dk.displayName;var x=r(56627);function v(){let{toasts:e}=(0,x.pm)();return(0,o.jsxs)(u,{children:[e.map(function({id:e,title:t,description:r,action:n,...s}){return(0,o.jsxs)(m,{...s,children:[(0,o.jsxs)("div",{className:"grid gap-1",children:[t&&o.jsx(b,{children:t}),r&&o.jsx(h,{children:r})]}),n,o.jsx(g,{})]},e)}),o.jsx(p,{})]})}var y=r(92876),w=r(74951),j=r(44976);function k({children:e}){let[t]=(0,i.useState)(()=>new w.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return o.jsx("html",{lang:"en",children:o.jsx("body",{className:s().className,children:o.jsx(j.aH,{client:t,children:(0,o.jsxs)(y.Ho,{children:[e,o.jsx(v,{})]})})})})}},92876:(e,t,r)=>{"use strict";r.d(t,{Ho:()=>a,aC:()=>l});var o=r(10326),n=r(17577),s=r(42357);let i=(0,n.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function a({children:e}){let[t,r]=(0,n.useState)(null),[a,l]=(0,n.useState)(null),[d,c]=(0,n.useState)(!0),u=async()=>{try{let e=await (0,s.Gg)();e?(r(e.user),l(e.session)):(r(null),l(null))}catch(e){r(null),l(null)}finally{c(!1)}};return o.jsx(i.Provider,{value:{user:t,session:a,loading:d,refetch:u},children:e})}function l(){return(0,n.useContext)(i)}},56627:(e,t,r)=>{"use strict";r.d(t,{pm:()=>p});var o=r(17577);let n=0,s=new Map,i=e=>{if(s.has(e))return;let t=setTimeout(()=>{s.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);s.set(e,t)},a=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?i(r):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=a(d,e),l.forEach(e=>{e(d)})}function u({...e}){let t=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function p(){let[e,t]=o.useState(d);return o.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,r)=>{"use strict";r.d(t,{Gg:()=>i,w7:()=>s});let o="http://127.0.0.1:8000",n={async signUp(e,t,r){let n=await fetch(`${o}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!n.ok)throw Error((await n.json()).detail||"Registration failed");return n.json()},async signIn(e,t){let r=await fetch(`${o}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${o}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${o}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};n.signUp,n.signIn;let s=n.signOut,i=n.getSession},51223:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var o=r(41135),n=r(31009);function s(...e){return(0,n.m6)((0,o.W)(e))}},57371:(e,t,r)=>{"use strict";r.d(t,{default:()=>n.a});var o=r(670),n=r.n(o)},670:(e,t,r)=>{"use strict";let{createProxy:o}=r(68570);e.exports=o("E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js")},32029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});let o=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},4077:(e,t,r)=>{"use strict";let o,n;r.r(t),r.d(t,{default:()=>K});var s=r(19510),i=r(57371),a=r(71159);function l(){return(l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{children:r,...o}=e,n=a.Children.toArray(r),s=n.find(p);if(s){let e=s.props.children,r=n.map(t=>t!==s?t:a.Children.count(e)>1?a.Children.only(null):(0,a.isValidElement)(e)?e.props.children:null);return(0,a.createElement)(c,l({},o,{ref:t}),(0,a.isValidElement)(e)?(0,a.cloneElement)(e,void 0,r):null)}return(0,a.createElement)(c,l({},o,{ref:t}),r)});d.displayName="Slot";let c=(0,a.forwardRef)((e,t)=>{let{children:r,...o}=e;return(0,a.isValidElement)(r)?(0,a.cloneElement)(r,{...function(e,t){let r={...t};for(let o in t){let n=e[o],s=t[o];/^on[A-Z]/.test(o)?n&&s?r[o]=(...e)=>{s(...e),n(...e)}:n&&(r[o]=n):"style"===o?r[o]={...n,...s}:"className"===o&&(r[o]=[n,s].filter(Boolean).join(" "))}return{...e,...r}}(o,r.props),ref:t?function(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(t,r.ref):r.ref}):a.Children.count(r)>1?a.Children.only(null):null});c.displayName="SlotClone";let u=({children:e})=>(0,a.createElement)(a.Fragment,null,e);function p(e){return(0,a.isValidElement)(e)&&e.type===u}function f(){for(var e,t,r=0,o="";r"boolean"==typeof e?"".concat(e):0===e?"0":e,g=/^\[(.+)\]$/;function b(e,t){let r=e;return t.split("-").forEach(e=>{r.nextPart.has(e)||r.nextPart.set(e,{nextPart:new Map,validators:[]}),r=r.nextPart.get(e)}),r}let h=/\s+/;function x(){let e,t,r=0,o="";for(;rt[e]||[];return t.isThemeGetter=!0,t}let y=/^\[(?:([a-z-]+):)?(.+)\]$/i,w=/^\d+\/\d+$/,j=new Set(["px","full","screen"]),k=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,N=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,S=/^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,A=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;function z(e){return E(e)||j.has(e)||w.test(e)}function P(e){return V(e,"length",U)}function E(e){return!!e&&!Number.isNaN(Number(e))}function T(e){return V(e,"number",E)}function I(e){return!!e&&Number.isInteger(Number(e))}function C(e){return e.endsWith("%")&&E(e.slice(0,-1))}function O(e){return y.test(e)}function _(e){return k.test(e)}let M=new Set(["length","size","percentage"]);function G(e){return V(e,M,F)}function $(e){return V(e,"position",F)}let R=new Set(["image","url"]);function D(e){return V(e,R,B)}function q(e){return V(e,"",W)}function L(){return!0}function V(e,t,r){let o=y.exec(e);return!!o&&(o[1]?"string"==typeof t?o[1]===t:t.has(o[1]):r(o[2]))}function U(e){return N.test(e)}function F(){return!1}function W(e){return S.test(e)}function B(e){return A.test(e)}Symbol.toStringTag;let H=function(e,...t){let r,o,n;let s=function(a){var l;return o=(r={cache:function(e){if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,r=new Map,o=new Map;function n(n,s){r.set(n,s),++t>e&&(t=0,o=r,r=new Map)}return{get(e){let t=r.get(e);return void 0!==t?t:void 0!==(t=o.get(e))?(n(e,t),t):void 0},set(e,t){r.has(e)?r.set(e,t):n(e,t)}}}((l=t.reduce((e,t)=>t(e),e())).cacheSize),splitModifiers:function(e){let t=e.separator,r=1===t.length,o=t[0],n=t.length;return function(e){let s;let i=[],a=0,l=0;for(let d=0;dl?s-l:void 0}}}(l),...function(e){let t=function(e){var t;let{theme:r,prefix:o}=e,n={nextPart:new Map,validators:[]};return(t=Object.entries(e.classGroups),o?t.map(([e,t])=>[e,t.map(e=>"string"==typeof e?o+e:"object"==typeof e?Object.fromEntries(Object.entries(e).map(([e,t])=>[o+e,t])):e)]):t).forEach(([e,t])=>{(function e(t,r,o,n){t.forEach(t=>{if("string"==typeof t){(""===t?r:b(r,t)).classGroupId=o;return}if("function"==typeof t){if(t.isThemeGetter){e(t(n),r,o,n);return}r.validators.push({validator:t,classGroupId:o});return}Object.entries(t).forEach(([t,s])=>{e(s,b(r,t),o,n)})})})(t,n,e,r)}),n}(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:function(e){let r=e.split("-");return""===r[0]&&1!==r.length&&r.shift(),function e(t,r){if(0===t.length)return r.classGroupId;let o=t[0],n=r.nextPart.get(o),s=n?e(t.slice(1),n):void 0;if(s)return s;if(0===r.validators.length)return;let i=t.join("-");return r.validators.find(({validator:e})=>e(i))?.classGroupId}(r,t)||function(e){if(g.test(e)){let t=g.exec(e)[1],r=t?.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}}(e)},getConflictingClassGroupIds:function(e,t){let n=r[e]||[];return t&&o[e]?[...n,...o[e]]:n}}}(l)}).cache.get,n=r.cache.set,s=i,i(a)};function i(e){let t=o(e);if(t)return t;let s=function(e,t){let{splitModifiers:r,getClassGroupId:o,getConflictingClassGroupIds:n}=t,s=new Set;return e.trim().split(h).map(e=>{let{modifiers:t,hasImportantModifier:n,baseClassName:s,maybePostfixModifierPosition:i}=r(e),a=o(i?s.substring(0,i):s),l=!!i;if(!a){if(!i||!(a=o(s)))return{isTailwindClass:!1,originalClassName:e};l=!1}let d=(function(e){if(e.length<=1)return e;let t=[],r=[];return e.forEach(e=>{"["===e[0]?(t.push(...r.sort(),e),r=[]):r.push(e)}),t.push(...r.sort()),t})(t).join(":");return{isTailwindClass:!0,modifierId:n?d+"!":d,classGroupId:a,originalClassName:e,hasPostfixModifier:l}}).reverse().filter(e=>{if(!e.isTailwindClass)return!0;let{modifierId:t,classGroupId:r,hasPostfixModifier:o}=e,i=t+r;return!s.has(i)&&(s.add(i),n(r,o).forEach(e=>s.add(t+e)),!0)}).reverse().map(e=>e.originalClassName).join(" ")}(e,r);return n(e,s),s}return function(){return s(x.apply(null,arguments))}}(function(){let e=v("colors"),t=v("spacing"),r=v("blur"),o=v("brightness"),n=v("borderColor"),s=v("borderRadius"),i=v("borderSpacing"),a=v("borderWidth"),l=v("contrast"),d=v("grayscale"),c=v("hueRotate"),u=v("invert"),p=v("gap"),f=v("gradientColorStops"),m=v("gradientColorStopPositions"),g=v("inset"),b=v("margin"),h=v("opacity"),x=v("padding"),y=v("saturate"),w=v("scale"),j=v("sepia"),k=v("skew"),N=v("space"),S=v("translate"),A=()=>["auto","contain","none"],M=()=>["auto","hidden","clip","visible","scroll"],R=()=>["auto",O,t],V=()=>[O,t],U=()=>["",z,P],F=()=>["auto",E,O],W=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],B=()=>["solid","dashed","dotted","double","none"],H=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity","plus-lighter"],J=()=>["start","end","center","between","around","evenly","stretch"],X=()=>["","0",O],Z=()=>["auto","avoid","all","avoid-page","page","left","right","column"],K=()=>[E,T],Q=()=>[E,O];return{cacheSize:500,separator:":",theme:{colors:[L],spacing:[z,P],blur:["none","",_,O],brightness:K(),borderColor:[e],borderRadius:["none","","full",_,O],borderSpacing:V(),borderWidth:U(),contrast:K(),grayscale:X(),hueRotate:Q(),invert:X(),gap:V(),gradientColorStops:[e],gradientColorStopPositions:[C,P],inset:R(),margin:R(),opacity:K(),padding:V(),saturate:K(),scale:K(),sepia:X(),skew:Q(),space:V(),translate:V()},classGroups:{aspect:[{aspect:["auto","square","video",O]}],container:["container"],columns:[{columns:[_]}],"break-after":[{"break-after":Z()}],"break-before":[{"break-before":Z()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...W(),O]}],overflow:[{overflow:M()}],"overflow-x":[{"overflow-x":M()}],"overflow-y":[{"overflow-y":M()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[g]}],"inset-x":[{"inset-x":[g]}],"inset-y":[{"inset-y":[g]}],start:[{start:[g]}],end:[{end:[g]}],top:[{top:[g]}],right:[{right:[g]}],bottom:[{bottom:[g]}],left:[{left:[g]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",I,O]}],basis:[{basis:R()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",O]}],grow:[{grow:X()}],shrink:[{shrink:X()}],order:[{order:["first","last","none",I,O]}],"grid-cols":[{"grid-cols":[L]}],"col-start-end":[{col:["auto",{span:["full",I,O]},O]}],"col-start":[{"col-start":F()}],"col-end":[{"col-end":F()}],"grid-rows":[{"grid-rows":[L]}],"row-start-end":[{row:["auto",{span:[I,O]},O]}],"row-start":[{"row-start":F()}],"row-end":[{"row-end":F()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",O]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",O]}],gap:[{gap:[p]}],"gap-x":[{"gap-x":[p]}],"gap-y":[{"gap-y":[p]}],"justify-content":[{justify:["normal",...J()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...J(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...J(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[x]}],px:[{px:[x]}],py:[{py:[x]}],ps:[{ps:[x]}],pe:[{pe:[x]}],pt:[{pt:[x]}],pr:[{pr:[x]}],pb:[{pb:[x]}],pl:[{pl:[x]}],m:[{m:[b]}],mx:[{mx:[b]}],my:[{my:[b]}],ms:[{ms:[b]}],me:[{me:[b]}],mt:[{mt:[b]}],mr:[{mr:[b]}],mb:[{mb:[b]}],ml:[{ml:[b]}],"space-x":[{"space-x":[N]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[N]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",O,t]}],"min-w":[{"min-w":[O,t,"min","max","fit"]}],"max-w":[{"max-w":[O,t,"none","full","min","max","fit","prose",{screen:[_]},_]}],h:[{h:[O,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[O,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[O,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[O,t,"auto","min","max","fit"]}],"font-size":[{text:["base",_,P]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",T]}],"font-family":[{font:[L]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",O]}],"line-clamp":[{"line-clamp":["none",E,T]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",z,O]}],"list-image":[{"list-image":["none",O]}],"list-style-type":[{list:["none","disc","decimal",O]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[h]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[h]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...B(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",z,P]}],"underline-offset":[{"underline-offset":["auto",z,O]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:V()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",O]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",O]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[h]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...W(),$]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",G]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},D]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[m]}],"gradient-via-pos":[{via:[m]}],"gradient-to-pos":[{to:[m]}],"gradient-from":[{from:[f]}],"gradient-via":[{via:[f]}],"gradient-to":[{to:[f]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[a]}],"border-w-x":[{"border-x":[a]}],"border-w-y":[{"border-y":[a]}],"border-w-s":[{"border-s":[a]}],"border-w-e":[{"border-e":[a]}],"border-w-t":[{"border-t":[a]}],"border-w-r":[{"border-r":[a]}],"border-w-b":[{"border-b":[a]}],"border-w-l":[{"border-l":[a]}],"border-opacity":[{"border-opacity":[h]}],"border-style":[{border:[...B(),"hidden"]}],"divide-x":[{"divide-x":[a]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[a]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[h]}],"divide-style":[{divide:B()}],"border-color":[{border:[n]}],"border-color-x":[{"border-x":[n]}],"border-color-y":[{"border-y":[n]}],"border-color-t":[{"border-t":[n]}],"border-color-r":[{"border-r":[n]}],"border-color-b":[{"border-b":[n]}],"border-color-l":[{"border-l":[n]}],"divide-color":[{divide:[n]}],"outline-style":[{outline:["",...B()]}],"outline-offset":[{"outline-offset":[z,O]}],"outline-w":[{outline:[z,P]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:U()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[h]}],"ring-offset-w":[{"ring-offset":[z,P]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",_,q]}],"shadow-color":[{shadow:[L]}],opacity:[{opacity:[h]}],"mix-blend":[{"mix-blend":H()}],"bg-blend":[{"bg-blend":H()}],filter:[{filter:["","none"]}],blur:[{blur:[r]}],brightness:[{brightness:[o]}],contrast:[{contrast:[l]}],"drop-shadow":[{"drop-shadow":["","none",_,O]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[c]}],invert:[{invert:[u]}],saturate:[{saturate:[y]}],sepia:[{sepia:[j]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[r]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[l]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[c]}],"backdrop-invert":[{"backdrop-invert":[u]}],"backdrop-opacity":[{"backdrop-opacity":[h]}],"backdrop-saturate":[{"backdrop-saturate":[y]}],"backdrop-sepia":[{"backdrop-sepia":[j]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",O]}],duration:[{duration:Q()}],ease:[{ease:["linear","in","out","in-out",O]}],delay:[{delay:Q()}],animate:[{animate:["none","spin","ping","pulse","bounce",O]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[w]}],"scale-x":[{"scale-x":[w]}],"scale-y":[{"scale-y":[w]}],rotate:[{rotate:[I,O]}],"translate-x":[{"translate-x":[S]}],"translate-y":[{"translate-y":[S]}],"skew-x":[{"skew-x":[k]}],"skew-y":[{"skew-y":[k]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",O]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",O]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":V()}],"scroll-mx":[{"scroll-mx":V()}],"scroll-my":[{"scroll-my":V()}],"scroll-ms":[{"scroll-ms":V()}],"scroll-me":[{"scroll-me":V()}],"scroll-mt":[{"scroll-mt":V()}],"scroll-mr":[{"scroll-mr":V()}],"scroll-mb":[{"scroll-mb":V()}],"scroll-ml":[{"scroll-ml":V()}],"scroll-p":[{"scroll-p":V()}],"scroll-px":[{"scroll-px":V()}],"scroll-py":[{"scroll-py":V()}],"scroll-ps":[{"scroll-ps":V()}],"scroll-pe":[{"scroll-pe":V()}],"scroll-pt":[{"scroll-pt":V()}],"scroll-pr":[{"scroll-pr":V()}],"scroll-pb":[{"scroll-pb":V()}],"scroll-pl":[{"scroll-pl":V()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",O]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[z,P,T]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}}),J=(o="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",n={variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}},e=>{var t;if((null==n?void 0:n.variants)==null)return f(o,null==e?void 0:e.class,null==e?void 0:e.className);let{variants:r,defaultVariants:s}=n,i=Object.keys(r).map(t=>{let o=null==e?void 0:e[t],n=null==s?void 0:s[t];if(null===o)return null;let i=m(o)||m(n);return r[t][i]}),a=e&&Object.entries(e).reduce((e,t)=>{let[r,o]=t;return void 0===o||(e[r]=o),e},{});return f(o,i,null==n?void 0:null===(t=n.compoundVariants)||void 0===t?void 0:t.reduce((e,t)=>{let{class:r,className:o,...n}=t;return Object.entries(n).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...s,...a}[t]):({...s,...a})[t]===r})?[...e,r,o]:e},[]),null==e?void 0:e.class,null==e?void 0:e.className)}),X=a.forwardRef(({className:e,variant:t,size:r,asChild:o=!1,...n},i)=>{let a=o?d:"button";return s.jsx(a,{className:function(...e){return H(f(e))}(J({variant:t,size:r,className:e})),ref:i,...n})});X.displayName="Button";let Z=[{name:"Starter",price:"$0",period:"forever",description:"Perfect for individuals getting started with LinkedIn automation.",features:["1 LinkedIn account","10 AI-generated posts/month","Basic analytics","Post scheduling","Email support"],cta:"Get Started",href:"/auth/register",highlighted:!1},{name:"Pro",price:"$29",period:"per month",description:"For professionals who want to grow their LinkedIn presence.",features:["3 LinkedIn accounts","100 AI-generated posts/month","Advanced analytics & insights","Post scheduling & approval workflow","WhatsApp approval notifications","Priority support"],cta:"Start Free Trial",href:"/auth/register",highlighted:!0},{name:"Agency",price:"$99",period:"per month",description:"For agencies managing multiple clients on LinkedIn.",features:["Unlimited LinkedIn accounts","Unlimited AI-generated posts","Full analytics & learning loop","Team collaboration","Custom approval workflows","Dedicated support","API access"],cta:"Contact Sales",href:"/auth/register",highlighted:!1}];function K(){return s.jsx("div",{className:"min-h-screen bg-gradient-to-b from-blue-50 to-white px-4 py-16",children:(0,s.jsxs)("div",{className:"max-w-5xl mx-auto",children:[(0,s.jsxs)("div",{className:"text-center mb-12",children:[s.jsx(i.default,{href:"/",className:"text-sm text-blue-600 hover:underline mb-4 inline-block",children:"← Back to Home"}),s.jsx("h1",{className:"text-4xl font-bold text-gray-900 mt-2",children:"Simple, Transparent Pricing"}),s.jsx("p",{className:"text-xl text-gray-600 mt-3",children:"Automate your LinkedIn presence with AI. No hidden fees."})]}),s.jsx("div",{className:"grid md:grid-cols-3 gap-8",children:Z.map(e=>(0,s.jsxs)("div",{className:`rounded-2xl p-8 flex flex-col ${e.highlighted?"bg-blue-600 text-white shadow-xl scale-105":"bg-white text-gray-900 shadow-sm border border-gray-100"}`,children:[(0,s.jsxs)("div",{className:"mb-6",children:[s.jsx("h2",{className:`text-xl font-bold mb-1 ${e.highlighted?"text-white":"text-gray-900"}`,children:e.name}),(0,s.jsxs)("div",{className:"flex items-end gap-1 mb-3",children:[s.jsx("span",{className:`text-4xl font-bold ${e.highlighted?"text-white":"text-gray-900"}`,children:e.price}),(0,s.jsxs)("span",{className:`text-sm mb-1 ${e.highlighted?"text-blue-100":"text-gray-500"}`,children:["/",e.period]})]}),s.jsx("p",{className:`text-sm ${e.highlighted?"text-blue-100":"text-gray-500"}`,children:e.description})]}),s.jsx("ul",{className:"space-y-3 mb-8 flex-1",children:e.features.map(t=>(0,s.jsxs)("li",{className:"flex items-start gap-2 text-sm",children:[s.jsx("span",{className:`mt-0.5 ${e.highlighted?"text-blue-200":"text-blue-500"}`,children:"✓"}),s.jsx("span",{className:e.highlighted?"text-blue-50":"text-gray-700",children:t})]},t))}),s.jsx(i.default,{href:e.href,children:s.jsx(X,{className:"w-full",variant:e.highlighted?"secondary":"default",size:"lg",children:e.cta})})]},e.name))}),s.jsx("p",{className:"text-center text-sm text-gray-500 mt-10",children:"All plans include a 14-day free trial. No credit card required."})]})})}},23824:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[276,448,404],()=>r(93342));module.exports=o})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/pricing/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/pricing/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..98eeaecf0d89b56c84b219c67ae0b24ec2f7fe1a --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/pricing/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../webpack-runtime.js","../../chunks/276.js","../../chunks/448.js","../../chunks/404.js","page_client-reference-manifest.js","../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/pricing/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/pricing/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..c86b9ee4350afa7173110530ba83fce33b145d40 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/pricing/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/pricing/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","979","static/chunks/app/pricing/page-52ae24507cae00b5.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","979","static/chunks/app/pricing/page-52ae24507cae00b5.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\pricing\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password.html b/phase-1-core-infra/frontend/.next/server/app/reset-password.html new file mode 100644 index 0000000000000000000000000000000000000000..b0e92ea6532850b2a9c8ff4cbfa99a0ea955845b --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password.meta b/phase-1-core-infra/frontend/.next/server/app/reset-password.meta new file mode 100644 index 0000000000000000000000000000000000000000..e6b7c059097ab100cbe9f4486c26d27c06b2125f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password.meta @@ -0,0 +1,6 @@ +{ + "status": 307, + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/reset-password/layout,_N_T_/reset-password/page,_N_T_/reset-password" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password.rsc b/phase-1-core-infra/frontend/.next/server/app/reset-password.rsc new file mode 100644 index 0000000000000000000000000000000000000000..ffb8cffb03d5f5812329ecfe071cab72166a909b --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password.rsc @@ -0,0 +1,7 @@ +3:I[4707,[],""] +4:I[36423,[],""] +5:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["reset-password",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["reset-password",{"children":["__PAGE__",{},[["$L1","$L2",null],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","reset-password","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L5",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":{}}]],null],null],["$L6",null]]]] +2:E{"digest":"NEXT_REDIRECT;replace;/auth/login;307;"} +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.html b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.html new file mode 100644 index 0000000000000000000000000000000000000000..2c1a2450032b24b59a34a10b8a4e58d00f9c0eb1 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.html @@ -0,0 +1 @@ +
                                  Loading...
                                    \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.meta b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.meta new file mode 100644 index 0000000000000000000000000000000000000000..8aa5e2f2528e67d9e25192b598c7b697c3899658 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/reset-password/layout,_N_T_/reset-password/confirm/layout,_N_T_/reset-password/confirm/page,_N_T_/reset-password/confirm" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.rsc b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.rsc new file mode 100644 index 0000000000000000000000000000000000000000..4bdf746690705eb7d4e9c2f5d376703545703d21 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm.rsc @@ -0,0 +1,9 @@ +2:I[19107,[],"ClientPageRoot"] +3:I[28224,["972","static/chunks/972-5b96c0591eeae4ee.js","935","static/chunks/app/reset-password/confirm/page-0ab3fa79ecb76936.js"],"default",1] +4:I[4707,[],""] +5:I[36423,[],""] +6:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +7:{} +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["reset-password",{"children":["confirm",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["reset-password",{"children":["confirm",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","reset-password","children","confirm","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","reset-password","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":"$7"}]],null],null],["$L8",null]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page.js b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page.js new file mode 100644 index 0000000000000000000000000000000000000000..04e324dab81b7754a804e6f13ce271abe8b2c170 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=935,e.ids=[935],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},34143:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>o.a,__next_app__:()=>p,originalPathname:()=>u,pages:()=>c,routeModule:()=>m,tree:()=>d}),s(79014),s(32029),s(35866);var r=s(23191),a=s(88716),n=s(37922),o=s.n(n),i=s(95231),l={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>i[e]);s.d(t,l);let d=["",{children:["reset-password",{children:["confirm",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,79014)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx"]}]},{}]},{}]},{layout:[()=>Promise.resolve().then(s.bind(s,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,35866,23)),"next/dist/client/components/not-found-error"]}],c=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx"],u="/reset-password/confirm/page",p={require:s,loadChunk:()=>Promise.resolve()},m=new r.AppPageRouteModule({definition:{kind:a.x.APP_PAGE,page:"/reset-password/confirm/page",pathname:"/reset-password/confirm",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,12994,23)),Promise.resolve().then(s.t.bind(s,96114,23)),Promise.resolve().then(s.t.bind(s,9727,23)),Promise.resolve().then(s.t.bind(s,79671,23)),Promise.resolve().then(s.t.bind(s,41868,23)),Promise.resolve().then(s.t.bind(s,84759,23))},4271:(e,t,s)=>{Promise.resolve().then(s.bind(s,86325))},97030:(e,t,s)=>{Promise.resolve().then(s.bind(s,90418))},90434:(e,t,s)=>{"use strict";s.d(t,{default:()=>a.a});var r=s(79404),a=s.n(r)},35047:(e,t,s)=>{"use strict";var r=s(77389);s.o(r,"usePathname")&&s.d(t,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}})},86325:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>N});var r=s(10326),a=s(46465),n=s.n(a);s(23824);var o=s(17577),i=s(10592),l=s(79360),d=s(94019),c=s(51223);let u=i.zt,p=o.forwardRef(({className:e,...t},s)=>r.jsx(i.l_,{ref:s,className:(0,c.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));p.displayName=i.l_.displayName;let m=(0,l.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),f=o.forwardRef(({className:e,variant:t,...s},a)=>r.jsx(i.fC,{ref:a,className:(0,c.cn)(m({variant:t}),e),...s}));f.displayName=i.fC.displayName,o.forwardRef(({className:e,...t},s)=>r.jsx(i.aU,{ref:s,className:(0,c.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let x=o.forwardRef(({className:e,...t},s)=>r.jsx(i.x8,{ref:s,className:(0,c.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:r.jsx(d.Z,{className:"h-4 w-4"})}));x.displayName=i.x8.displayName;let h=o.forwardRef(({className:e,...t},s)=>r.jsx(i.Dx,{ref:s,className:(0,c.cn)("text-sm font-semibold",e),...t}));h.displayName=i.Dx.displayName;let g=o.forwardRef(({className:e,...t},s)=>r.jsx(i.dk,{ref:s,className:(0,c.cn)("text-sm opacity-90",e),...t}));g.displayName=i.dk.displayName;var v=s(56627);function w(){let{toasts:e}=(0,v.pm)();return(0,r.jsxs)(u,{children:[e.map(function({id:e,title:t,description:s,action:a,...n}){return(0,r.jsxs)(f,{...n,children:[(0,r.jsxs)("div",{className:"grid gap-1",children:[t&&r.jsx(h,{children:t}),s&&r.jsx(g,{children:s})]}),a,r.jsx(x,{})]},e)}),r.jsx(p,{})]})}var y=s(92876),j=s(74951),b=s(44976);function N({children:e}){let[t]=(0,o.useState)(()=>new j.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return r.jsx("html",{lang:"en",children:r.jsx("body",{className:n().className,children:r.jsx(b.aH,{client:t,children:(0,r.jsxs)(y.Ho,{children:[e,r.jsx(w,{})]})})})})}},90418:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>l});var r=s(10326),a=s(17577),n=s(35047),o=s(90434);function i(){let e=(0,n.useRouter)();(0,n.useSearchParams)();let[t,s]=(0,a.useState)(""),[i,l]=(0,a.useState)(""),[d,c]=(0,a.useState)(!1),[u,p]=(0,a.useState)(!1),[m,f]=(0,a.useState)(""),[x,h]=(0,a.useState)(null),g=e=>e.length<8?"Password must be at least 8 characters":/[A-Z]/.test(e)?/[a-z]/.test(e)?/\d/.test(e)?null:"Password must contain at least one number":"Password must contain at least one lowercase letter":"Password must contain at least one uppercase letter",v=async s=>{if(s.preventDefault(),f(""),!x){f("Invalid reset token");return}let r=g(t);if(r){f(r);return}if(t!==i){f("Passwords do not match");return}c(!0);try{let s=await fetch("http://127.0.0.1:8000/api/v1/auth/password/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:x,password:t})});if(!s.ok){let e=await s.json();throw Error(e.detail||"Failed to reset password")}p(!0),setTimeout(()=>e.push("/login"),3e3)}catch(e){console.error("Password reset error:",e),f(e instanceof Error?e.message:"Failed to reset password")}finally{c(!1)}};return x||u?u?r.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8",children:r.jsx("div",{className:"max-w-md w-full space-y-8",children:(0,r.jsxs)("div",{className:"text-center",children:[r.jsx("div",{className:"mx-auto h-12 w-12 text-green-500",children:r.jsx("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"w-full h-full",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})}),r.jsx("h2",{className:"mt-6 text-3xl font-bold text-gray-900",children:"Password Reset Successful"}),r.jsx("p",{className:"mt-2 text-sm text-gray-600",children:"Your password has been reset successfully."}),r.jsx("p",{className:"mt-4 text-sm text-gray-500",children:"Redirecting to login..."})]})})}):r.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8",children:(0,r.jsxs)("div",{className:"max-w-md w-full space-y-8",children:[(0,r.jsxs)("div",{children:[r.jsx("h2",{className:"mt-6 text-center text-3xl font-bold text-gray-900",children:"Set New Password"}),r.jsx("p",{className:"mt-2 text-center text-sm text-gray-600",children:"Enter your new password below."})]}),(0,r.jsxs)("form",{className:"mt-8 space-y-6",onSubmit:v,children:[m&&r.jsx("div",{className:"rounded-md bg-red-50 p-4",children:r.jsx("p",{className:"text-sm text-red-800",children:m})}),(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[r.jsx("label",{htmlFor:"password",className:"sr-only",children:"New Password"}),r.jsx("input",{id:"password",name:"password",type:"password",autoComplete:"new-password",required:!0,value:t,onChange:e=>s(e.target.value),className:"appearance-none rounded-lg relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 focus:outline-none focus:ring-blue-500 focus:border-blue-500 focus:z-10 sm:text-sm",placeholder:"New password"})]}),(0,r.jsxs)("div",{children:[r.jsx("label",{htmlFor:"confirm-password",className:"sr-only",children:"Confirm Password"}),r.jsx("input",{id:"confirm-password",name:"confirm-password",type:"password",autoComplete:"new-password",required:!0,value:i,onChange:e=>l(e.target.value),className:"appearance-none rounded-lg relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 focus:outline-none focus:ring-blue-500 focus:border-blue-500 focus:z-10 sm:text-sm",placeholder:"Confirm password"})]})]}),(0,r.jsxs)("div",{className:"text-xs text-gray-500 space-y-1",children:[r.jsx("p",{children:"Password must contain:"}),(0,r.jsxs)("ul",{className:"list-disc list-inside",children:[r.jsx("li",{children:"At least 8 characters"}),r.jsx("li",{children:"One uppercase letter"}),r.jsx("li",{children:"One lowercase letter"}),r.jsx("li",{children:"One number"})]})]}),r.jsx("div",{children:r.jsx("button",{type:"submit",disabled:d,className:"group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed",children:d?"Resetting...":"Reset Password"})})]})]})}):r.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8",children:(0,r.jsxs)("div",{className:"max-w-md w-full space-y-8",children:[(0,r.jsxs)("div",{className:"text-center",children:[r.jsx("div",{className:"mx-auto h-12 w-12 text-red-500",children:r.jsx("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"w-full h-full",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),r.jsx("h2",{className:"mt-6 text-3xl font-bold text-gray-900",children:"Invalid Reset Link"}),r.jsx("p",{className:"mt-2 text-sm text-gray-600",children:"This password reset link is invalid or has expired."})]}),r.jsx("div",{className:"text-center",children:r.jsx(o.default,{href:"/reset-password",className:"text-sm font-medium text-blue-600 hover:text-blue-500",children:"Request a new reset link"})})]})})}function l(){return r.jsx(a.Suspense,{fallback:r.jsx("div",{children:"Loading..."}),children:r.jsx(i,{})})}},92876:(e,t,s)=>{"use strict";s.d(t,{Ho:()=>i,aC:()=>l});var r=s(10326),a=s(17577),n=s(42357);let o=(0,a.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,s]=(0,a.useState)(null),[i,l]=(0,a.useState)(null),[d,c]=(0,a.useState)(!0),u=async()=>{try{let e=await (0,n.Gg)();e?(s(e.user),l(e.session)):(s(null),l(null))}catch(e){s(null),l(null)}finally{c(!1)}};return r.jsx(o.Provider,{value:{user:t,session:i,loading:d,refetch:u},children:e})}function l(){return(0,a.useContext)(o)}},56627:(e,t,s)=>{"use strict";s.d(t,{pm:()=>p});var r=s(17577);let a=0,n=new Map,o=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?o(s):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=i(d,e),l.forEach(e=>{e(d)})}function u({...e}){let t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||s()}}}),{id:t,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function p(){let[e,t]=r.useState(d);return r.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,s)=>{"use strict";s.d(t,{Gg:()=>o,w7:()=>n});let r="http://127.0.0.1:8000",a={async signUp(e,t,s){let a=await fetch(`${r}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:s})});if(!a.ok)throw Error((await a.json()).detail||"Registration failed");return a.json()},async signIn(e,t){let s=await fetch(`${r}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!s.ok)throw Error((await s.json()).detail||"Login failed");return s.json()},async signOut(){if(!(await fetch(`${r}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${r}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};a.signUp,a.signIn;let n=a.signOut,o=a.getSession},51223:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var r=s(41135),a=s(31009);function n(...e){return(0,a.m6)((0,r.W)(e))}},32029:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},79014:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\reset-password\confirm\page.tsx#default`)},23824:()=>{}};var t=require("../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[276,448,404],()=>s(34143));module.exports=r})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..4b14479e547c416057703fda36cba77026f72074 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../webpack-runtime.js","../../../chunks/276.js","../../../chunks/448.js","../../../chunks/404.js","page_client-reference-manifest.js","../../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..b3eca7c9eef16b1eefed9633d35ad4c4ab4660e5 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/confirm/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/reset-password/confirm/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","935","static/chunks/app/reset-password/confirm/page-0ab3fa79ecb76936.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/page.js b/phase-1-core-infra/frontend/.next/server/app/reset-password/page.js new file mode 100644 index 0000000000000000000000000000000000000000..35876cf5983efa312891ad3b3b8d641f282b98bf --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=363,e.ids=[363],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},32569:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>f,originalPathname:()=>c,pages:()=>l,routeModule:()=>p,tree:()=>u}),r(37288),r(32029),r(35866);var n=r(23191),o=r(88716),s=r(37922),a=r.n(s),i=r(95231),d={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(d[e]=()=>i[e]);r.d(t,d);let u=["",{children:["reset-password",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,37288)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],l=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\page.tsx"],c="/reset-password/page",f={require:r,loadChunk:()=>Promise.resolve()},p=new n.AppPageRouteModule({definition:{kind:o.x.APP_PAGE,page:"/reset-password/page",pathname:"/reset-password",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:u}})},16958:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},4271:(e,t,r)=>{Promise.resolve().then(r.bind(r,86325))},35303:()=>{},86325:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>S});var n=r(10326),o=r(46465),s=r.n(o);r(23824);var a=r(17577),i=r(10592),d=r(79360),u=r(94019),l=r(51223);let c=i.zt,f=a.forwardRef(({className:e,...t},r)=>n.jsx(i.l_,{ref:r,className:(0,l.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));f.displayName=i.l_.displayName;let p=(0,d.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=a.forwardRef(({className:e,variant:t,...r},o)=>n.jsx(i.fC,{ref:o,className:(0,l.cn)(p({variant:t}),e),...r}));m.displayName=i.fC.displayName,a.forwardRef(({className:e,...t},r)=>n.jsx(i.aU,{ref:r,className:(0,l.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let g=a.forwardRef(({className:e,...t},r)=>n.jsx(i.x8,{ref:r,className:(0,l.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:n.jsx(u.Z,{className:"h-4 w-4"})}));g.displayName=i.x8.displayName;let h=a.forwardRef(({className:e,...t},r)=>n.jsx(i.Dx,{ref:r,className:(0,l.cn)("text-sm font-semibold",e),...t}));h.displayName=i.Dx.displayName;let v=a.forwardRef(({className:e,...t},r)=>n.jsx(i.dk,{ref:r,className:(0,l.cn)("text-sm opacity-90",e),...t}));v.displayName=i.dk.displayName;var y=r(56627);function x(){let{toasts:e}=(0,y.pm)();return(0,n.jsxs)(c,{children:[e.map(function({id:e,title:t,description:r,action:o,...s}){return(0,n.jsxs)(m,{...s,children:[(0,n.jsxs)("div",{className:"grid gap-1",children:[t&&n.jsx(h,{children:t}),r&&n.jsx(v,{children:r})]}),o,n.jsx(g,{})]},e)}),n.jsx(f,{})]})}var b=r(92876),j=r(74951),w=r(44976);function S({children:e}){let[t]=(0,a.useState)(()=>new j.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return n.jsx("html",{lang:"en",children:n.jsx("body",{className:s().className,children:n.jsx(w.aH,{client:t,children:(0,n.jsxs)(b.Ho,{children:[e,n.jsx(x,{})]})})})})}},92876:(e,t,r)=>{"use strict";r.d(t,{Ho:()=>i,aC:()=>d});var n=r(10326),o=r(17577),s=r(42357);let a=(0,o.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,r]=(0,o.useState)(null),[i,d]=(0,o.useState)(null),[u,l]=(0,o.useState)(!0),c=async()=>{try{let e=await (0,s.Gg)();e?(r(e.user),d(e.session)):(r(null),d(null))}catch(e){r(null),d(null)}finally{l(!1)}};return n.jsx(a.Provider,{value:{user:t,session:i,loading:u,refetch:c},children:e})}function d(){return(0,o.useContext)(a)}},56627:(e,t,r)=>{"use strict";r.d(t,{pm:()=>f});var n=r(17577);let o=0,s=new Map,a=e=>{if(s.has(e))return;let t=setTimeout(()=>{s.delete(e),l({type:"REMOVE_TOAST",toastId:e})},1e6);s.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?a(r):e.toasts.forEach(e=>{a(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},d=[],u={toasts:[]};function l(e){u=i(u,e),d.forEach(e=>{e(u)})}function c({...e}){let t=(o=(o+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>l({type:"DISMISS_TOAST",toastId:t});return l({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>l({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function f(){let[e,t]=n.useState(u);return n.useEffect(()=>(d.push(t),()=>{let e=d.indexOf(t);e>-1&&d.splice(e,1)}),[e]),{...e,toast:c,dismiss:e=>l({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,r)=>{"use strict";r.d(t,{Gg:()=>a,w7:()=>s});let n="http://127.0.0.1:8000",o={async signUp(e,t,r){let o=await fetch(`${n}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!o.ok)throw Error((await o.json()).detail||"Registration failed");return o.json()},async signIn(e,t){let r=await fetch(`${n}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${n}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${n}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};o.signUp,o.signIn;let s=o.signOut,a=o.getSession},51223:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var n=r(41135),o=r(31009);function s(...e){return(0,o.m6)((0,n.W)(e))}},58585:(e,t,r)=>{"use strict";var n=r(61085);r.o(n,"redirect")&&r.d(t,{redirect:function(){return n.redirect}})},61085:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return a},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(83953),o=r(16399);class s extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class a extends URLSearchParams{append(){throw new s}delete(){throw new s}set(){throw new s}sort(){throw new s}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8586:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83953:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return d},getRedirectStatusCodeFromError:function(){return m},getRedirectTypeFromError:function(){return p},getURLFromRedirectError:function(){return f},isRedirectError:function(){return c},permanentRedirect:function(){return l},redirect:function(){return u}});let o=r(54580),s=r(72934),a=r(8586),i="NEXT_REDIRECT";function d(e,t,r){void 0===r&&(r=a.RedirectStatusCode.TemporaryRedirect);let n=Error(i);n.digest=i+";"+t+";"+e+";"+r+";";let s=o.requestAsyncStorage.getStore();return s&&(n.mutableCookies=s.mutableCookies),n}function u(e,t){void 0===t&&(t="replace");let r=s.actionAsyncStorage.getStore();throw d(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.TemporaryRedirect)}function l(e,t){void 0===t&&(t="replace");let r=s.actionAsyncStorage.getStore();throw d(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.PermanentRedirect)}function c(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),s=Number(o);return t===i&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(s)&&s in a.RedirectStatusCode}function f(e){return c(e)?e.digest.split(";",3)[2]:null}function p(e){if(!c(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function m(e){if(!c(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},32029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},37288:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(58585);function o(){(0,n.redirect)("/auth/login")}},23824:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[276,448],()=>r(32569));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/reset-password/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..32af8f97da38d4d8f4b99f17543dc4939737c050 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../webpack-runtime.js","../../chunks/276.js","../../chunks/448.js","page_client-reference-manifest.js","../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/reset-password/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/reset-password/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..7d35956db8b1f73283ad7aa8469238915f5733e0 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/reset-password/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/reset-password/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/signup.html b/phase-1-core-infra/frontend/.next/server/app/signup.html new file mode 100644 index 0000000000000000000000000000000000000000..14104d7b6134592f603761e8d31477e302abc534 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/signup.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/signup.meta b/phase-1-core-infra/frontend/.next/server/app/signup.meta new file mode 100644 index 0000000000000000000000000000000000000000..17e8e9714adb49b2bfc59a58950b6ff983198487 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/signup.meta @@ -0,0 +1,6 @@ +{ + "status": 307, + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/signup/layout,_N_T_/signup/page,_N_T_/signup" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/signup.rsc b/phase-1-core-infra/frontend/.next/server/app/signup.rsc new file mode 100644 index 0000000000000000000000000000000000000000..72f758d8bd5a78d0a141b32e8e4af0f1dc29c4ee --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/signup.rsc @@ -0,0 +1,7 @@ +3:I[4707,[],""] +4:I[36423,[],""] +5:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["signup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["signup",{"children":["__PAGE__",{},[["$L1","$L2",null],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","signup","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L5",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":{}}]],null],null],["$L6",null]]]] +2:E{"digest":"NEXT_REDIRECT;replace;/auth/register;307;"} +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/signup/page.js b/phase-1-core-infra/frontend/.next/server/app/signup/page.js new file mode 100644 index 0000000000000000000000000000000000000000..e9bd9ce6122943758f045d20c998b4be086cc91f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/signup/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=966,e.ids=[966],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},21819:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>f,originalPathname:()=>c,pages:()=>l,routeModule:()=>p,tree:()=>d}),r(64839),r(32029),r(35866);var n=r(23191),o=r(88716),s=r(37922),a=r.n(s),i=r(95231),u={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(u[e]=()=>i[e]);r.d(t,u);let d=["",{children:["signup",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,64839)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\signup\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],l=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\signup\\page.tsx"],c="/signup/page",f={require:r,loadChunk:()=>Promise.resolve()},p=new n.AppPageRouteModule({definition:{kind:o.x.APP_PAGE,page:"/signup/page",pathname:"/signup",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},4271:(e,t,r)=>{Promise.resolve().then(r.bind(r,86325))},35303:()=>{},86325:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>_});var n=r(10326),o=r(46465),s=r.n(o);r(23824);var a=r(17577),i=r(10592),u=r(79360),d=r(94019),l=r(51223);let c=i.zt,f=a.forwardRef(({className:e,...t},r)=>n.jsx(i.l_,{ref:r,className:(0,l.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));f.displayName=i.l_.displayName;let p=(0,u.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),g=a.forwardRef(({className:e,variant:t,...r},o)=>n.jsx(i.fC,{ref:o,className:(0,l.cn)(p({variant:t}),e),...r}));g.displayName=i.fC.displayName,a.forwardRef(({className:e,...t},r)=>n.jsx(i.aU,{ref:r,className:(0,l.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let m=a.forwardRef(({className:e,...t},r)=>n.jsx(i.x8,{ref:r,className:(0,l.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:n.jsx(d.Z,{className:"h-4 w-4"})}));m.displayName=i.x8.displayName;let h=a.forwardRef(({className:e,...t},r)=>n.jsx(i.Dx,{ref:r,className:(0,l.cn)("text-sm font-semibold",e),...t}));h.displayName=i.Dx.displayName;let v=a.forwardRef(({className:e,...t},r)=>n.jsx(i.dk,{ref:r,className:(0,l.cn)("text-sm opacity-90",e),...t}));v.displayName=i.dk.displayName;var y=r(56627);function x(){let{toasts:e}=(0,y.pm)();return(0,n.jsxs)(c,{children:[e.map(function({id:e,title:t,description:r,action:o,...s}){return(0,n.jsxs)(g,{...s,children:[(0,n.jsxs)("div",{className:"grid gap-1",children:[t&&n.jsx(h,{children:t}),r&&n.jsx(v,{children:r})]}),o,n.jsx(m,{})]},e)}),n.jsx(f,{})]})}var b=r(92876),j=r(74951),S=r(44976);function _({children:e}){let[t]=(0,a.useState)(()=>new j.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return n.jsx("html",{lang:"en",children:n.jsx("body",{className:s().className,children:n.jsx(S.aH,{client:t,children:(0,n.jsxs)(b.Ho,{children:[e,n.jsx(x,{})]})})})})}},92876:(e,t,r)=>{"use strict";r.d(t,{Ho:()=>i,aC:()=>u});var n=r(10326),o=r(17577),s=r(42357);let a=(0,o.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,r]=(0,o.useState)(null),[i,u]=(0,o.useState)(null),[d,l]=(0,o.useState)(!0),c=async()=>{try{let e=await (0,s.Gg)();e?(r(e.user),u(e.session)):(r(null),u(null))}catch(e){r(null),u(null)}finally{l(!1)}};return n.jsx(a.Provider,{value:{user:t,session:i,loading:d,refetch:c},children:e})}function u(){return(0,o.useContext)(a)}},56627:(e,t,r)=>{"use strict";r.d(t,{pm:()=>f});var n=r(17577);let o=0,s=new Map,a=e=>{if(s.has(e))return;let t=setTimeout(()=>{s.delete(e),l({type:"REMOVE_TOAST",toastId:e})},1e6);s.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?a(r):e.toasts.forEach(e=>{a(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},u=[],d={toasts:[]};function l(e){d=i(d,e),u.forEach(e=>{e(d)})}function c({...e}){let t=(o=(o+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>l({type:"DISMISS_TOAST",toastId:t});return l({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>l({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function f(){let[e,t]=n.useState(d);return n.useEffect(()=>(u.push(t),()=>{let e=u.indexOf(t);e>-1&&u.splice(e,1)}),[e]),{...e,toast:c,dismiss:e=>l({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,r)=>{"use strict";r.d(t,{Gg:()=>a,w7:()=>s});let n="http://127.0.0.1:8000",o={async signUp(e,t,r){let o=await fetch(`${n}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!o.ok)throw Error((await o.json()).detail||"Registration failed");return o.json()},async signIn(e,t){let r=await fetch(`${n}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${n}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${n}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};o.signUp,o.signIn;let s=o.signOut,a=o.getSession},51223:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var n=r(41135),o=r(31009);function s(...e){return(0,o.m6)((0,n.W)(e))}},58585:(e,t,r)=>{"use strict";var n=r(61085);r.o(n,"redirect")&&r.d(t,{redirect:function(){return n.redirect}})},61085:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return a},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(83953),o=r(16399);class s extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class a extends URLSearchParams{append(){throw new s}delete(){throw new s}set(){throw new s}sort(){throw new s}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8586:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83953:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return u},getRedirectStatusCodeFromError:function(){return g},getRedirectTypeFromError:function(){return p},getURLFromRedirectError:function(){return f},isRedirectError:function(){return c},permanentRedirect:function(){return l},redirect:function(){return d}});let o=r(54580),s=r(72934),a=r(8586),i="NEXT_REDIRECT";function u(e,t,r){void 0===r&&(r=a.RedirectStatusCode.TemporaryRedirect);let n=Error(i);n.digest=i+";"+t+";"+e+";"+r+";";let s=o.requestAsyncStorage.getStore();return s&&(n.mutableCookies=s.mutableCookies),n}function d(e,t){void 0===t&&(t="replace");let r=s.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.TemporaryRedirect)}function l(e,t){void 0===t&&(t="replace");let r=s.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.PermanentRedirect)}function c(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),s=Number(o);return t===i&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(s)&&s in a.RedirectStatusCode}function f(e){return c(e)?e.digest.split(";",3)[2]:null}function p(e){if(!c(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function g(e){if(!c(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},32029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},64839:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(58585);function o(){(0,n.redirect)("/auth/register")}},23824:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[276,448],()=>r(21819));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/signup/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/signup/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..32af8f97da38d4d8f4b99f17543dc4939737c050 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/signup/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../webpack-runtime.js","../../chunks/276.js","../../chunks/448.js","page_client-reference-manifest.js","../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/signup/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/signup/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..e579511ed27c5aaeaa1b912cd3ce1a9880a3e138 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/signup/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/signup/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\signup\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/verify-email.html b/phase-1-core-infra/frontend/.next/server/app/verify-email.html new file mode 100644 index 0000000000000000000000000000000000000000..10ffa3f6122088b6b91621993c501c64839d2fce --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/verify-email.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/verify-email.meta b/phase-1-core-infra/frontend/.next/server/app/verify-email.meta new file mode 100644 index 0000000000000000000000000000000000000000..e80839cb50e4cdedd54b6c53bf6777b051522c33 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/verify-email.meta @@ -0,0 +1,6 @@ +{ + "status": 307, + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/verify-email/layout,_N_T_/verify-email/page,_N_T_/verify-email" + } +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/verify-email.rsc b/phase-1-core-infra/frontend/.next/server/app/verify-email.rsc new file mode 100644 index 0000000000000000000000000000000000000000..a2db051982decfc5072762a08d0b74c31c696e47 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/verify-email.rsc @@ -0,0 +1,7 @@ +3:I[4707,[],""] +4:I[36423,[],""] +5:I[83601,["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"default",1] +0:["_ZCPiTZXfhnfeDdShwrwt",[[["",{"children":["verify-email",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["verify-email",{"children":["__PAGE__",{},[["$L1","$L2",null],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","verify-email","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f4cab49cfd8d571c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","$L5",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}],"params":{}}]],null],null],["$L6",null]]]] +2:E{"digest":"NEXT_REDIRECT;replace;/auth/login;307;"} +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}]] +1:null diff --git a/phase-1-core-infra/frontend/.next/server/app/verify-email/page.js b/phase-1-core-infra/frontend/.next/server/app/verify-email/page.js new file mode 100644 index 0000000000000000000000000000000000000000..400ffda3876871fc578c00d6a326c9c82a96a151 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/verify-email/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=476,e.ids=[476],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},96307:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>f,originalPathname:()=>c,pages:()=>l,routeModule:()=>p,tree:()=>d}),r(48895),r(32029),r(35866);var n=r(23191),o=r(88716),s=r(37922),a=r.n(s),i=r(95231),u={};for(let e in i)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(u[e]=()=>i[e]);r.d(t,u);let d=["",{children:["verify-email",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,48895)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\verify-email\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,32029)),"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"]}],l=["E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\verify-email\\page.tsx"],c="/verify-email/page",f={require:r,loadChunk:()=>Promise.resolve()},p=new n.AppPageRouteModule({definition:{kind:o.x.APP_PAGE,page:"/verify-email/page",pathname:"/verify-email",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},16958:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},4271:(e,t,r)=>{Promise.resolve().then(r.bind(r,86325))},35303:()=>{},86325:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>_});var n=r(10326),o=r(46465),s=r.n(o);r(23824);var a=r(17577),i=r(10592),u=r(79360),d=r(94019),l=r(51223);let c=i.zt,f=a.forwardRef(({className:e,...t},r)=>n.jsx(i.l_,{ref:r,className:(0,l.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));f.displayName=i.l_.displayName;let p=(0,u.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=a.forwardRef(({className:e,variant:t,...r},o)=>n.jsx(i.fC,{ref:o,className:(0,l.cn)(p({variant:t}),e),...r}));m.displayName=i.fC.displayName,a.forwardRef(({className:e,...t},r)=>n.jsx(i.aU,{ref:r,className:(0,l.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let g=a.forwardRef(({className:e,...t},r)=>n.jsx(i.x8,{ref:r,className:(0,l.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:n.jsx(d.Z,{className:"h-4 w-4"})}));g.displayName=i.x8.displayName;let h=a.forwardRef(({className:e,...t},r)=>n.jsx(i.Dx,{ref:r,className:(0,l.cn)("text-sm font-semibold",e),...t}));h.displayName=i.Dx.displayName;let v=a.forwardRef(({className:e,...t},r)=>n.jsx(i.dk,{ref:r,className:(0,l.cn)("text-sm opacity-90",e),...t}));v.displayName=i.dk.displayName;var y=r(56627);function x(){let{toasts:e}=(0,y.pm)();return(0,n.jsxs)(c,{children:[e.map(function({id:e,title:t,description:r,action:o,...s}){return(0,n.jsxs)(m,{...s,children:[(0,n.jsxs)("div",{className:"grid gap-1",children:[t&&n.jsx(h,{children:t}),r&&n.jsx(v,{children:r})]}),o,n.jsx(g,{})]},e)}),n.jsx(f,{})]})}var b=r(92876),j=r(74951),S=r(44976);function _({children:e}){let[t]=(0,a.useState)(()=>new j.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return n.jsx("html",{lang:"en",children:n.jsx("body",{className:s().className,children:n.jsx(S.aH,{client:t,children:(0,n.jsxs)(b.Ho,{children:[e,n.jsx(x,{})]})})})})}},92876:(e,t,r)=>{"use strict";r.d(t,{Ho:()=>i,aC:()=>u});var n=r(10326),o=r(17577),s=r(42357);let a=(0,o.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,r]=(0,o.useState)(null),[i,u]=(0,o.useState)(null),[d,l]=(0,o.useState)(!0),c=async()=>{try{let e=await (0,s.Gg)();e?(r(e.user),u(e.session)):(r(null),u(null))}catch(e){r(null),u(null)}finally{l(!1)}};return n.jsx(a.Provider,{value:{user:t,session:i,loading:d,refetch:c},children:e})}function u(){return(0,o.useContext)(a)}},56627:(e,t,r)=>{"use strict";r.d(t,{pm:()=>f});var n=r(17577);let o=0,s=new Map,a=e=>{if(s.has(e))return;let t=setTimeout(()=>{s.delete(e),l({type:"REMOVE_TOAST",toastId:e})},1e6);s.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?a(r):e.toasts.forEach(e=>{a(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},u=[],d={toasts:[]};function l(e){d=i(d,e),u.forEach(e=>{e(d)})}function c({...e}){let t=(o=(o+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>l({type:"DISMISS_TOAST",toastId:t});return l({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>l({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function f(){let[e,t]=n.useState(d);return n.useEffect(()=>(u.push(t),()=>{let e=u.indexOf(t);e>-1&&u.splice(e,1)}),[e]),{...e,toast:c,dismiss:e=>l({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,r)=>{"use strict";r.d(t,{Gg:()=>a,w7:()=>s});let n="http://127.0.0.1:8000",o={async signUp(e,t,r){let o=await fetch(`${n}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!o.ok)throw Error((await o.json()).detail||"Registration failed");return o.json()},async signIn(e,t){let r=await fetch(`${n}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${n}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${n}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};o.signUp,o.signIn;let s=o.signOut,a=o.getSession},51223:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var n=r(41135),o=r(31009);function s(...e){return(0,o.m6)((0,n.W)(e))}},58585:(e,t,r)=>{"use strict";var n=r(61085);r.o(n,"redirect")&&r.d(t,{redirect:function(){return n.redirect}})},61085:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return a},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(83953),o=r(16399);class s extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class a extends URLSearchParams{append(){throw new s}delete(){throw new s}set(){throw new s}sort(){throw new s}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8586:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83953:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return u},getRedirectStatusCodeFromError:function(){return m},getRedirectTypeFromError:function(){return p},getURLFromRedirectError:function(){return f},isRedirectError:function(){return c},permanentRedirect:function(){return l},redirect:function(){return d}});let o=r(54580),s=r(72934),a=r(8586),i="NEXT_REDIRECT";function u(e,t,r){void 0===r&&(r=a.RedirectStatusCode.TemporaryRedirect);let n=Error(i);n.digest=i+";"+t+";"+e+";"+r+";";let s=o.requestAsyncStorage.getStore();return s&&(n.mutableCookies=s.mutableCookies),n}function d(e,t){void 0===t&&(t="replace");let r=s.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.TemporaryRedirect)}function l(e,t){void 0===t&&(t="replace");let r=s.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.PermanentRedirect)}function c(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),s=Number(o);return t===i&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(s)&&s in a.RedirectStatusCode}function f(e){return c(e)?e.digest.split(";",3)[2]:null}function p(e){if(!c(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function m(e){if(!c(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},32029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},48895:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(58585);function o(){(0,n.redirect)("/auth/login")}},23824:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[276,448],()=>r(96307));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/verify-email/page.js.nft.json b/phase-1-core-infra/frontend/.next/server/app/verify-email/page.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..32af8f97da38d4d8f4b99f17543dc4939737c050 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/verify-email/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../webpack-runtime.js","../../chunks/276.js","../../chunks/448.js","page_client-reference-manifest.js","../../../../package.json"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/app/verify-email/page_client-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/app/verify-email/page_client-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..9b7130d9c2b770ee1f0ffba4d439678e4a224ac4 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/app/verify-email/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/verify-email/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"17224":{"*":{"id":"41183","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"28224":{"*":{"id":"90418","name":"*","chunks":[],"async":false}},"32197":{"*":{"id":"2327","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"43104":{"*":{"id":"5595","name":"*","chunks":[],"async":false}},"50441":{"*":{"id":"59530","name":"*","chunks":[],"async":false}},"56370":{"*":{"id":"75668","name":"*","chunks":[],"async":false}},"58328":{"*":{"id":"57983","name":"*","chunks":[],"async":false}},"58696":{"*":{"id":"39191","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"61202":{"*":{"id":"47073","name":"*","chunks":[],"async":false}},"61840":{"*":{"id":"82851","name":"*","chunks":[],"async":false}},"72972":{"*":{"id":"79404","name":"*","chunks":[],"async":false}},"78626":{"*":{"id":"1166","name":"*","chunks":[],"async":false}},"83601":{"*":{"id":"86325","name":"*","chunks":[],"async":false}},"88507":{"*":{"id":"88252","name":"*","chunks":[],"async":false}},"90759":{"*":{"id":"5999","name":"*","chunks":[],"async":false}},"95761":{"*":{"id":"54864","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout.tsx":{"id":83601,"name":"*","chunks":["137","static/chunks/137-ba5a6ccb277ff542.js","418","static/chunks/418-9f199b27072bf0cb.js","185","static/chunks/app/layout-b73b0bd7fc73fea9.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\costs\\page.tsx":{"id":43104,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\users\\page.tsx":{"id":61840,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\health\\page.tsx":{"id":90759,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\admin\\page.tsx":{"id":56370,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\callback\\[provider]\\page.tsx":{"id":58696,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\login\\page.tsx":{"id":61202,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\auth\\register\\page.tsx":{"id":88507,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\esm\\client\\link.js":{"id":72972,"name":"*","chunks":["972","static/chunks/972-5b96c0591eeae4ee.js","931","static/chunks/app/page-c7c752bd2b96cbce.js"],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\reset-password\\confirm\\page.tsx":{"id":28224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\connected-accounts\\page.tsx":{"id":95761,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\layout.tsx":{"id":58328,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\components\\PostHistoryList.tsx":{"id":17224,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\page.tsx":{"id":50441,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\insights\\page.tsx":{"id":78626,"name":"*","chunks":[],"async":false},"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\dashboard\\content\\create\\page.tsx":{"id":32197,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\layout":["static/css/f4cab49cfd8d571c.css"],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\page":[],"E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\src\\app\\verify-email\\page":[]}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/chunks/22.js b/phase-1-core-infra/frontend/.next/server/chunks/22.js new file mode 100644 index 0000000000000000000000000000000000000000..b0ca2f6ce8c49ac194a16f68288e404d5c39166c --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/chunks/22.js @@ -0,0 +1 @@ +exports.id=22,exports.ids=[22],exports.modules={16958:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,12994,23)),Promise.resolve().then(r.t.bind(r,96114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,79671,23)),Promise.resolve().then(r.t.bind(r,41868,23)),Promise.resolve().then(r.t.bind(r,84759,23))},4271:(e,t,r)=>{Promise.resolve().then(r.bind(r,86325))},86325:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>j});var s=r(10326),a=r(46465),o=r.n(a);r(23824);var n=r(17577),i=r(10592),d=r(79360),l=r(94019),u=r(51223);let c=i.zt,f=n.forwardRef(({className:e,...t},r)=>s.jsx(i.l_,{ref:r,className:(0,u.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));f.displayName=i.l_.displayName;let p=(0,d.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=n.forwardRef(({className:e,variant:t,...r},a)=>s.jsx(i.fC,{ref:a,className:(0,u.cn)(p({variant:t}),e),...r}));m.displayName=i.fC.displayName,n.forwardRef(({className:e,...t},r)=>s.jsx(i.aU,{ref:r,className:(0,u.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=i.aU.displayName;let g=n.forwardRef(({className:e,...t},r)=>s.jsx(i.x8,{ref:r,className:(0,u.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:s.jsx(l.Z,{className:"h-4 w-4"})}));g.displayName=i.x8.displayName;let v=n.forwardRef(({className:e,...t},r)=>s.jsx(i.Dx,{ref:r,className:(0,u.cn)("text-sm font-semibold",e),...t}));v.displayName=i.Dx.displayName;let x=n.forwardRef(({className:e,...t},r)=>s.jsx(i.dk,{ref:r,className:(0,u.cn)("text-sm opacity-90",e),...t}));x.displayName=i.dk.displayName;var h=r(56627);function y(){let{toasts:e}=(0,h.pm)();return(0,s.jsxs)(c,{children:[e.map(function({id:e,title:t,description:r,action:a,...o}){return(0,s.jsxs)(m,{...o,children:[(0,s.jsxs)("div",{className:"grid gap-1",children:[t&&s.jsx(v,{children:t}),r&&s.jsx(x,{children:r})]}),a,s.jsx(g,{})]},e)}),s.jsx(f,{})]})}var b=r(92876),w=r(74951),N=r(44976);function j({children:e}){let[t]=(0,n.useState)(()=>new w.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return s.jsx("html",{lang:"en",children:s.jsx("body",{className:o().className,children:s.jsx(N.aH,{client:t,children:(0,s.jsxs)(b.Ho,{children:[e,s.jsx(y,{})]})})})})}},92876:(e,t,r)=>{"use strict";r.d(t,{Ho:()=>i,aC:()=>d});var s=r(10326),a=r(17577),o=r(42357);let n=(0,a.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i({children:e}){let[t,r]=(0,a.useState)(null),[i,d]=(0,a.useState)(null),[l,u]=(0,a.useState)(!0),c=async()=>{try{let e=await (0,o.Gg)();e?(r(e.user),d(e.session)):(r(null),d(null))}catch(e){r(null),d(null)}finally{u(!1)}};return s.jsx(n.Provider,{value:{user:t,session:i,loading:l,refetch:c},children:e})}function d(){return(0,a.useContext)(n)}},91664:(e,t,r)=>{"use strict";r.d(t,{z:()=>l});var s=r(10326),a=r(17577),o=r(34214),n=r(79360),i=r(51223);let d=(0,n.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),l=a.forwardRef(({className:e,variant:t,size:r,asChild:a=!1,...n},l)=>{let u=a?o.g7:"button";return s.jsx(u,{className:(0,i.cn)(d({variant:t,size:r,className:e})),ref:l,...n})});l.displayName="Button"},29752:(e,t,r)=>{"use strict";r.d(t,{Ol:()=>i,SZ:()=>l,Zb:()=>n,aY:()=>u,eW:()=>c,ll:()=>d});var s=r(10326),a=r(17577),o=r(51223);let n=a.forwardRef(({className:e,...t},r)=>s.jsx("div",{ref:r,className:(0,o.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",e),...t}));n.displayName="Card";let i=a.forwardRef(({className:e,...t},r)=>s.jsx("div",{ref:r,className:(0,o.cn)("flex flex-col space-y-1.5 p-6",e),...t}));i.displayName="CardHeader";let d=a.forwardRef(({className:e,...t},r)=>s.jsx("h3",{ref:r,className:(0,o.cn)("text-2xl font-semibold leading-none tracking-tight",e),...t}));d.displayName="CardTitle";let l=a.forwardRef(({className:e,...t},r)=>s.jsx("p",{ref:r,className:(0,o.cn)("text-sm text-muted-foreground",e),...t}));l.displayName="CardDescription";let u=a.forwardRef(({className:e,...t},r)=>s.jsx("div",{ref:r,className:(0,o.cn)("p-6 pt-0",e),...t}));u.displayName="CardContent";let c=a.forwardRef(({className:e,...t},r)=>s.jsx("div",{ref:r,className:(0,o.cn)("flex items-center p-6 pt-0",e),...t}));c.displayName="CardFooter"},41190:(e,t,r)=>{"use strict";r.d(t,{I:()=>n});var s=r(10326),a=r(17577),o=r(51223);let n=a.forwardRef(({className:e,type:t,...r},a)=>s.jsx("input",{type:t,className:(0,o.cn)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:a,...r}));n.displayName="Input"},56627:(e,t,r)=>{"use strict";r.d(t,{pm:()=>f});var s=r(17577);let a=0,o=new Map,n=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),u({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?n(r):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},d=[],l={toasts:[]};function u(e){l=i(l,e),d.forEach(e=>{e(l)})}function c({...e}){let t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>u({type:"DISMISS_TOAST",toastId:t});return u({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>u({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function f(){let[e,t]=s.useState(l);return s.useEffect(()=>(d.push(t),()=>{let e=d.indexOf(t);e>-1&&d.splice(e,1)}),[e]),{...e,toast:c,dismiss:e=>u({type:"DISMISS_TOAST",toastId:e})}}},42357:(e,t,r)=>{"use strict";r.d(t,{Gg:()=>n,w7:()=>o});let s="http://127.0.0.1:8000",a={async signUp(e,t,r){let a=await fetch(`${s}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!a.ok)throw Error((await a.json()).detail||"Registration failed");return a.json()},async signIn(e,t){let r=await fetch(`${s}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch(`${s}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${s}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};a.signUp,a.signIn;let o=a.signOut,n=a.getSession},51223:(e,t,r)=>{"use strict";r.d(t,{cn:()=>o});var s=r(41135),a=r(31009);function o(...e){return(0,a.m6)((0,s.W)(e))}},32029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});let s=(0,r(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},23824:()=>{}}; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/chunks/276.js b/phase-1-core-infra/frontend/.next/server/chunks/276.js new file mode 100644 index 0000000000000000000000000000000000000000..d8d6f588437187efd7037139d236966d3bdfb4aa --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/chunks/276.js @@ -0,0 +1,2 @@ +exports.id=276,exports.ids=[276],exports.modules={48839:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bootstrap:function(){return s},error:function(){return c},event:function(){return g},info:function(){return p},prefixes:function(){return a},ready:function(){return d},trace:function(){return f},wait:function(){return u},warn:function(){return l},warnOnce:function(){return v}});let n=r(91354),a={wait:(0,n.white)((0,n.bold)("○")),error:(0,n.red)((0,n.bold)("⨯")),warn:(0,n.yellow)((0,n.bold)("⚠")),ready:"▲",info:(0,n.white)((0,n.bold)(" ")),event:(0,n.green)((0,n.bold)("✓")),trace:(0,n.magenta)((0,n.bold)("\xbb"))},o={log:"log",warn:"warn",error:"error"};function i(e,...t){(""===t[0]||void 0===t[0])&&1===t.length&&t.shift();let r=e in o?o[e]:"log",n=a[e];0===t.length?console[r](""):console[r](" "+n,...t)}function s(...e){console.log(" ",...e)}function u(...e){i("wait",...e)}function c(...e){i("error",...e)}function l(...e){i("warn",...e)}function d(...e){i("ready",...e)}function p(...e){i("info",...e)}function g(...e){i("event",...e)}function f(...e){i("trace",...e)}let _=new Set;function v(...e){_.has(e[0])||(_.add(e.join(" ")),l(...e))}},44789:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DynamicServerError:function(){return n},isDynamicServerError:function(){return a}});let r="DYNAMIC_SERVER_USAGE";class n extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=r}}function a(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24618:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{StaticGenBailoutError:function(){return n},isStaticGenBailoutError:function(){return a}});let r="NEXT_STATIC_GEN_BAILOUT";class n extends Error{constructor(...e){super(...e),this.code=r}}function a(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},27482:e=>{(()=>{"use strict";var t={491:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ContextAPI=void 0;let n=r(223),a=r(172),o=r(930),i="context",s=new n.NoopContextManager;class u{constructor(){}static getInstance(){return this._instance||(this._instance=new u),this._instance}setGlobalContextManager(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,a.getGlobal)(i)||s}disable(){this._getContextManager().disable(),(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.ContextAPI=u},930:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagAPI=void 0;let n=r(56),a=r(912),o=r(957),i=r(172);class s{constructor(){function e(e){return function(...t){let r=(0,i.getGlobal)("diag");if(r)return r[e](...t)}}let t=this;t.setLogger=(e,r={logLevel:o.DiagLogLevel.INFO})=>{var n,s,u;if(e===t){let e=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return t.error(null!==(n=e.stack)&&void 0!==n?n:e.message),!1}"number"==typeof r&&(r={logLevel:r});let c=(0,i.getGlobal)("diag"),l=(0,a.createLogLevelDiagLogger)(null!==(s=r.logLevel)&&void 0!==s?s:o.DiagLogLevel.INFO,e);if(c&&!r.suppressOverrideMessage){let e=null!==(u=Error().stack)&&void 0!==u?u:"";c.warn(`Current logger will be overwritten from ${e}`),l.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,i.registerGlobal)("diag",l,t,!0)},t.disable=()=>{(0,i.unregisterGlobal)("diag",t)},t.createComponentLogger=e=>new n.DiagComponentLogger(e),t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}static instance(){return this._instance||(this._instance=new s),this._instance}}t.DiagAPI=s},653:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MetricsAPI=void 0;let n=r(660),a=r(172),o=r(930),i="metrics";class s{constructor(){}static getInstance(){return this._instance||(this._instance=new s),this._instance}setGlobalMeterProvider(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}getMeterProvider(){return(0,a.getGlobal)(i)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.MetricsAPI=s},181:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PropagationAPI=void 0;let n=r(172),a=r(874),o=r(194),i=r(277),s=r(369),u=r(930),c="propagation",l=new a.NoopTextMapPropagator;class d{constructor(){this.createBaggage=s.createBaggage,this.getBaggage=i.getBaggage,this.getActiveBaggage=i.getActiveBaggage,this.setBaggage=i.setBaggage,this.deleteBaggage=i.deleteBaggage}static getInstance(){return this._instance||(this._instance=new d),this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(c,e,u.DiagAPI.instance())}inject(e,t,r=o.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=o.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(c,u.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(c)||l}}t.PropagationAPI=d},997:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceAPI=void 0;let n=r(172),a=r(846),o=r(139),i=r(607),s=r(930),u="trace";class c{constructor(){this._proxyTracerProvider=new a.ProxyTracerProvider,this.wrapSpanContext=o.wrapSpanContext,this.isSpanContextValid=o.isSpanContextValid,this.deleteSpan=i.deleteSpan,this.getSpan=i.getSpan,this.getActiveSpan=i.getActiveSpan,this.getSpanContext=i.getSpanContext,this.setSpan=i.setSpan,this.setSpanContext=i.setSpanContext}static getInstance(){return this._instance||(this._instance=new c),this._instance}setGlobalTracerProvider(e){let t=(0,n.registerGlobal)(u,this._proxyTracerProvider,s.DiagAPI.instance());return t&&this._proxyTracerProvider.setDelegate(e),t}getTracerProvider(){return(0,n.getGlobal)(u)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(u,s.DiagAPI.instance()),this._proxyTracerProvider=new a.ProxyTracerProvider}}t.TraceAPI=c},277:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;let n=r(491),a=(0,r(780).createContextKey)("OpenTelemetry Baggage Key");function o(e){return e.getValue(a)||void 0}t.getBaggage=o,t.getActiveBaggage=function(){return o(n.ContextAPI.getInstance().active())},t.setBaggage=function(e,t){return e.setValue(a,t)},t.deleteBaggage=function(e){return e.deleteValue(a)}},993:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaggageImpl=void 0;class r{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){let t=this._entries.get(e);if(t)return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map(([e,t])=>[e,t])}setEntry(e,t){let n=new r(this._entries);return n._entries.set(e,t),n}removeEntry(e){let t=new r(this._entries);return t._entries.delete(e),t}removeEntries(...e){let t=new r(this._entries);for(let r of e)t._entries.delete(r);return t}clear(){return new r}}t.BaggageImpl=r},830:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataSymbol=void 0,t.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")},369:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataFromString=t.createBaggage=void 0;let n=r(930),a=r(993),o=r(830),i=n.DiagAPI.instance();t.createBaggage=function(e={}){return new a.BaggageImpl(new Map(Object.entries(e)))},t.baggageEntryMetadataFromString=function(e){return"string"!=typeof e&&(i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`),e=""),{__TYPE__:o.baggageEntryMetadataSymbol,toString:()=>e}}},67:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.context=void 0;let n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopContextManager=void 0;let n=r(780);class a{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=a},780:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ROOT_CONTEXT=t.createContextKey=void 0,t.createContextKey=function(e){return Symbol.for(e)};class r{constructor(e){let t=this;t._currentContext=e?new Map(e):new Map,t.getValue=e=>t._currentContext.get(e),t.setValue=(e,n)=>{let a=new r(t._currentContext);return a._currentContext.set(e,n),a},t.deleteValue=e=>{let n=new r(t._currentContext);return n._currentContext.delete(e),n}}}t.ROOT_CONTEXT=new r},506:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.diag=void 0;let n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagComponentLogger=void 0;let n=r(172);class a{constructor(e){this._namespace=e.namespace||"DiagComponentLogger"}debug(...e){return o("debug",this._namespace,e)}error(...e){return o("error",this._namespace,e)}info(...e){return o("info",this._namespace,e)}warn(...e){return o("warn",this._namespace,e)}verbose(...e){return o("verbose",this._namespace,e)}}function o(e,t,r){let a=(0,n.getGlobal)("diag");if(a)return r.unshift(t),a[e](...r)}t.DiagComponentLogger=a},972:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagConsoleLogger=void 0;let r=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];class n{constructor(){for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.createLogLevelDiagLogger=void 0;let n=r(957);t.createLogLevelDiagLogger=function(e,t){function r(r,n){let a=t[r];return"function"==typeof a&&e>=n?a.bind(t):function(){}}return en.DiagLogLevel.ALL&&(e=n.DiagLogLevel.ALL),t=t||{},{error:r("error",n.DiagLogLevel.ERROR),warn:r("warn",n.DiagLogLevel.WARN),info:r("info",n.DiagLogLevel.INFO),debug:r("debug",n.DiagLogLevel.DEBUG),verbose:r("verbose",n.DiagLogLevel.VERBOSE)}}},957:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagLogLevel=void 0,function(e){e[e.NONE=0]="NONE",e[e.ERROR=30]="ERROR",e[e.WARN=50]="WARN",e[e.INFO=60]="INFO",e[e.DEBUG=70]="DEBUG",e[e.VERBOSE=80]="VERBOSE",e[e.ALL=9999]="ALL"}(t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;let n=r(200),a=r(521),o=r(130),i=a.VERSION.split(".")[0],s=Symbol.for(`opentelemetry.js.api.${i}`),u=n._globalThis;t.registerGlobal=function(e,t,r,n=!1){var o;let i=u[s]=null!==(o=u[s])&&void 0!==o?o:{version:a.VERSION};if(!n&&i[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return r.error(t.stack||t.message),!1}if(i.version!==a.VERSION){let t=Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`);return r.error(t.stack||t.message),!1}return i[e]=t,r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`),!0},t.getGlobal=function(e){var t,r;let n=null===(t=u[s])||void 0===t?void 0:t.version;if(n&&(0,o.isCompatible)(n))return null===(r=u[s])||void 0===r?void 0:r[e]},t.unregisterGlobal=function(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);let r=u[s];r&&delete r[e]}},130:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isCompatible=t._makeCompatibilityCheck=void 0;let n=r(521),a=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function o(e){let t=new Set([e]),r=new Set,n=e.match(a);if(!n)return()=>!1;let o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(null!=o.prerelease)return function(t){return t===e};function i(e){return r.add(e),!1}return function(e){if(t.has(e))return!0;if(r.has(e))return!1;let n=e.match(a);if(!n)return i(e);let s={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};return null!=s.prerelease||o.major!==s.major?i(e):0===o.major?o.minor===s.minor&&o.patch<=s.patch?(t.add(e),!0):i(e):o.minor<=s.minor?(t.add(e),!0):i(e)}}t._makeCompatibilityCheck=o,t.isCompatible=o(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.metrics=void 0;let n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueType=void 0,function(e){e[e.INT=0]="INT",e[e.DOUBLE=1]="DOUBLE"}(t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class r{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=r;class n{}t.NoopMetric=n;class a extends n{add(e,t){}}t.NoopCounterMetric=a;class o extends n{add(e,t){}}t.NoopUpDownCounterMetric=o;class i extends n{record(e,t){}}t.NoopHistogramMetric=i;class s{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=s;class u extends s{}t.NoopObservableCounterMetric=u;class c extends s{}t.NoopObservableGaugeMetric=c;class l extends s{}t.NoopObservableUpDownCounterMetric=l,t.NOOP_METER=new r,t.NOOP_COUNTER_METRIC=new a,t.NOOP_HISTOGRAM_METRIC=new i,t.NOOP_UP_DOWN_COUNTER_METRIC=new o,t.NOOP_OBSERVABLE_COUNTER_METRIC=new u,t.NOOP_OBSERVABLE_GAUGE_METRIC=new c,t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new l,t.createNoopMeter=function(){return t.NOOP_METER}},660:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;let n=r(102);class a{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=a,t.NOOP_METER_PROVIDER=new a},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),a(r(46),t)},651:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t._globalThis=void 0,t._globalThis="object"==typeof globalThis?globalThis:global},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),a(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.propagation=void 0;let n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTextMapPropagator=void 0;class r{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=r},194:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultTextMapSetter=t.defaultTextMapGetter=void 0,t.defaultTextMapGetter={get(e,t){if(null!=e)return e[t]},keys:e=>null==e?[]:Object.keys(e)},t.defaultTextMapSetter={set(e,t,r){null!=e&&(e[t]=r)}}},845:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.trace=void 0;let n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonRecordingSpan=void 0;let n=r(476);class a{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}}t.NonRecordingSpan=a},614:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracer=void 0;let n=r(491),a=r(607),o=r(403),i=r(139),s=n.ContextAPI.getInstance();class u{startSpan(e,t,r=s.active()){if(null==t?void 0:t.root)return new o.NonRecordingSpan;let n=r&&(0,a.getSpanContext)(r);return"object"==typeof n&&"string"==typeof n.spanId&&"string"==typeof n.traceId&&"number"==typeof n.traceFlags&&(0,i.isSpanContextValid)(n)?new o.NonRecordingSpan(n):new o.NonRecordingSpan}startActiveSpan(e,t,r,n){let o,i,u;if(arguments.length<2)return;2==arguments.length?u=t:3==arguments.length?(o=t,u=r):(o=t,i=r,u=n);let c=null!=i?i:s.active(),l=this.startSpan(e,o,c),d=(0,a.setSpan)(c,l);return s.with(d,u,void 0,l)}}t.NoopTracer=u},124:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracerProvider=void 0;let n=r(614);class a{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=a},125:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracer=void 0;let n=new(r(614)).NoopTracer;class a{constructor(e,t,r,n){this._provider=e,this.name=t,this.version=r,this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){let a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):n}}t.ProxyTracer=a},846:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracerProvider=void 0;let n=r(125),a=new(r(124)).NoopTracerProvider;class o{getTracer(e,t,r){var a;return null!==(a=this.getDelegateTracer(e,t,r))&&void 0!==a?a:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return null!==(e=this._delegate)&&void 0!==e?e:a}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return null===(n=this._delegate)||void 0===n?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=o},996:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SamplingDecision=void 0,function(e){e[e.NOT_RECORD=0]="NOT_RECORD",e[e.RECORD=1]="RECORD",e[e.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"}(t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;let n=r(780),a=r(403),o=r(491),i=(0,n.createContextKey)("OpenTelemetry Context Key SPAN");function s(e){return e.getValue(i)||void 0}function u(e,t){return e.setValue(i,t)}t.getSpan=s,t.getActiveSpan=function(){return s(o.ContextAPI.getInstance().active())},t.setSpan=u,t.deleteSpan=function(e){return e.deleteValue(i)},t.setSpanContext=function(e,t){return u(e,new a.NonRecordingSpan(t))},t.getSpanContext=function(e){var t;return null===(t=s(e))||void 0===t?void 0:t.spanContext()}},325:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceStateImpl=void 0;let n=r(564);class a{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let r=this._clone();return r._internalState.has(e)&&r._internalState.delete(e),r._internalState.set(e,t),r}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+"="+this.get(t)),e),[]).join(",")}_parse(e){!(e.length>512)&&(this._internalState=e.split(",").reverse().reduce((e,t)=>{let r=t.trim(),a=r.indexOf("=");if(-1!==a){let o=r.slice(0,a),i=r.slice(a+1,t.length);(0,n.validateKey)(o)&&(0,n.validateValue)(i)&&e.set(o,i)}return e},new Map),this._internalState.size>32&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,32))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let e=new a;return e._internalState=new Map(this._internalState),e}}t.TraceStateImpl=a},564:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateValue=t.validateKey=void 0;let r="[_0-9a-z-*/]",n=`[a-z]${r}{0,255}`,a=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`,o=RegExp(`^(?:${n}|${a})$`),i=/^[ -~]{0,255}[!-~]$/,s=/,|=/;t.validateKey=function(e){return o.test(e)},t.validateValue=function(e){return i.test(e)&&!s.test(e)}},98:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTraceState=void 0;let n=r(325);t.createTraceState=function(e){return new n.TraceStateImpl(e)}},476:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;let n=r(475);t.INVALID_SPANID="0000000000000000",t.INVALID_TRACEID="00000000000000000000000000000000",t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanKind=void 0,function(e){e[e.INTERNAL=0]="INTERNAL",e[e.SERVER=1]="SERVER",e[e.CLIENT=2]="CLIENT",e[e.PRODUCER=3]="PRODUCER",e[e.CONSUMER=4]="CONSUMER"}(t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;let n=r(476),a=r(403),o=/^([0-9a-f]{32})$/i,i=/^[0-9a-f]{16}$/i;function s(e){return o.test(e)&&e!==n.INVALID_TRACEID}function u(e){return i.test(e)&&e!==n.INVALID_SPANID}t.isValidTraceId=s,t.isValidSpanId=u,t.isSpanContextValid=function(e){return s(e.traceId)&&u(e.spanId)},t.wrapSpanContext=function(e){return new a.NonRecordingSpan(e)}},847:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanStatusCode=void 0,function(e){e[e.UNSET=0]="UNSET",e[e.OK=1]="OK",e[e.ERROR=2]="ERROR"}(t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceFlags=void 0,function(e){e[e.NONE=0]="NONE",e[e.SAMPLED=1]="SAMPLED"}(t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,t.VERSION="1.6.0"}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={exports:{}},i=!0;try{t[e].call(o.exports,o,o.exports,n),i=!1}finally{i&&delete r[e]}return o.exports}n.ab=__dirname+"/";var a={};(()=>{Object.defineProperty(a,"__esModule",{value:!0}),a.trace=a.propagation=a.metrics=a.diag=a.context=a.INVALID_SPAN_CONTEXT=a.INVALID_TRACEID=a.INVALID_SPANID=a.isValidSpanId=a.isValidTraceId=a.isSpanContextValid=a.createTraceState=a.TraceFlags=a.SpanStatusCode=a.SpanKind=a.SamplingDecision=a.ProxyTracerProvider=a.ProxyTracer=a.defaultTextMapSetter=a.defaultTextMapGetter=a.ValueType=a.createNoopMeter=a.DiagLogLevel=a.DiagConsoleLogger=a.ROOT_CONTEXT=a.createContextKey=a.baggageEntryMetadataFromString=void 0;var e=n(369);Object.defineProperty(a,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return e.baggageEntryMetadataFromString}});var t=n(780);Object.defineProperty(a,"createContextKey",{enumerable:!0,get:function(){return t.createContextKey}}),Object.defineProperty(a,"ROOT_CONTEXT",{enumerable:!0,get:function(){return t.ROOT_CONTEXT}});var r=n(972);Object.defineProperty(a,"DiagConsoleLogger",{enumerable:!0,get:function(){return r.DiagConsoleLogger}});var o=n(957);Object.defineProperty(a,"DiagLogLevel",{enumerable:!0,get:function(){return o.DiagLogLevel}});var i=n(102);Object.defineProperty(a,"createNoopMeter",{enumerable:!0,get:function(){return i.createNoopMeter}});var s=n(901);Object.defineProperty(a,"ValueType",{enumerable:!0,get:function(){return s.ValueType}});var u=n(194);Object.defineProperty(a,"defaultTextMapGetter",{enumerable:!0,get:function(){return u.defaultTextMapGetter}}),Object.defineProperty(a,"defaultTextMapSetter",{enumerable:!0,get:function(){return u.defaultTextMapSetter}});var c=n(125);Object.defineProperty(a,"ProxyTracer",{enumerable:!0,get:function(){return c.ProxyTracer}});var l=n(846);Object.defineProperty(a,"ProxyTracerProvider",{enumerable:!0,get:function(){return l.ProxyTracerProvider}});var d=n(996);Object.defineProperty(a,"SamplingDecision",{enumerable:!0,get:function(){return d.SamplingDecision}});var p=n(357);Object.defineProperty(a,"SpanKind",{enumerable:!0,get:function(){return p.SpanKind}});var g=n(847);Object.defineProperty(a,"SpanStatusCode",{enumerable:!0,get:function(){return g.SpanStatusCode}});var f=n(475);Object.defineProperty(a,"TraceFlags",{enumerable:!0,get:function(){return f.TraceFlags}});var _=n(98);Object.defineProperty(a,"createTraceState",{enumerable:!0,get:function(){return _.createTraceState}});var v=n(139);Object.defineProperty(a,"isSpanContextValid",{enumerable:!0,get:function(){return v.isSpanContextValid}}),Object.defineProperty(a,"isValidTraceId",{enumerable:!0,get:function(){return v.isValidTraceId}}),Object.defineProperty(a,"isValidSpanId",{enumerable:!0,get:function(){return v.isValidSpanId}});var b=n(476);Object.defineProperty(a,"INVALID_SPANID",{enumerable:!0,get:function(){return b.INVALID_SPANID}}),Object.defineProperty(a,"INVALID_TRACEID",{enumerable:!0,get:function(){return b.INVALID_TRACEID}}),Object.defineProperty(a,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return b.INVALID_SPAN_CONTEXT}});let h=n(67);Object.defineProperty(a,"context",{enumerable:!0,get:function(){return h.context}});let S=n(506);Object.defineProperty(a,"diag",{enumerable:!0,get:function(){return S.diag}});let m=n(886);Object.defineProperty(a,"metrics",{enumerable:!0,get:function(){return m.metrics}});let E=n(939);Object.defineProperty(a,"propagation",{enumerable:!0,get:function(){return E.propagation}});let y=n(845);Object.defineProperty(a,"trace",{enumerable:!0,get:function(){return y.trace}}),a.default={context:h.context,diag:S.diag,metrics:m.metrics,propagation:E.propagation,trace:y.trace}})(),e.exports=a})()},11943:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_SUFFIX:function(){return u},APP_DIR_ALIAS:function(){return N},CACHE_ONE_YEAR:function(){return m},DOT_NEXT_ALIAS:function(){return P},ESLINT_DEFAULT_DIRS:function(){return X},GSP_NO_RETURNED_VALUE:function(){return B},GSSP_COMPONENT_MEMBER_ERROR:function(){return H},GSSP_NO_RETURNED_VALUE:function(){return U},INSTRUMENTATION_HOOK_FILENAME:function(){return O},MIDDLEWARE_FILENAME:function(){return E},MIDDLEWARE_LOCATION_REGEXP:function(){return y},NEXT_BODY_SUFFIX:function(){return d},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return S},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return f},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return _},NEXT_CACHE_SOFT_TAGS_HEADER:function(){return g},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return h},NEXT_CACHE_TAGS_HEADER:function(){return p},NEXT_CACHE_TAG_MAX_ITEMS:function(){return v},NEXT_CACHE_TAG_MAX_LENGTH:function(){return b},NEXT_DATA_SUFFIX:function(){return c},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return n},NEXT_META_SUFFIX:function(){return l},NEXT_QUERY_PARAM_PREFIX:function(){return r},NON_STANDARD_NODE_ENV:function(){return $},PAGES_DIR_ALIAS:function(){return R},PRERENDER_REVALIDATE_HEADER:function(){return a},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return o},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return w},ROOT_DIR_ALIAS:function(){return T},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return M},RSC_ACTION_ENCRYPTION_ALIAS:function(){return I},RSC_ACTION_PROXY_ALIAS:function(){return A},RSC_ACTION_VALIDATE_ALIAS:function(){return C},RSC_MOD_REF_PROXY_ALIAS:function(){return x},RSC_PREFETCH_SUFFIX:function(){return i},RSC_SUFFIX:function(){return s},SERVER_PROPS_EXPORT_ERROR:function(){return V},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return L},SERVER_PROPS_SSG_CONFLICT:function(){return j},SERVER_RUNTIME:function(){return K},SSG_FALLBACK_EXPORT_ERROR:function(){return k},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return D},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return G},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return F},WEBPACK_LAYERS:function(){return Y},WEBPACK_RESOURCE_QUERIES:function(){return q}});let r="nxtP",n="nxtI",a="x-prerender-revalidate",o="x-prerender-revalidate-if-generated",i=".prefetch.rsc",s=".rsc",u=".action",c=".json",l=".meta",d=".body",p="x-next-cache-tags",g="x-next-cache-soft-tags",f="x-next-revalidated-tags",_="x-next-revalidate-tag-token",v=128,b=256,h=1024,S="_N_T_",m=31536e3,E="middleware",y=`(?:src/)?${E}`,O="instrumentation",R="private-next-pages",P="private-dot-next",T="private-next-root-dir",N="private-next-app-dir",x="next/dist/build/webpack/loaders/next-flight-loader/module-proxy",C="private-next-rsc-action-validate",A="private-next-rsc-server-reference",I="private-next-rsc-action-encryption",M="private-next-rsc-action-client-wrapper",w="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",D="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",L="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",j="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",G="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",V="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",B="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",U="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",F="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",H="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",$='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',k="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",X=["app","pages","components","lib","src"],K={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},W={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",api:"api",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route",appRouteHandler:"app-route-handler"},Y={...W,GROUP:{serverOnly:[W.reactServerComponents,W.actionBrowser,W.appMetadataRoute,W.appRouteHandler,W.instrument],clientOnly:[W.serverSideRendering,W.appPagesBrowser],nonClientServerTarget:[W.middleware,W.api],app:[W.reactServerComponents,W.actionBrowser,W.appMetadataRoute,W.appRouteHandler,W.serverSideRendering,W.appPagesBrowser,W.shared,W.instrument]}},q={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},91354:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bgBlack:function(){return T},bgBlue:function(){return A},bgCyan:function(){return M},bgGreen:function(){return x},bgMagenta:function(){return I},bgRed:function(){return N},bgWhite:function(){return w},bgYellow:function(){return C},black:function(){return v},blue:function(){return m},bold:function(){return c},cyan:function(){return O},dim:function(){return l},gray:function(){return P},green:function(){return h},hidden:function(){return f},inverse:function(){return g},italic:function(){return d},magenta:function(){return E},purple:function(){return y},red:function(){return b},reset:function(){return u},strikethrough:function(){return _},underline:function(){return p},white:function(){return R},yellow:function(){return S}});let{env:n,stdout:a}=(null==(r=globalThis)?void 0:r.process)??{},o=n&&!n.NO_COLOR&&(n.FORCE_COLOR||(null==a?void 0:a.isTTY)&&!n.CI&&"dumb"!==n.TERM),i=(e,t,r,n)=>{let a=e.substring(0,n)+r,o=e.substring(n+t.length),s=o.indexOf(t);return~s?a+i(o,t,r,s):a+o},s=(e,t,r=e)=>o?n=>{let a=""+n,o=a.indexOf(t,e.length);return~o?e+i(a,t,r,o)+t:e+a+t}:String,u=o?e=>`\x1b[0m${e}\x1b[0m`:String,c=s("\x1b[1m","\x1b[22m","\x1b[22m\x1b[1m"),l=s("\x1b[2m","\x1b[22m","\x1b[22m\x1b[2m"),d=s("\x1b[3m","\x1b[23m"),p=s("\x1b[4m","\x1b[24m"),g=s("\x1b[7m","\x1b[27m"),f=s("\x1b[8m","\x1b[28m"),_=s("\x1b[9m","\x1b[29m"),v=s("\x1b[30m","\x1b[39m"),b=s("\x1b[31m","\x1b[39m"),h=s("\x1b[32m","\x1b[39m"),S=s("\x1b[33m","\x1b[39m"),m=s("\x1b[34m","\x1b[39m"),E=s("\x1b[35m","\x1b[39m"),y=s("\x1b[38;2;173;127;168m","\x1b[39m"),O=s("\x1b[36m","\x1b[39m"),R=s("\x1b[37m","\x1b[39m"),P=s("\x1b[90m","\x1b[39m"),T=s("\x1b[40m","\x1b[49m"),N=s("\x1b[41m","\x1b[49m"),x=s("\x1b[42m","\x1b[49m"),C=s("\x1b[43m","\x1b[49m"),A=s("\x1b[44m","\x1b[49m"),I=s("\x1b[45m","\x1b[49m"),M=s("\x1b[46m","\x1b[49m"),w=s("\x1b[47m","\x1b[49m")},38834:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getPathname:function(){return n},isFullStringUrl:function(){return a},parseUrl:function(){return o}});let r="http://n";function n(e){return new URL(e,r).pathname}function a(e){return/https?:\/\//.test(e)}function o(e){let t;try{t=new URL(e,r)}catch{}return t}},6278:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return b},createPrerenderState:function(){return u},formatDynamicAPIAccesses:function(){return _},markCurrentScopeAsDynamic:function(){return c},trackDynamicDataAccessed:function(){return l},trackDynamicFetch:function(){return p},usedDynamicAPIs:function(){return f}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(71159)),a=r(44789),o=r(24618),i=r(38834),s="function"==typeof n.default.unstable_postpone;function u(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function c(e,t){let r=(0,i.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new o.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)g(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new a.DynamicServerError(`Route ${r} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}}function l(e,t){let r=(0,i.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${r} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new o.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)g(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new a.DynamicServerError(`Route ${r} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}function d({reason:e,prerenderState:t,pathname:r}){g(t,e,r)}function p(e,t){e.prerenderState&&g(e.prerenderState,t,e.urlPathname)}function g(e,t,r){v();let a=`Route ${r} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),n.default.unstable_postpone(a)}function f(e){return e.dynamicAccesses.length>0}function _(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: +${t}`))}function v(){if(!s)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function b(e){v();let t=new AbortController;try{n.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},88716:(e,t)=>{"use strict";var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},23191:(e,t,r)=>{"use strict";e.exports=r(20399)},71159:(e,t,r)=>{"use strict";e.exports=r(23191).vendored["react-rsc"].React},14300:(e,t)=>{"use strict";function r(e){if(!e.body)return[e,e];let[t,r]=e.body.tee(),n=new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers});Object.defineProperty(n,"url",{value:e.url});let a=new Response(r,{status:e.status,statusText:e.statusText,headers:e.headers});return Object.defineProperty(a,"url",{value:e.url}),[n,a]}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"cloneResponse",{enumerable:!0,get:function(){return r}})},99585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createDedupeFetch",{enumerable:!0,get:function(){return i}});let n=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=a?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}(r(71159)),a=r(14300);function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}function i(e){let t=n.cache(e=>[]);return function(r,n){let o,i;if(n&&n.signal)return e(r,n);if("string"!=typeof r||n){let t="string"==typeof r||r instanceof URL?new Request(r,n):r;if("GET"!==t.method&&"HEAD"!==t.method||t.keepalive)return e(r,n);i=JSON.stringify([t.method,Array.from(t.headers.entries()),t.mode,t.redirect,t.credentials,t.referrer,t.referrerPolicy,t.integrity]),o=t.url}else i='["GET",[],null,"follow",null,null,null,null]',o=r;let s=t(o);for(let e=0,t=s.length;e{let t=s[e][2];if(!t)throw Error("No cached response");let[r,n]=(0,a.cloneResponse)(t);return s[e][2]=n,r})}let u=new AbortController,c=e(r,{...n,signal:u.signal}),l=[i,c,null];return s.push(l),c.then(e=>{let[t,r]=(0,a.cloneResponse)(e);return l[2]=r,t})}}},60670:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addImplicitTags:function(){return f},patchFetch:function(){return v},validateRevalidate:function(){return d},validateTags:function(){return p}});let n=r(71376),a=r(64994),o=r(11943),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=l(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(48839)),s=r(6278),u=r(99585),c=r(14300);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(l=function(e){return e?r:t})(e)}function d(e,t){try{let r;if(!1===e)r=e;else if("number"==typeof e&&!isNaN(e)&&e>-1)r=e;else if(void 0!==e)throw Error(`Invalid revalidate value "${e}" on "${t}", must be a non-negative number or "false"`);return r}catch(e){if(e instanceof Error&&e.message.includes("Invalid revalidate"))throw e;return}}function p(e,t){let r=[],n=[];for(let a=0;ao.NEXT_CACHE_TAG_MAX_LENGTH?n.push({tag:i,reason:`exceeded max length of ${o.NEXT_CACHE_TAG_MAX_LENGTH}`}):r.push(i),r.length>o.NEXT_CACHE_TAG_MAX_ITEMS){console.warn(`Warning: exceeded max tag count for ${t}, dropped tags:`,e.slice(a).join(", "));break}}if(n.length>0)for(let{tag:e,reason:r}of(console.warn(`Warning: invalid tags passed to ${t}: `),n))console.log(`tag: "${e}" ${r}`);return r}let g=e=>{let t=["/layout"];if(e.startsWith("/")){let r=e.split("/");for(let e=1;e{var g,v;let b;try{(b=new URL(u instanceof Request?u.url:u)).username="",b.password=""}catch{b=void 0}let h=(null==b?void 0:b.href)??"",S=Date.now(),m=(null==l?void 0:null==(g=l.method)?void 0:g.toUpperCase())||"GET",E=(null==l?void 0:null==(v=l.next)?void 0:v.internal)===!0,y="1"===process.env.NEXT_OTEL_FETCH_DISABLED;return(0,a.getTracer)().trace(E?n.NextNodeServerSpan.internalFetch:n.AppRenderSpan.fetch,{hideSpan:y,kind:a.SpanKind.CLIENT,spanName:["fetch",m,h].filter(Boolean).join(" "),attributes:{"http.url":h,"http.method":m,"net.peer.name":null==b?void 0:b.hostname,"net.peer.port":(null==b?void 0:b.port)||void 0}},async()=>{var n;let a,g,v;if(E)return e(u,l);let b=r.getStore();if(!b||b.isDraftMode)return e(u,l);let m=u&&"object"==typeof u&&"string"==typeof u.method,y=e=>(null==l?void 0:l[e])||(m?u[e]:null),O=e=>{var t,r,n;return void 0!==(null==l?void 0:null==(t=l.next)?void 0:t[e])?null==l?void 0:null==(r=l.next)?void 0:r[e]:m?null==(n=u.next)?void 0:n[e]:void 0},R=O("revalidate"),P=p(O("tags")||[],`fetch ${u.toString()}`);if(Array.isArray(P))for(let e of(b.tags||(b.tags=[]),P))b.tags.includes(e)||b.tags.push(e);let T=f(b),N=b.fetchCache,x=!!b.isUnstableNoStore,C=y("cache"),A="";"string"==typeof C&&void 0!==R&&(m&&"default"===C||i.warn(`fetch for ${h} on ${b.urlPathname} specified "cache: ${C}" and "revalidate: ${R}", only one should be specified.`),C=void 0),"force-cache"===C?R=!1:("no-cache"===C||"no-store"===C||"force-no-store"===N||"only-no-store"===N)&&(R=0),("no-cache"===C||"no-store"===C)&&(A=`cache: ${C}`),v=d(R,b.urlPathname);let I=y("headers"),M="function"==typeof(null==I?void 0:I.get)?I:new Headers(I||{}),w=M.get("authorization")||M.get("cookie"),D=!["get","head"].includes((null==(n=y("method"))?void 0:n.toLowerCase())||"get"),L=(w||D)&&0===b.revalidate;switch(N){case"force-no-store":A="fetchCache = force-no-store";break;case"only-no-store":if("force-cache"===C||void 0!==v&&(!1===v||v>0))throw Error(`cache: 'force-cache' used on fetch for ${h} with 'export const fetchCache = 'only-no-store'`);A="fetchCache = only-no-store";break;case"only-cache":if("no-store"===C)throw Error(`cache: 'no-store' used on fetch for ${h} with 'export const fetchCache = 'only-cache'`);break;case"force-cache":(void 0===R||0===R)&&(A="fetchCache = force-cache",v=!1)}void 0===v?"default-cache"===N?(v=!1,A="fetchCache = default-cache"):L?(v=0,A="auto no cache"):"default-no-store"===N?(v=0,A="fetchCache = default-no-store"):x?(v=0,A="noStore call"):(A="auto cache",v="boolean"!=typeof b.revalidate&&void 0!==b.revalidate&&b.revalidate):A||(A=`revalidate: ${v}`),b.forceStatic&&0===v||L||void 0!==b.revalidate&&("number"!=typeof v||!1!==b.revalidate&&("number"!=typeof b.revalidate||!(v0||!1===v;if(b.incrementalCache&&j)try{a=await b.incrementalCache.fetchCacheKey(h,m?u:l)}catch(e){console.error("Failed to generate cache key for",u)}let G=b.nextFetchId??1;b.nextFetchId=G+1;let V="number"!=typeof v?o.CACHE_ONE_YEAR:v,B=async(t,r)=>{let n=["cache","credentials","headers","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","window","duplex",...t?[]:["signal"]];if(m){let e=u,t={body:e._ogBody||e.body};for(let r of n)t[r]=e[r];u=new Request(e.url,t)}else if(l){let{_ogBody:e,body:r,signal:n,...a}=l;l={...a,body:e||r,signal:t?void 0:n}}let o={...l,next:{...null==l?void 0:l.next,fetchType:"origin",fetchIdx:G}};return e(u,o).then(async e=>{if(t||_(b,{start:S,url:h,cacheReason:r||A,cacheStatus:0===v||r?"skip":"miss",status:e.status,method:o.method||"GET"}),200===e.status&&b.incrementalCache&&a&&j){let t=Buffer.from(await e.arrayBuffer());try{await b.incrementalCache.set(a,{kind:"FETCH",data:{headers:Object.fromEntries(e.headers.entries()),body:t.toString("base64"),status:e.status,url:e.url},revalidate:V},{fetchCache:!0,revalidate:v,fetchUrl:h,fetchIdx:G,tags:P})}catch(e){console.warn("Failed to set fetch cache",u,e)}let r=new Response(t,{headers:new Headers(e.headers),status:e.status});return Object.defineProperty(r,"url",{value:e.url}),r}return e})},U=()=>Promise.resolve(),F=!1;if(a&&b.incrementalCache){U=await b.incrementalCache.lock(a);let e=b.isOnDemandRevalidate?null:await b.incrementalCache.get(a,{kindHint:"fetch",revalidate:v,fetchUrl:h,fetchIdx:G,tags:P,softTags:T});if(e?await U():g="cache-control: no-cache (hard refresh)",(null==e?void 0:e.value)&&"FETCH"===e.value.kind){if(b.isRevalidate&&e.isStale)F=!0;else{if(e.isStale&&(b.pendingRevalidates??={},!b.pendingRevalidates[a])){let e=B(!0).then(async e=>({body:await e.arrayBuffer(),headers:e.headers,status:e.status,statusText:e.statusText})).finally(()=>{b.pendingRevalidates??={},delete b.pendingRevalidates[a||""]});e.catch(console.error),b.pendingRevalidates[a]=e}let t=e.value.data;_(b,{start:S,url:h,cacheReason:A,cacheStatus:"hit",status:t.status||200,method:(null==l?void 0:l.method)||"GET"});let r=new Response(Buffer.from(t.body,"base64"),{headers:t.headers,status:t.status});return Object.defineProperty(r,"url",{value:e.value.data.url}),r}}}if(b.isStaticGeneration&&l&&"object"==typeof l){let{cache:e}=l;if(!b.forceStatic&&"no-store"===e){let e=`no-store fetch ${u}${b.urlPathname?` ${b.urlPathname}`:""}`;(0,s.trackDynamicFetch)(b,e),b.revalidate=0;let r=new t(e);throw b.dynamicUsageErr=r,b.dynamicUsageDescription=e,r}let r="next"in l,{next:n={}}=l;if("number"==typeof n.revalidate&&(void 0===b.revalidate||"number"==typeof b.revalidate&&n.revalidate{let t=e[0];return{body:await t.arrayBuffer(),headers:t.headers,status:t.status,statusText:t.statusText}}).finally(()=>{if(a){var e;(null==(e=b.pendingRevalidates)?void 0:e[a])&&delete b.pendingRevalidates[a]}})).catch(()=>{}),b.pendingRevalidates[a]=e,t.then(e=>e[1])}})};return u.__nextPatched=!0,u.__nextGetStaticStore=()=>r,u._nextOriginalFetch=e,u}(r,e)}},71376:(e,t)=>{"use strict";var r,n,a,o,i,s,u,c,l,d,p,g;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRenderSpan:function(){return u},AppRouteRouteHandlersSpan:function(){return d},BaseServerSpan:function(){return r},LoadComponentsSpan:function(){return n},LogSpanAllowList:function(){return _},MiddlewareSpan:function(){return g},NextNodeServerSpan:function(){return o},NextServerSpan:function(){return a},NextVanillaSpanAllowlist:function(){return f},NodeSpan:function(){return l},RenderSpan:function(){return s},ResolveMetadataSpan:function(){return p},RouterSpan:function(){return c},StartServerSpan:function(){return i}}),function(e){e.handleRequest="BaseServer.handleRequest",e.run="BaseServer.run",e.pipe="BaseServer.pipe",e.getStaticHTML="BaseServer.getStaticHTML",e.render="BaseServer.render",e.renderToResponseWithComponents="BaseServer.renderToResponseWithComponents",e.renderToResponse="BaseServer.renderToResponse",e.renderToHTML="BaseServer.renderToHTML",e.renderError="BaseServer.renderError",e.renderErrorToResponse="BaseServer.renderErrorToResponse",e.renderErrorToHTML="BaseServer.renderErrorToHTML",e.render404="BaseServer.render404"}(r||(r={})),function(e){e.loadDefaultErrorComponents="LoadComponents.loadDefaultErrorComponents",e.loadComponents="LoadComponents.loadComponents"}(n||(n={})),function(e){e.getRequestHandler="NextServer.getRequestHandler",e.getServer="NextServer.getServer",e.getServerRequestHandler="NextServer.getServerRequestHandler",e.createServer="createServer.createServer"}(a||(a={})),function(e){e.compression="NextNodeServer.compression",e.getBuildId="NextNodeServer.getBuildId",e.createComponentTree="NextNodeServer.createComponentTree",e.clientComponentLoading="NextNodeServer.clientComponentLoading",e.getLayoutOrPageModule="NextNodeServer.getLayoutOrPageModule",e.generateStaticRoutes="NextNodeServer.generateStaticRoutes",e.generateFsStaticRoutes="NextNodeServer.generateFsStaticRoutes",e.generatePublicRoutes="NextNodeServer.generatePublicRoutes",e.generateImageRoutes="NextNodeServer.generateImageRoutes.route",e.sendRenderResult="NextNodeServer.sendRenderResult",e.proxyRequest="NextNodeServer.proxyRequest",e.runApi="NextNodeServer.runApi",e.render="NextNodeServer.render",e.renderHTML="NextNodeServer.renderHTML",e.imageOptimizer="NextNodeServer.imageOptimizer",e.getPagePath="NextNodeServer.getPagePath",e.getRoutesManifest="NextNodeServer.getRoutesManifest",e.findPageComponents="NextNodeServer.findPageComponents",e.getFontManifest="NextNodeServer.getFontManifest",e.getServerComponentManifest="NextNodeServer.getServerComponentManifest",e.getRequestHandler="NextNodeServer.getRequestHandler",e.renderToHTML="NextNodeServer.renderToHTML",e.renderError="NextNodeServer.renderError",e.renderErrorToHTML="NextNodeServer.renderErrorToHTML",e.render404="NextNodeServer.render404",e.startResponse="NextNodeServer.startResponse",e.route="route",e.onProxyReq="onProxyReq",e.apiResolver="apiResolver",e.internalFetch="internalFetch"}(o||(o={})),(i||(i={})).startServer="startServer.startServer",function(e){e.getServerSideProps="Render.getServerSideProps",e.getStaticProps="Render.getStaticProps",e.renderToString="Render.renderToString",e.renderDocument="Render.renderDocument",e.createBodyResult="Render.createBodyResult"}(s||(s={})),function(e){e.renderToString="AppRender.renderToString",e.renderToReadableStream="AppRender.renderToReadableStream",e.getBodyResult="AppRender.getBodyResult",e.fetch="AppRender.fetch"}(u||(u={})),(c||(c={})).executeRoute="Router.executeRoute",(l||(l={})).runHandler="Node.runHandler",(d||(d={})).runHandler="AppRouteRouteHandlers.runHandler",function(e){e.generateMetadata="ResolveMetadata.generateMetadata",e.generateViewport="ResolveMetadata.generateViewport"}(p||(p={})),(g||(g={})).execute="Middleware.execute";let f=["Middleware.execute","BaseServer.handleRequest","Render.getServerSideProps","Render.getStaticProps","AppRender.fetch","AppRender.getBodyResult","Render.renderDocument","Node.runHandler","AppRouteRouteHandlers.runHandler","ResolveMetadata.generateMetadata","ResolveMetadata.generateViewport","NextNodeServer.createComponentTree","NextNodeServer.findPageComponents","NextNodeServer.getLayoutOrPageModule","NextNodeServer.startResponse","NextNodeServer.clientComponentLoading"],_=["NextNodeServer.findPageComponents","NextNodeServer.createComponentTree","NextNodeServer.clientComponentLoading"]},64994:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{SpanKind:function(){return c},SpanStatusCode:function(){return u},getTracer:function(){return h}});let a=r(71376);try{n=r(27482)}catch(e){n=r(27482)}let{context:o,propagation:i,trace:s,SpanStatusCode:u,SpanKind:c,ROOT_CONTEXT:l}=n,d=e=>null!==e&&"object"==typeof e&&"function"==typeof e.then,p=(e,t)=>{(null==t?void 0:t.bubble)===!0?e.setAttribute("next.bubble",!0):(t&&e.recordException(t),e.setStatus({code:u.ERROR,message:null==t?void 0:t.message})),e.end()},g=new Map,f=n.createContextKey("next.rootSpanId"),_=0,v=()=>_++;class b{getTracerInstance(){return s.getTracer("next.js","0.0.1")}getContext(){return o}getActiveScopeSpan(){return s.getSpan(null==o?void 0:o.active())}withPropagatedContext(e,t,r){let n=o.active();if(s.getSpanContext(n))return t();let a=i.extract(n,e,r);return o.with(a,t)}trace(...e){var t;let[r,n,i]=e,{fn:u,options:c}="function"==typeof n?{fn:n,options:{}}:{fn:i,options:{...n}},_=c.spanName??r;if(!a.NextVanillaSpanAllowlist.includes(r)&&"1"!==process.env.NEXT_OTEL_VERBOSE||c.hideSpan)return u();let b=this.getSpanContext((null==c?void 0:c.parentSpan)??this.getActiveScopeSpan()),h=!1;b?(null==(t=s.getSpanContext(b))?void 0:t.isRemote)&&(h=!0):(b=(null==o?void 0:o.active())??l,h=!0);let S=v();return c.attributes={"next.span_name":_,"next.span_type":r,...c.attributes},o.with(b.setValue(f,S),()=>this.getTracerInstance().startActiveSpan(_,c,e=>{let t="performance"in globalThis?globalThis.performance.now():void 0,n=()=>{g.delete(S),t&&process.env.NEXT_OTEL_PERFORMANCE_PREFIX&&a.LogSpanAllowList.includes(r||"")&&performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(r.split(".").pop()||"").replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}`,{start:t,end:performance.now()})};h&&g.set(S,new Map(Object.entries(c.attributes??{})));try{if(u.length>1)return u(e,t=>p(e,t));let t=u(e);if(d(t))return t.then(t=>(e.end(),t)).catch(t=>{throw p(e,t),t}).finally(n);return e.end(),n(),t}catch(t){throw p(e,t),n(),t}}))}wrap(...e){let t=this,[r,n,i]=3===e.length?e:[e[0],{},e[1]];return a.NextVanillaSpanAllowlist.includes(r)||"1"===process.env.NEXT_OTEL_VERBOSE?function(){let e=n;"function"==typeof e&&"function"==typeof i&&(e=e.apply(this,arguments));let a=arguments.length-1,s=arguments[a];if("function"!=typeof s)return t.trace(r,e,()=>i.apply(this,arguments));{let n=t.getContext().bind(o.active(),s);return t.trace(r,e,(e,t)=>(arguments[a]=function(e){return null==t||t(e),n.apply(this,arguments)},i.apply(this,arguments)))}}:i}startSpan(...e){let[t,r]=e,n=this.getSpanContext((null==r?void 0:r.parentSpan)??this.getActiveScopeSpan());return this.getTracerInstance().startSpan(t,r,n)}getSpanContext(e){return e?s.setSpan(o.active(),e):void 0}getRootSpanAttributes(){let e=o.active().getValue(f);return g.get(e)}}let h=(()=>{let e=new b;return()=>e})()},38238:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}}}; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/chunks/404.js b/phase-1-core-infra/frontend/.next/server/chunks/404.js new file mode 100644 index 0000000000000000000000000000000000000000..c70f0eed43cca3e08bd5185e7a22b61f683f47d4 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/chunks/404.js @@ -0,0 +1 @@ +"use strict";exports.id=404,exports.ids=[404],exports.modules={53416:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addLocale",{enumerable:!0,get:function(){return n}}),r(23658);let n=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{function n(e,t,r,n){return!1}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDomainLocale",{enumerable:!0,get:function(){return n}}),r(23658),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},79404:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return E}});let n=r(91174),o=r(10326),a=n._(r(17577)),i=r(25619),u=r(60944),s=r(43071),l=r(51348),c=r(53416),f=r(50131),d=r(52413),p=r(49408),h=r(39683),_=r(3486),g=r(57767);function m(e){return"string"==typeof e?e:(0,s.formatUrl)(e)}let E=a.default.forwardRef(function(e,t){let r,n;let{href:s,as:E,children:R,prefetch:y=null,passHref:S,replace:P,shallow:b,scroll:A,locale:O,onClick:v,onMouseEnter:T,onTouchStart:N,legacyBehavior:I=!1,...x}=e;r=R,I&&("string"==typeof r||"number"==typeof r)&&(r=(0,o.jsx)("a",{children:r}));let C=a.default.useContext(f.RouterContext),j=a.default.useContext(d.AppRouterContext),M=null!=C?C:j,w=!C,L=!1!==y,D=null===y?g.PrefetchKind.AUTO:g.PrefetchKind.FULL,{href:U,as:F}=a.default.useMemo(()=>{if(!C){let e=m(s);return{href:e,as:E?m(E):e}}let[e,t]=(0,i.resolveHref)(C,s,!0);return{href:e,as:E?(0,i.resolveHref)(C,E):t||e}},[C,s,E]),X=a.default.useRef(U),k=a.default.useRef(F);I&&(n=a.default.Children.only(r));let W=I?n&&"object"==typeof n&&n.ref:t,[G,H,Y]=(0,p.useIntersection)({rootMargin:"200px"}),B=a.default.useCallback(e=>{(k.current!==F||X.current!==U)&&(Y(),k.current=F,X.current=U),G(e),W&&("function"==typeof W?W(e):"object"==typeof W&&(W.current=e))},[F,W,U,Y,G]);a.default.useEffect(()=>{},[F,U,H,O,L,null==C?void 0:C.locale,M,w,D]);let K={ref:B,onClick(e){I||"function"!=typeof v||v(e),I&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(e),M&&!e.defaultPrevented&&function(e,t,r,n,o,i,s,l,c){let{nodeName:f}=e.currentTarget;if("A"===f.toUpperCase()&&(function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||!c&&!(0,u.isLocalURL)(r)))return;e.preventDefault();let d=()=>{let e=null==s||s;"beforePopState"in t?t[o?"replace":"push"](r,n,{shallow:i,locale:l,scroll:e}):t[o?"replace":"push"](n||r,{scroll:e})};c?a.default.startTransition(d):d()}(e,M,U,F,P,b,A,O,w)},onMouseEnter(e){I||"function"!=typeof T||T(e),I&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e)},onTouchStart:function(e){I||"function"!=typeof N||N(e),I&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e)}};if((0,l.isAbsoluteUrl)(F))K.href=F;else if(!I||S||"a"===n.type&&!("href"in n.props)){let e=void 0!==O?O:null==C?void 0:C.locale,t=(null==C?void 0:C.isLocaleDomain)&&(0,h.getDomainLocale)(F,e,null==C?void 0:C.locales,null==C?void 0:C.domainLocales);K.href=t||(0,_.addBasePath)((0,c.addLocale)(F,e,null==C?void 0:C.defaultLocale))}return I?a.default.cloneElement(n,K):(0,o.jsx)("a",{...x,...K,children:r})});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},10956:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{cancelIdleCallback:function(){return n},requestIdleCallback:function(){return r}});let r="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},n="undefined"!=typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},25619:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"resolveHref",{enumerable:!0,get:function(){return f}});let n=r(72149),o=r(43071),a=r(20757),i=r(51348),u=r(23658),s=r(60944),l=r(94903),c=r(81394);function f(e,t,r){let f;let d="string"==typeof t?t:(0,o.formatWithValidation)(t),p=d.match(/^[a-zA-Z]{1,}:\/\//),h=p?d.slice(p[0].length):d;if((h.split("?",1)[0]||"").match(/(\/\/|\\)/)){console.error("Invalid href '"+d+"' passed to next/router in page: '"+e.pathname+"'. Repeated forward-slashes (//) or backslashes \\ are not valid in the href.");let t=(0,i.normalizeRepeatedSlashes)(h);d=(p?p[0]:"")+t}if(!(0,s.isLocalURL)(d))return r?[d]:d;try{f=new URL(d.startsWith("#")?e.asPath:e.pathname,"http://n")}catch(e){f=new URL("/","http://n")}try{let e=new URL(d,f);e.pathname=(0,u.normalizePathTrailingSlash)(e.pathname);let t="";if((0,l.isDynamicRoute)(e.pathname)&&e.searchParams&&r){let r=(0,n.searchParamsToUrlQuery)(e.searchParams),{result:i,params:u}=(0,c.interpolateAs)(e.pathname,e.pathname,r);i&&(t=(0,o.formatWithValidation)({pathname:i,hash:e.hash,query:(0,a.omit)(r,u)}))}let i=e.origin===f.origin?e.href.slice(e.origin.length):e.href;return r?[i,t||i]:i}catch(e){return r?[d]:d}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},49408:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useIntersection",{enumerable:!0,get:function(){return s}});let n=r(17577),o=r(10956),a="function"==typeof IntersectionObserver,i=new Map,u=[];function s(e){let{rootRef:t,rootMargin:r,disabled:s}=e,l=s||!a,[c,f]=(0,n.useState)(!1),d=(0,n.useRef)(null),p=(0,n.useCallback)(e=>{d.current=e},[]);return(0,n.useEffect)(()=>{if(a){if(l||c)return;let e=d.current;if(e&&e.tagName)return function(e,t,r){let{id:n,observer:o,elements:a}=function(e){let t;let r={root:e.root||null,margin:e.rootMargin||""},n=u.find(e=>e.root===r.root&&e.margin===r.margin);if(n&&(t=i.get(n)))return t;let o=new Map;return t={id:r,observer:new IntersectionObserver(e=>{e.forEach(e=>{let t=o.get(e.target),r=e.isIntersecting||e.intersectionRatio>0;t&&r&&t(r)})},e),elements:o},u.push(r),i.set(r,t),t}(r);return a.set(e,t),o.observe(e),function(){if(a.delete(e),o.unobserve(e),0===a.size){o.disconnect(),i.delete(n);let e=u.findIndex(e=>e.root===n.root&&e.margin===n.margin);e>-1&&u.splice(e,1)}}}(e,e=>e&&f(e),{root:null==t?void 0:t.current,rootMargin:r})}else if(!c){let e=(0,o.requestIdleCallback)(()=>f(!0));return()=>(0,o.cancelIdleCallback)(e)}},[l,r,t,c,d.current]),[p,c,(0,n.useCallback)(()=>{f(!1)},[])]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},25633:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_SUFFIX:function(){return s},APP_DIR_ALIAS:function(){return T},CACHE_ONE_YEAR:function(){return y},DOT_NEXT_ALIAS:function(){return O},ESLINT_DEFAULT_DIRS:function(){return B},GSP_NO_RETURNED_VALUE:function(){return X},GSSP_COMPONENT_MEMBER_ERROR:function(){return G},GSSP_NO_RETURNED_VALUE:function(){return k},INSTRUMENTATION_HOOK_FILENAME:function(){return b},MIDDLEWARE_FILENAME:function(){return S},MIDDLEWARE_LOCATION_REGEXP:function(){return P},NEXT_BODY_SUFFIX:function(){return f},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return R},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return h},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return _},NEXT_CACHE_SOFT_TAGS_HEADER:function(){return p},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return E},NEXT_CACHE_TAGS_HEADER:function(){return d},NEXT_CACHE_TAG_MAX_ITEMS:function(){return g},NEXT_CACHE_TAG_MAX_LENGTH:function(){return m},NEXT_DATA_SUFFIX:function(){return l},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return n},NEXT_META_SUFFIX:function(){return c},NEXT_QUERY_PARAM_PREFIX:function(){return r},NON_STANDARD_NODE_ENV:function(){return H},PAGES_DIR_ALIAS:function(){return A},PRERENDER_REVALIDATE_HEADER:function(){return o},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return a},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return M},ROOT_DIR_ALIAS:function(){return v},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return j},RSC_ACTION_ENCRYPTION_ALIAS:function(){return C},RSC_ACTION_PROXY_ALIAS:function(){return x},RSC_ACTION_VALIDATE_ALIAS:function(){return I},RSC_MOD_REF_PROXY_ALIAS:function(){return N},RSC_PREFETCH_SUFFIX:function(){return i},RSC_SUFFIX:function(){return u},SERVER_PROPS_EXPORT_ERROR:function(){return F},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return L},SERVER_PROPS_SSG_CONFLICT:function(){return D},SERVER_RUNTIME:function(){return K},SSG_FALLBACK_EXPORT_ERROR:function(){return Y},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return w},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return U},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return W},WEBPACK_LAYERS:function(){return z},WEBPACK_RESOURCE_QUERIES:function(){return q}});let r="nxtP",n="nxtI",o="x-prerender-revalidate",a="x-prerender-revalidate-if-generated",i=".prefetch.rsc",u=".rsc",s=".action",l=".json",c=".meta",f=".body",d="x-next-cache-tags",p="x-next-cache-soft-tags",h="x-next-revalidated-tags",_="x-next-revalidate-tag-token",g=128,m=256,E=1024,R="_N_T_",y=31536e3,S="middleware",P=`(?:src/)?${S}`,b="instrumentation",A="private-next-pages",O="private-dot-next",v="private-next-root-dir",T="private-next-app-dir",N="private-next-rsc-mod-ref-proxy",I="private-next-rsc-action-validate",x="private-next-rsc-server-reference",C="private-next-rsc-action-encryption",j="private-next-rsc-action-client-wrapper",M="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",w="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",L="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",D="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",U="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",F="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",X="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",k="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",W="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",G="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",H='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',Y="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",B=["app","pages","components","lib","src"],K={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},V={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",api:"api",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route",appRouteHandler:"app-route-handler"},z={...V,GROUP:{serverOnly:[V.reactServerComponents,V.actionBrowser,V.appMetadataRoute,V.appRouteHandler,V.instrument],clientOnly:[V.serverSideRendering,V.appPagesBrowser],nonClientServerTarget:[V.middleware,V.api],app:[V.reactServerComponents,V.actionBrowser,V.appMetadataRoute,V.appRouteHandler,V.serverSideRendering,V.appPagesBrowser,V.shared,V.instrument]}},q={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},50131:(e,t,r)=>{e.exports=r(81616).vendored.contexts.RouterContext},2451:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"escapeStringRegexp",{enumerable:!0,get:function(){return o}});let r=/[|\\{}()[\]^$+*?.-]/,n=/[|\\{}()[\]^$+*?.-]/g;function o(e){return r.test(e)?e.replace(n,"\\$&"):e}},43071:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatUrl:function(){return a},formatWithValidation:function(){return u},urlObjectKeys:function(){return i}});let n=r(58374)._(r(72149)),o=/https?|ftp|gopher|file/;function a(e){let{auth:t,hostname:r}=e,a=e.protocol||"",i=e.pathname||"",u=e.hash||"",s=e.query||"",l=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?l=t+e.host:r&&(l=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(l+=":"+e.port)),s&&"object"==typeof s&&(s=String(n.urlQueryToSearchParams(s)));let c=e.search||s&&"?"+s||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==l?(l="//"+(l||""),i&&"/"!==i[0]&&(i="/"+i)):l||(l=""),u&&"#"!==u[0]&&(u="#"+u),c&&"?"!==c[0]&&(c="?"+c),""+a+l+(i=i.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+u}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function u(e){return a(e)}},94903:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getSortedRoutes:function(){return n.getSortedRoutes},isDynamicRoute:function(){return o.isDynamicRoute}});let n=r(44712),o=r(45541)},81394:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"interpolateAs",{enumerable:!0,get:function(){return a}});let n=r(9966),o=r(37249);function a(e,t,r){let a="",i=(0,o.getRouteRegex)(e),u=i.groups,s=(t!==e?(0,n.getRouteMatcher)(i)(t):"")||r;a=e;let l=Object.keys(u);return l.every(e=>{let t=s[e]||"",{repeat:r,optional:n}=u[e],o="["+(r?"...":"")+e+"]";return n&&(o=(t?"":"/")+"["+o+"]"),r&&!Array.isArray(t)&&(t=[t]),(n||e in s)&&(a=a.replace(o,r?t.map(e=>encodeURIComponent(e)).join("/"):encodeURIComponent(t))||"/")})||(a=""),{params:l,result:a}}},45541:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return a}});let n=r(87356),o=/\/\[[^/]+?\](?=\/|$)/;function a(e){return(0,n.isInterceptionRouteAppPath)(e)&&(e=(0,n.extractInterceptionRouteInformation)(e).interceptedRoute),o.test(e)}},60944:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=r(51348),o=r(37929);function a(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},20757:(e,t)=>{function r(e,t){let r={};return Object.keys(e).forEach(n=>{t.includes(n)||(r[n]=e[n])}),r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"omit",{enumerable:!0,get:function(){return r}})},72149:(e,t)=>{function r(e){let t={};return e.forEach((e,r)=>{void 0===t[r]?t[r]=e:Array.isArray(t[r])?t[r].push(e):t[r]=[t[r],e]}),t}function n(e){return"string"!=typeof e&&("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;return Object.entries(e).forEach(e=>{let[r,o]=e;Array.isArray(o)?o.forEach(e=>t.append(r,n(e))):t.set(r,n(o))}),t}function a(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{Array.from(t.keys()).forEach(t=>e.delete(t)),t.forEach((t,r)=>e.append(r,t))}),e}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{assign:function(){return a},searchParamsToUrlQuery:function(){return r},urlQueryToSearchParams:function(){return o}})},9966:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getRouteMatcher",{enumerable:!0,get:function(){return o}});let n=r(51348);function o(e){let{re:t,groups:r}=e;return e=>{let o=t.exec(e);if(!o)return!1;let a=e=>{try{return decodeURIComponent(e)}catch(e){throw new n.DecodeError("failed to decode param")}},i={};return Object.keys(r).forEach(e=>{let t=r[e],n=o[t.pos];void 0!==n&&(i[e]=~n.indexOf("/")?n.split("/").map(e=>a(e)):t.repeat?[a(n)]:a(n))}),i}}},37249:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getNamedMiddlewareRegex:function(){return p},getNamedRouteRegex:function(){return d},getRouteRegex:function(){return l},parseParameter:function(){return u}});let n=r(25633),o=r(87356),a=r(2451),i=r(83236);function u(e){let t=e.startsWith("[")&&e.endsWith("]");t&&(e=e.slice(1,-1));let r=e.startsWith("...");return r&&(e=e.slice(3)),{key:e,repeat:r,optional:t}}function s(e){let t=(0,i.removeTrailingSlash)(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=o.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t)),i=e.match(/\[((?:\[.*\])|.+)\]/);if(t&&i){let{key:e,optional:o,repeat:s}=u(i[1]);return r[e]={pos:n++,repeat:s,optional:o},"/"+(0,a.escapeStringRegexp)(t)+"([^/]+?)"}if(!i)return"/"+(0,a.escapeStringRegexp)(e);{let{key:e,repeat:t,optional:o}=u(i[1]);return r[e]={pos:n++,repeat:t,optional:o},t?o?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}function l(e){let{parameterizedRoute:t,groups:r}=s(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}function c(e){let{interceptionMarker:t,getSafeRouteKey:r,segment:n,routeKeys:o,keyPrefix:i}=e,{key:s,optional:l,repeat:c}=u(n),f=s.replace(/\W/g,"");i&&(f=""+i+f);let d=!1;(0===f.length||f.length>30)&&(d=!0),isNaN(parseInt(f.slice(0,1)))||(d=!0),d&&(f=r()),i?o[f]=""+i+s:o[f]=s;let p=t?(0,a.escapeStringRegexp)(t):"";return c?l?"(?:/"+p+"(?<"+f+">.+?))?":"/"+p+"(?<"+f+">.+?)":"/"+p+"(?<"+f+">[^/]+?)"}function f(e,t){let r;let u=(0,i.removeTrailingSlash)(e).slice(1).split("/"),s=(r=0,()=>{let e="",t=++r;for(;t>0;)e+=String.fromCharCode(97+(t-1)%26),t=Math.floor((t-1)/26);return e}),l={};return{namedParameterizedRoute:u.map(e=>{let r=o.INTERCEPTION_ROUTE_MARKERS.some(t=>e.startsWith(t)),i=e.match(/\[((?:\[.*\])|.+)\]/);if(r&&i){let[r]=e.split(i[0]);return c({getSafeRouteKey:s,interceptionMarker:r,segment:i[1],routeKeys:l,keyPrefix:t?n.NEXT_INTERCEPTION_MARKER_PREFIX:void 0})}return i?c({getSafeRouteKey:s,segment:i[1],routeKeys:l,keyPrefix:t?n.NEXT_QUERY_PARAM_PREFIX:void 0}):"/"+(0,a.escapeStringRegexp)(e)}).join(""),routeKeys:l}}function d(e,t){let r=f(e,t);return{...l(e),namedRegex:"^"+r.namedParameterizedRoute+"(?:/)?$",routeKeys:r.routeKeys}}function p(e,t){let{parameterizedRoute:r}=s(e),{catchAll:n=!0}=t;if("/"===r)return{namedRegex:"^/"+(n?".*":"")+"$"};let{namedParameterizedRoute:o}=f(e,!1);return{namedRegex:"^"+o+(n?"(?:(/.*)?)":"")+"$"}}},44712:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSortedRoutes",{enumerable:!0,get:function(){return n}});class r{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e){void 0===e&&(e="/");let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let r=t.map(t=>this.children.get(t)._smoosh(""+e+t+"/")).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&r.push(...this.children.get("[]")._smoosh(e+"["+this.slugName+"]/")),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Error('You cannot define a route with the same specificity as a optional catch-all route ("'+t+'" and "'+t+"[[..."+this.optionalRestSlugName+']]").');r.unshift(t)}return null!==this.restSlugName&&r.push(...this.children.get("[...]")._smoosh(e+"[..."+this.restSlugName+"]/")),null!==this.optionalRestSlugName&&r.push(...this.children.get("[[...]]")._smoosh(e+"[[..."+this.optionalRestSlugName+"]]/")),r}_insert(e,t,n){if(0===e.length){this.placeholder=!1;return}if(n)throw Error("Catch-all must be the last part of the URL.");let o=e[0];if(o.startsWith("[")&&o.endsWith("]")){let r=o.slice(1,-1),i=!1;if(r.startsWith("[")&&r.endsWith("]")&&(r=r.slice(1,-1),i=!0),r.startsWith("...")&&(r=r.substring(3),n=!0),r.startsWith("[")||r.endsWith("]"))throw Error("Segment names may not start or end with extra brackets ('"+r+"').");if(r.startsWith("."))throw Error("Segment names may not start with erroneous periods ('"+r+"').");function a(e,r){if(null!==e&&e!==r)throw Error("You cannot use different slug names for the same dynamic path ('"+e+"' !== '"+r+"').");t.forEach(e=>{if(e===r)throw Error('You cannot have the same slug name "'+r+'" repeat within a single dynamic path');if(e.replace(/\W/g,"")===o.replace(/\W/g,""))throw Error('You cannot have the slug names "'+e+'" and "'+r+'" differ only by non-word symbols within a single dynamic path')}),t.push(r)}if(n){if(i){if(null!=this.restSlugName)throw Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+e[0]+'" ).');a(this.optionalRestSlugName,r),this.optionalRestSlugName=r,o="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+e[0]+'").');a(this.restSlugName,r),this.restSlugName=r,o="[...]"}}else{if(i)throw Error('Optional route parameters are not yet supported ("'+e[0]+'").');a(this.slugName,r),this.slugName=r,o="[]"}}this.children.has(o)||this.children.set(o,new r),this.children.get(o)._insert(e.slice(1),t,n)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function n(e){let t=new r;return e.forEach(e=>t.insert(e)),t.smoosh()}},51348:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return E},MissingStaticPage:function(){return m},NormalizeError:function(){return _},PageNotFoundError:function(){return g},SP:function(){return d},ST:function(){return p},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return s},getLocationOrigin:function(){return i},getURL:function(){return u},isAbsoluteUrl:function(){return a},isResSent:function(){return l},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return R}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),a=0;ao.test(e);function i(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function u(){let{href:e}=window.location,t=i();return e.substring(t.length)}function s(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function l(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function f(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&l(r))return n;if(!n)throw Error('"'+s(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.');return n}let d="undefined"!=typeof performance,p=d&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class _ extends Error{}class g extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class m extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class E extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function R(e){return JSON.stringify({message:e.message,stack:e.stack})}}}; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/chunks/448.js b/phase-1-core-infra/frontend/.next/server/chunks/448.js new file mode 100644 index 0000000000000000000000000000000000000000..cd121bb257c479f98cf51173ec5f8d0c7c325740 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/chunks/448.js @@ -0,0 +1,2 @@ +exports.id=448,exports.ids=[448],exports.modules={46465:e=>{e.exports={style:{fontFamily:"'__Inter_f367f3', '__Inter_Fallback_f367f3'",fontStyle:"normal"},className:"__className_f367f3"}},76557:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var n=r(17577),o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),i=(e,t)=>{let r=(0,n.forwardRef)(({color:r="currentColor",size:i=24,strokeWidth:l=2,absoluteStrokeWidth:s,className:u="",children:c,...d},f)=>(0,n.createElement)("svg",{ref:f,...o,width:i,height:i,stroke:r,strokeWidth:s?24*Number(l)/Number(i):l,className:["lucide",`lucide-${a(e)}`,u].join(" "),...d},[...t.map(([e,t])=>(0,n.createElement)(e,t)),...Array.isArray(c)?c:[c]]));return r.displayName=`${e}`,r}},94019:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});let n=(0,r(76557).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},3486:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return a}});let n=r(8974),o=r(23658);function a(e,t){return(0,o.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,""))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},15424:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"callServer",{enumerable:!0,get:function(){return o}});let n=r(12994);async function o(e,t){let r=(0,n.getServerActionDispatcher)();if(!r)throw Error("Invariant: missing action dispatcher.");return new Promise((n,o)=>{r({actionId:e,actionArgs:t,resolve:n,reject:o})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},68038:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AppRouterAnnouncer",{enumerable:!0,get:function(){return i}});let n=r(17577),o=r(60962),a="next-route-announcer";function i(e){let{tree:t}=e,[r,i]=(0,n.useState)(null);(0,n.useEffect)(()=>(i(function(){var e;let t=document.getElementsByName(a)[0];if(null==t?void 0:null==(e=t.shadowRoot)?void 0:e.childNodes[0])return t.shadowRoot.childNodes[0];{let e=document.createElement(a);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(a)[0];(null==e?void 0:e.isConnected)&&document.body.removeChild(e)}),[]);let[l,s]=(0,n.useState)(""),u=(0,n.useRef)();return(0,n.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==u.current&&u.current!==e&&s(e),u.current=e},[t]),r?(0,o.createPortal)(l,r):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5138:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION:function(){return n},FLIGHT_PARAMETERS:function(){return s},NEXT_DID_POSTPONE_HEADER:function(){return c},NEXT_ROUTER_PREFETCH_HEADER:function(){return a},NEXT_ROUTER_STATE_TREE:function(){return o},NEXT_RSC_UNION_QUERY:function(){return u},NEXT_URL:function(){return i},RSC_CONTENT_TYPE_HEADER:function(){return l},RSC_HEADER:function(){return r}});let r="RSC",n="Next-Action",o="Next-Router-State-Tree",a="Next-Router-Prefetch",i="Next-Url",l="text/x-component",s=[[r],[o],[a]],u="_rsc",c="x-nextjs-postponed";("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},12994:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createEmptyCacheNode:function(){return C},default:function(){return D},getServerActionDispatcher:function(){return O},urlToUrlWithoutFlightMarker:function(){return x}});let n=r(58374),o=r(10326),a=n._(r(17577)),i=r(52413),l=r(57767),s=r(17584),u=r(97008),c=r(77326),d=r(9727),f=r(6199),p=r(32148),h=r(3486),y=r(68038),m=r(46265),b=r(22492),g=r(39519),v=r(5138),_=r(74237),P=r(37929),w=r(68071),E=null,R=null;function O(){return R}let j={};function x(e){let t=new URL(e,location.origin);return t.searchParams.delete(v.NEXT_RSC_UNION_QUERY),t}function S(e){return e.origin!==window.location.origin}function T(e){let{appRouterState:t,sync:r}=e;return(0,a.useInsertionEffect)(()=>{let{tree:e,pushRef:n,canonicalUrl:o}=t,a={...n.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:e};n.pendingPush&&(0,s.createHrefFromUrl)(new URL(window.location.href))!==o?(n.pendingPush=!1,window.history.pushState(a,"",o)):window.history.replaceState(a,"",o),r(t)},[t,r]),null}function C(){return{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null}}function M(e){null==e&&(e={});let t=window.history.state,r=null==t?void 0:t.__NA;r&&(e.__NA=r);let n=null==t?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;return n&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=n),e}function A(e){let{headCacheNode:t}=e,r=null!==t?t.head:null,n=null!==t?t.prefetchHead:null,o=null!==n?n:r;return(0,a.useDeferredValue)(r,o)}function N(e){let t,{buildId:r,initialHead:n,initialTree:s,urlParts:d,initialSeedData:v,couldBeIntercepted:O,assetPrefix:x,missingSlots:C}=e,N=(0,a.useMemo)(()=>(0,f.createInitialRouterState)({buildId:r,initialSeedData:v,urlParts:d,initialTree:s,initialParallelRoutes:E,location:null,initialHead:n,couldBeIntercepted:O}),[r,v,d,s,n,O]),[D,F,k]=(0,c.useReducerWithReduxDevtools)(N);(0,a.useEffect)(()=>{E=null},[]);let{canonicalUrl:U}=(0,c.useUnwrapState)(D),{searchParams:I,pathname:L}=(0,a.useMemo)(()=>{let e=new URL(U,"http://n");return{searchParams:e.searchParams,pathname:(0,P.hasBasePath)(e.pathname)?(0,_.removeBasePath)(e.pathname):e.pathname}},[U]),H=(0,a.useCallback)(e=>{let{previousTree:t,serverResponse:r}=e;(0,a.startTransition)(()=>{F({type:l.ACTION_SERVER_PATCH,previousTree:t,serverResponse:r})})},[F]),z=(0,a.useCallback)((e,t,r)=>{let n=new URL((0,h.addBasePath)(e),location.href);return F({type:l.ACTION_NAVIGATE,url:n,isExternalUrl:S(n),locationSearch:location.search,shouldScroll:null==r||r,navigateType:t})},[F]);R=(0,a.useCallback)(e=>{(0,a.startTransition)(()=>{F({...e,type:l.ACTION_SERVER_ACTION})})},[F]);let q=(0,a.useMemo)(()=>({back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let r;if(!(0,p.isBot)(window.navigator.userAgent)){try{r=new URL((0,h.addBasePath)(e),window.location.href)}catch(t){throw Error("Cannot prefetch '"+e+"' because it cannot be converted to a URL.")}S(r)||(0,a.startTransition)(()=>{var e;F({type:l.ACTION_PREFETCH,url:r,kind:null!=(e=null==t?void 0:t.kind)?e:l.PrefetchKind.FULL})})}},replace:(e,t)=>{void 0===t&&(t={}),(0,a.startTransition)(()=>{var r;z(e,"replace",null==(r=t.scroll)||r)})},push:(e,t)=>{void 0===t&&(t={}),(0,a.startTransition)(()=>{var r;z(e,"push",null==(r=t.scroll)||r)})},refresh:()=>{(0,a.startTransition)(()=>{F({type:l.ACTION_REFRESH,origin:window.location.origin})})},fastRefresh:()=>{throw Error("fastRefresh can only be used in development mode. Please use refresh instead.")}}),[F,z]);(0,a.useEffect)(()=>{window.next&&(window.next.router=q)},[q]),(0,a.useEffect)(()=>{function e(e){var t;e.persisted&&(null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE)&&(j.pendingMpaPath=void 0,F({type:l.ACTION_RESTORE,url:new URL(window.location.href),tree:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[F]);let{pushRef:G}=(0,c.useUnwrapState)(D);if(G.mpaNavigation){if(j.pendingMpaPath!==U){let e=window.location;G.pendingPush?e.assign(U):e.replace(U),j.pendingMpaPath=U}(0,a.use)(g.unresolvedThenable)}(0,a.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),r=e=>{var t;let r=window.location.href,n=null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,a.startTransition)(()=>{F({type:l.ACTION_RESTORE,url:new URL(null!=e?e:r,r),tree:n})})};window.history.pushState=function(t,n,o){return(null==t?void 0:t.__NA)||(null==t?void 0:t._N)||(t=M(t),o&&r(o)),e(t,n,o)},window.history.replaceState=function(e,n,o){return(null==e?void 0:e.__NA)||(null==e?void 0:e._N)||(e=M(e),o&&r(o)),t(e,n,o)};let n=e=>{let{state:t}=e;if(t){if(!t.__NA){window.location.reload();return}(0,a.startTransition)(()=>{F({type:l.ACTION_RESTORE,url:new URL(window.location.href),tree:t.__PRIVATE_NEXTJS_INTERNALS_TREE})})}};return window.addEventListener("popstate",n),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",n)}},[F]);let{cache:K,tree:W,nextUrl:B,focusAndScrollRef:$}=(0,c.useUnwrapState)(D),Q=(0,a.useMemo)(()=>(0,b.findHeadInCache)(K,W[1]),[K,W]),V=(0,a.useMemo)(()=>(function e(t,r){for(let n of(void 0===r&&(r={}),Object.values(t[1]))){let t=n[0],o=Array.isArray(t),a=o?t[1]:t;!a||a.startsWith(w.PAGE_SEGMENT_KEY)||(o&&("c"===t[2]||"oc"===t[2])?r[t[0]]=t[1].split("/"):o&&(r[t[0]]=t[1]),r=e(n,r))}return r})(W),[W]);if(null!==Q){let[e,r]=Q;t=(0,o.jsx)(A,{headCacheNode:e},r)}else t=null;let Y=(0,o.jsxs)(m.RedirectBoundary,{children:[t,K.rsc,(0,o.jsx)(y.AppRouterAnnouncer,{tree:W})]});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(T,{appRouterState:(0,c.useUnwrapState)(D),sync:k}),(0,o.jsx)(u.PathParamsContext.Provider,{value:V,children:(0,o.jsx)(u.PathnameContext.Provider,{value:L,children:(0,o.jsx)(u.SearchParamsContext.Provider,{value:I,children:(0,o.jsx)(i.GlobalLayoutRouterContext.Provider,{value:{buildId:r,changeByServerResponse:H,tree:W,focusAndScrollRef:$,nextUrl:B},children:(0,o.jsx)(i.AppRouterContext.Provider,{value:q,children:(0,o.jsx)(i.LayoutRouterContext.Provider,{value:{childNodes:K.parallelRoutes,tree:W,url:U,loading:K.loading},children:Y})})})})})})]})}function D(e){let{globalErrorComponent:t,...r}=e;return(0,o.jsx)(d.ErrorBoundary,{errorComponent:t,children:(0,o.jsx)(N,{...r})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16136:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"bailoutToClientRendering",{enumerable:!0,get:function(){return a}});let n=r(94129),o=r(45869);function a(e){let t=o.staticGenerationAsyncStorage.getStore();if((null==t||!t.forceStatic)&&(null==t?void 0:t.isStaticGeneration))throw new n.BailoutToCSRError(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},96114:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientPageRoot",{enumerable:!0,get:function(){return a}});let n=r(10326),o=r(23325);function a(e){let{Component:t,props:r}=e;return r.searchParams=(0,o.createDynamicallyTrackedSearchParams)(r.searchParams||{}),(0,n.jsx)(t,{...r})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9727:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return d},GlobalError:function(){return f},default:function(){return p}});let n=r(91174),o=r(10326),a=n._(r(17577)),i=r(77389),l=r(37313),s=r(45869),u={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}};function c(e){let{error:t}=e,r=s.staticGenerationAsyncStorage.getStore();if((null==r?void 0:r.isRevalidate)||(null==r?void 0:r.isStaticGeneration))throw console.error(t),t;return null}class d extends a.default.Component{static getDerivedStateFromError(e){if((0,l.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(c,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}}function f(e){let{error:t}=e,r=null==t?void 0:t.digest;return(0,o.jsxs)("html",{id:"__next_error__",children:[(0,o.jsx)("head",{}),(0,o.jsxs)("body",{children:[(0,o.jsx)(c,{error:t}),(0,o.jsx)("div",{style:u.error,children:(0,o.jsxs)("div",{children:[(0,o.jsx)("h2",{style:u.text,children:"Application error: a "+(r?"server":"client")+"-side exception has occurred (see the "+(r?"server logs":"browser console")+" for more information)."}),r?(0,o.jsx)("p",{style:u.text,children:"Digest: "+r}):null]})})]})]})}let p=f;function h(e){let{errorComponent:t,errorStyles:r,errorScripts:n,children:a}=e,l=(0,i.usePathname)();return t?(0,o.jsx)(d,{pathname:l,errorComponent:t,errorStyles:r,errorScripts:n,children:a}):(0,o.jsx)(o.Fragment,{children:a})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},70442:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DynamicServerError:function(){return n},isDynamicServerError:function(){return o}});let r="DYNAMIC_SERVER_USAGE";class n extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},37313:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return a}});let n=r(50706),o=r(62747);function a(e){return e&&e.digest&&((0,o.isRedirectError)(e)||(0,n.isNotFoundError)(e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},79671:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return E}}),r(91174);let n=r(58374),o=r(10326),a=n._(r(17577));r(60962);let i=r(52413),l=r(9009),s=r(39519),u=r(9727),c=r(70455),d=r(79976),f=r(46265),p=r(41868),h=r(62162),y=r(39886),m=r(45262),b=["bottom","height","left","right","top","width","x","y"];function g(e,t){let r=e.getBoundingClientRect();return r.top>=0&&r.top<=t}class v extends a.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,r)=>(0,c.matchSegment)(t,e[r]))))return;let r=null,n=e.hashFragment;if(n&&(r=function(e){var t;return"top"===e?document.body:null!=(t=document.getElementById(e))?t:document.getElementsByName(e)[0]}(n)),!r&&(r=null),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return b.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,d.handleSmoothScroll)(()=>{if(n){r.scrollIntoView();return}let e=document.documentElement,t=e.clientHeight;!g(r,t)&&(e.scrollTop=0,g(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function _(e){let{segmentPath:t,children:r}=e,n=(0,a.useContext)(i.GlobalLayoutRouterContext);if(!n)throw Error("invariant global layout router not mounted");return(0,o.jsx)(v,{segmentPath:t,focusAndScrollRef:n.focusAndScrollRef,children:r})}function P(e){let{parallelRouterKey:t,url:r,childNodes:n,segmentPath:u,tree:d,cacheKey:f}=e,p=(0,a.useContext)(i.GlobalLayoutRouterContext);if(!p)throw Error("invariant global layout router not mounted");let{buildId:h,changeByServerResponse:y,tree:b}=p,g=n.get(f);if(void 0===g){let e={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};g=e,n.set(f,e)}let v=null!==g.prefetchRsc?g.prefetchRsc:g.rsc,_=(0,a.useDeferredValue)(g.rsc,v),P="object"==typeof _&&null!==_&&"function"==typeof _.then?(0,a.use)(_):_;if(!P){let e=g.lazyData;if(null===e){let t=function e(t,r){if(t){let[n,o]=t,a=2===t.length;if((0,c.matchSegment)(r[0],n)&&r[1].hasOwnProperty(o)){if(a){let t=e(void 0,r[1][o]);return[r[0],{...r[1],[o]:[t[0],t[1],t[2],"refetch"]}]}return[r[0],{...r[1],[o]:e(t.slice(2),r[1][o])}]}}return r}(["",...u],b),n=(0,m.hasInterceptionRouteInCurrentTree)(b);g.lazyData=e=(0,l.fetchServerResponse)(new URL(r,location.origin),t,n?p.nextUrl:null,h),g.lazyDataResolved=!1}let t=(0,a.use)(e);g.lazyDataResolved||(setTimeout(()=>{(0,a.startTransition)(()=>{y({previousTree:b,serverResponse:t})})}),g.lazyDataResolved=!0),(0,a.use)(s.unresolvedThenable)}return(0,o.jsx)(i.LayoutRouterContext.Provider,{value:{tree:d[1][t],childNodes:g.parallelRoutes,url:r,loading:g.loading},children:P})}function w(e){let{children:t,hasLoading:r,loading:n,loadingStyles:i,loadingScripts:l}=e;return r?(0,o.jsx)(a.Suspense,{fallback:(0,o.jsxs)(o.Fragment,{children:[i,l,n]}),children:t}):(0,o.jsx)(o.Fragment,{children:t})}function E(e){let{parallelRouterKey:t,segmentPath:r,error:n,errorStyles:l,errorScripts:s,templateStyles:c,templateScripts:d,template:m,notFound:b,notFoundStyles:g}=e,v=(0,a.useContext)(i.LayoutRouterContext);if(!v)throw Error("invariant expected layout router to be mounted");let{childNodes:E,tree:R,url:O,loading:j}=v,x=E.get(t);x||(x=new Map,E.set(t,x));let S=R[1][t][0],T=(0,h.getSegmentValue)(S),C=[S];return(0,o.jsx)(o.Fragment,{children:C.map(e=>{let a=(0,h.getSegmentValue)(e),v=(0,y.createRouterCacheKey)(e);return(0,o.jsxs)(i.TemplateContext.Provider,{value:(0,o.jsx)(_,{segmentPath:r,children:(0,o.jsx)(u.ErrorBoundary,{errorComponent:n,errorStyles:l,errorScripts:s,children:(0,o.jsx)(w,{hasLoading:!!j,loading:null==j?void 0:j[0],loadingStyles:null==j?void 0:j[1],loadingScripts:null==j?void 0:j[2],children:(0,o.jsx)(p.NotFoundBoundary,{notFound:b,notFoundStyles:g,children:(0,o.jsx)(f.RedirectBoundary,{children:(0,o.jsx)(P,{parallelRouterKey:t,url:O,tree:R,childNodes:x,segmentPath:r,cacheKey:v,isActive:T===a})})})})})}),children:[c,d,m]},(0,y.createRouterCacheKey)(e,!0))})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},70455:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{canSegmentBeOverridden:function(){return a},matchSegment:function(){return o}});let n=r(92357),o=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1],a=(e,t)=>{var r;return!Array.isArray(e)&&!!Array.isArray(t)&&(null==(r=(0,n.getSegmentParam)(e))?void 0:r.param)===t[0]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77389:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return s.ReadonlyURLSearchParams},RedirectType:function(){return s.RedirectType},ServerInsertedHTMLContext:function(){return u.ServerInsertedHTMLContext},notFound:function(){return s.notFound},permanentRedirect:function(){return s.permanentRedirect},redirect:function(){return s.redirect},useParams:function(){return p},usePathname:function(){return d},useRouter:function(){return f},useSearchParams:function(){return c},useSelectedLayoutSegment:function(){return y},useSelectedLayoutSegments:function(){return h},useServerInsertedHTML:function(){return u.useServerInsertedHTML}});let n=r(17577),o=r(52413),a=r(97008),i=r(62162),l=r(68071),s=r(97375),u=r(93347);function c(){let e=(0,n.useContext)(a.SearchParamsContext),t=(0,n.useMemo)(()=>e?new s.ReadonlyURLSearchParams(e):null,[e]);{let{bailoutToClientRendering:e}=r(16136);e("useSearchParams()")}return t}function d(){return(0,n.useContext)(a.PathnameContext)}function f(){let e=(0,n.useContext)(o.AppRouterContext);if(null===e)throw Error("invariant expected app router to be mounted");return e}function p(){return(0,n.useContext)(a.PathParamsContext)}function h(e){void 0===e&&(e="children");let t=(0,n.useContext)(o.LayoutRouterContext);return t?function e(t,r,n,o){let a;if(void 0===n&&(n=!0),void 0===o&&(o=[]),n)a=t[1][r];else{var s;let e=t[1];a=null!=(s=e.children)?s:Object.values(e)[0]}if(!a)return o;let u=a[0],c=(0,i.getSegmentValue)(u);return!c||c.startsWith(l.PAGE_SEGMENT_KEY)?o:(o.push(c),e(a,r,!1,o))}(t.tree,e):null}function y(e){void 0===e&&(e="children");let t=h(e);if(!t||0===t.length)return null;let r="children"===e?t[0]:t[t.length-1];return r===l.DEFAULT_SEGMENT_KEY?null:r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},97375:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return i},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(62747),o=r(50706);class a extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class i extends URLSearchParams{append(){throw new a}delete(){throw new a}set(){throw new a}sort(){throw new a}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},41868:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NotFoundBoundary",{enumerable:!0,get:function(){return c}});let n=r(58374),o=r(10326),a=n._(r(17577)),i=r(77389),l=r(50706);r(576);let s=r(52413);class u extends a.default.Component{componentDidCatch(){}static getDerivedStateFromError(e){if((0,l.isNotFoundError)(e))return{notFoundTriggered:!0};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.notFoundTriggered?{notFoundTriggered:!1,previousPathname:e.pathname}:{notFoundTriggered:t.notFoundTriggered,previousPathname:e.pathname}}render(){return this.state.notFoundTriggered?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,this.props.notFoundStyles,this.props.notFound]}):this.props.children}constructor(e){super(e),this.state={notFoundTriggered:!!e.asNotFound,previousPathname:e.pathname}}}function c(e){let{notFound:t,notFoundStyles:r,asNotFound:n,children:l}=e,c=(0,i.usePathname)(),d=(0,a.useContext)(s.MissingSlotContext);return t?(0,o.jsx)(u,{pathname:c,notFound:t,notFoundStyles:r,asNotFound:n,missingSlots:d,children:l}):(0,o.jsx)(o.Fragment,{children:l})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},50706:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77815:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PromiseQueue",{enumerable:!0,get:function(){return u}});let n=r(98285),o=r(78817);var a=o._("_maxConcurrency"),i=o._("_runningCount"),l=o._("_queue"),s=o._("_processNext");class u{enqueue(e){let t,r;let o=new Promise((e,n)=>{t=e,r=n}),a=async()=>{try{n._(this,i)[i]++;let r=await e();t(r)}catch(e){r(e)}finally{n._(this,i)[i]--,n._(this,s)[s]()}};return n._(this,l)[l].push({promiseFn:o,task:a}),n._(this,s)[s](),o}bump(e){let t=n._(this,l)[l].findIndex(t=>t.promiseFn===e);if(t>-1){let e=n._(this,l)[l].splice(t,1)[0];n._(this,l)[l].unshift(e),n._(this,s)[s](!0)}}constructor(e=5){Object.defineProperty(this,s,{value:c}),Object.defineProperty(this,a,{writable:!0,value:void 0}),Object.defineProperty(this,i,{writable:!0,value:void 0}),Object.defineProperty(this,l,{writable:!0,value:void 0}),n._(this,a)[a]=e,n._(this,i)[i]=0,n._(this,l)[l]=[]}}function c(e){if(void 0===e&&(e=!1),(n._(this,i)[i]0){var t;null==(t=n._(this,l)[l].shift())||t.task()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},46265:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectBoundary:function(){return c},RedirectErrorBoundary:function(){return u}});let n=r(58374),o=r(10326),a=n._(r(17577)),i=r(77389),l=r(62747);function s(e){let{redirect:t,reset:r,redirectType:n}=e,o=(0,i.useRouter)();return(0,a.useEffect)(()=>{a.default.startTransition(()=>{n===l.RedirectType.push?o.push(t,{}):o.replace(t,{}),r()})},[t,n,r,o]),null}class u extends a.default.Component{static getDerivedStateFromError(e){if((0,l.isRedirectError)(e))return{redirect:(0,l.getURLFromRedirectError)(e),redirectType:(0,l.getRedirectTypeFromError)(e)};throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(s,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}constructor(e){super(e),this.state={redirect:null,redirectType:null}}}function c(e){let{children:t}=e,r=(0,i.useRouter)();return(0,o.jsx)(u,{router:r,children:t})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},28778:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},62747:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return s},getRedirectStatusCodeFromError:function(){return h},getRedirectTypeFromError:function(){return p},getURLFromRedirectError:function(){return f},isRedirectError:function(){return d},permanentRedirect:function(){return c},redirect:function(){return u}});let o=r(54580),a=r(72934),i=r(28778),l="NEXT_REDIRECT";function s(e,t,r){void 0===r&&(r=i.RedirectStatusCode.TemporaryRedirect);let n=Error(l);n.digest=l+";"+t+";"+e+";"+r+";";let a=o.requestAsyncStorage.getStore();return a&&(n.mutableCookies=a.mutableCookies),n}function u(e,t){void 0===t&&(t="replace");let r=a.actionAsyncStorage.getStore();throw s(e,t,(null==r?void 0:r.isAction)?i.RedirectStatusCode.SeeOther:i.RedirectStatusCode.TemporaryRedirect)}function c(e,t){void 0===t&&(t="replace");let r=a.actionAsyncStorage.getStore();throw s(e,t,(null==r?void 0:r.isAction)?i.RedirectStatusCode.SeeOther:i.RedirectStatusCode.PermanentRedirect)}function d(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),a=Number(o);return t===l&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(a)&&a in i.RedirectStatusCode}function f(e){return d(e)?e.digest.split(";",3)[2]:null}function p(e){if(!d(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function h(e){if(!d(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},84759:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return l}});let n=r(58374),o=r(10326),a=n._(r(17577)),i=r(52413);function l(){let e=(0,a.useContext)(i.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9894:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyFlightData",{enumerable:!0,get:function(){return a}});let n=r(114),o=r(19056);function a(e,t,r,a){let[i,l,s]=r.slice(-3);if(null===l)return!1;if(3===r.length){let r=l[2],o=l[3];t.loading=o,t.rsc=r,t.prefetchRsc=null,(0,n.fillLazyItemsTillLeafWithHead)(t,e,i,l,s,a)}else t.rsc=e.rsc,t.prefetchRsc=e.prefetchRsc,t.parallelRoutes=new Map(e.parallelRoutes),t.loading=e.loading,(0,o.fillCacheWithNewSubTreeData)(t,e,r,a);return!0}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},95166:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyRouterStatePatchToTree",{enumerable:!0,get:function(){return function e(t,r,n,l){let s;let[u,c,d,f,p]=r;if(1===t.length){let e=i(r,n,t);return(0,a.addRefreshMarkerToActiveParallelSegments)(e,l),e}let[h,y]=t;if(!(0,o.matchSegment)(h,u))return null;if(2===t.length)s=i(c[y],n,t);else if(null===(s=e(t.slice(2),c[y],n,l)))return null;let m=[t[0],{...c,[y]:s},d,f];return p&&(m[4]=!0),(0,a.addRefreshMarkerToActiveParallelSegments)(m,l),m}}});let n=r(68071),o=r(70455),a=r(84158);function i(e,t,r){let[a,l]=e,[s,u]=t;if(s===n.DEFAULT_SEGMENT_KEY&&a!==n.DEFAULT_SEGMENT_KEY)return e;if((0,o.matchSegment)(a,s)){let t={};for(let e in l)void 0!==u[e]?t[e]=i(l[e],u[e],r):t[e]=l[e];for(let e in u)t[e]||(t[e]=u[e]);let n=[a,t];return e[2]&&(n[2]=e[2]),e[3]&&(n[3]=e[3]),e[4]&&(n[4]=e[4]),n}return t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},12895:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"clearCacheNodeDataForSegmentPath",{enumerable:!0,get:function(){return function e(t,r,o){let a=o.length<=2,[i,l]=o,s=(0,n.createRouterCacheKey)(l),u=r.parallelRoutes.get(i),c=t.parallelRoutes.get(i);c&&c!==u||(c=new Map(u),t.parallelRoutes.set(i,c));let d=null==u?void 0:u.get(s),f=c.get(s);if(a){f&&f.lazyData&&f!==d||c.set(s,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}if(!f||!d){f||c.set(s,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}return f===d&&(f={lazyData:f.lazyData,rsc:f.rsc,prefetchRsc:f.prefetchRsc,head:f.head,prefetchHead:f.prefetchHead,parallelRoutes:new Map(f.parallelRoutes),lazyDataResolved:f.lazyDataResolved,loading:f.loading},c.set(s,f)),e(f,d,o.slice(2))}}});let n=r(39886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},47326:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{computeChangedPath:function(){return c},extractPathFromFlightRouterState:function(){return u}});let n=r(87356),o=r(68071),a=r(70455),i=e=>"/"===e[0]?e.slice(1):e,l=e=>"string"==typeof e?"children"===e?"":e:e[1];function s(e){return e.reduce((e,t)=>""===(t=i(t))||(0,o.isGroupSegment)(t)?e:e+"/"+t,"")||"/"}function u(e){var t;let r=Array.isArray(e[0])?e[0][1]:e[0];if(r===o.DEFAULT_SEGMENT_KEY||n.INTERCEPTION_ROUTE_MARKERS.some(e=>r.startsWith(e)))return;if(r.startsWith(o.PAGE_SEGMENT_KEY))return"";let a=[l(r)],i=null!=(t=e[1])?t:{},c=i.children?u(i.children):void 0;if(void 0!==c)a.push(c);else for(let[e,t]of Object.entries(i)){if("children"===e)continue;let r=u(t);void 0!==r&&a.push(r)}return s(a)}function c(e,t){let r=function e(t,r){let[o,i]=t,[s,c]=r,d=l(o),f=l(s);if(n.INTERCEPTION_ROUTE_MARKERS.some(e=>d.startsWith(e)||f.startsWith(e)))return"";if(!(0,a.matchSegment)(o,s)){var p;return null!=(p=u(r))?p:""}for(let t in i)if(c[t]){let r=e(i[t],c[t]);if(null!==r)return l(s)+"/"+r}return null}(e,t);return null==r||"/"===r?r:s(r.split("/"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},17584:(e,t)=>{"use strict";function r(e,t){return void 0===t&&(t=!0),e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createHrefFromUrl",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6199:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createInitialRouterState",{enumerable:!0,get:function(){return u}});let n=r(17584),o=r(114),a=r(47326),i=r(79373),l=r(57767),s=r(84158);function u(e){var t;let{buildId:r,initialTree:u,initialSeedData:c,urlParts:d,initialParallelRoutes:f,location:p,initialHead:h,couldBeIntercepted:y}=e,m=d.join("/"),b=!p,g={lazyData:null,rsc:c[2],prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:b?new Map:f,lazyDataResolved:!1,loading:c[3]},v=p?(0,n.createHrefFromUrl)(p):m;(0,s.addRefreshMarkerToActiveParallelSegments)(u,v);let _=new Map;(null===f||0===f.size)&&(0,o.fillLazyItemsTillLeafWithHead)(g,void 0,u,c,h);let P={buildId:r,tree:u,cache:g,prefetchCache:_,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:v,nextUrl:null!=(t=(0,a.extractPathFromFlightRouterState)(u)||(null==p?void 0:p.pathname))?t:null};if(p){let e=new URL(""+p.pathname+p.search,p.origin),t=[["",u,null,null]];(0,i.createPrefetchCacheEntryForInitialLoad)({url:e,kind:l.PrefetchKind.AUTO,data:[t,void 0,!1,y],tree:P.tree,prefetchCache:P.prefetchCache,nextUrl:P.nextUrl})}return P}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},39886:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=r(68071);function o(e,t){return(void 0===t&&(t=!1),Array.isArray(e))?e[0]+"|"+e[1]+"|"+e[2]:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9009:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fetchServerResponse",{enumerable:!0,get:function(){return d}});let n=r(5138),o=r(12994),a=r(15424),i=r(57767),l=r(92165),s=r(67542),{createFromFetch:u}=r(56493);function c(e){return[(0,o.urlToUrlWithoutFlightMarker)(e).toString(),void 0,!1,!1]}async function d(e,t,r,d,f){let p={[n.RSC_HEADER]:"1",[n.NEXT_ROUTER_STATE_TREE]:(0,s.prepareFlightRouterStateForRequest)(t)};f===i.PrefetchKind.AUTO&&(p[n.NEXT_ROUTER_PREFETCH_HEADER]="1"),r&&(p[n.NEXT_URL]=r);let h=(0,l.hexHash)([p[n.NEXT_ROUTER_PREFETCH_HEADER]||"0",p[n.NEXT_ROUTER_STATE_TREE],p[n.NEXT_URL]].join(","));try{var y;let t=new URL(e);t.searchParams.set(n.NEXT_RSC_UNION_QUERY,h);let r=await fetch(t,{credentials:"same-origin",headers:p}),i=(0,o.urlToUrlWithoutFlightMarker)(r.url),l=r.redirected?i:void 0,s=r.headers.get("content-type")||"",f=!!r.headers.get(n.NEXT_DID_POSTPONE_HEADER),m=!!(null==(y=r.headers.get("vary"))?void 0:y.includes(n.NEXT_URL));if(s!==n.RSC_CONTENT_TYPE_HEADER||!r.ok)return e.hash&&(i.hash=e.hash),c(i.toString());let[b,g]=await u(Promise.resolve(r),{callServer:a.callServer});if(d!==b)return c(r.url);return[g,l,f,m]}catch(t){return console.error("Failed to fetch RSC payload for "+e+". Falling back to browser navigation.",t),[e.toString(),void 0,!1,!1]}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},19056:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillCacheWithNewSubTreeData",{enumerable:!0,get:function(){return function e(t,r,i,l){let s=i.length<=5,[u,c]=i,d=(0,a.createRouterCacheKey)(c),f=r.parallelRoutes.get(u);if(!f)return;let p=t.parallelRoutes.get(u);p&&p!==f||(p=new Map(f),t.parallelRoutes.set(u,p));let h=f.get(d),y=p.get(d);if(s){if(!y||!y.lazyData||y===h){let e=i[3];y={lazyData:null,rsc:e[2],prefetchRsc:null,head:null,prefetchHead:null,loading:e[3],parallelRoutes:h?new Map(h.parallelRoutes):new Map,lazyDataResolved:!1},h&&(0,n.invalidateCacheByRouterState)(y,h,i[2]),(0,o.fillLazyItemsTillLeafWithHead)(y,h,i[2],e,i[4],l),p.set(d,y)}return}y&&h&&(y===h&&(y={lazyData:y.lazyData,rsc:y.rsc,prefetchRsc:y.prefetchRsc,head:y.head,prefetchHead:y.prefetchHead,parallelRoutes:new Map(y.parallelRoutes),lazyDataResolved:!1,loading:y.loading},p.set(d,y)),e(y,h,i.slice(2),l))}}});let n=r(2498),o=r(114),a=r(39886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},114:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillLazyItemsTillLeafWithHead",{enumerable:!0,get:function(){return function e(t,r,a,i,l,s){if(0===Object.keys(a[1]).length){t.head=l;return}for(let u in a[1]){let c;let d=a[1][u],f=d[0],p=(0,n.createRouterCacheKey)(f),h=null!==i&&void 0!==i[1][u]?i[1][u]:null;if(r){let n=r.parallelRoutes.get(u);if(n){let r;let a=(null==s?void 0:s.kind)==="auto"&&s.status===o.PrefetchCacheEntryStatus.reusable,i=new Map(n),c=i.get(p);r=null!==h?{lazyData:null,rsc:h[2],prefetchRsc:null,head:null,prefetchHead:null,loading:h[3],parallelRoutes:new Map(null==c?void 0:c.parallelRoutes),lazyDataResolved:!1}:a&&c?{lazyData:c.lazyData,rsc:c.rsc,prefetchRsc:c.prefetchRsc,head:c.head,prefetchHead:c.prefetchHead,parallelRoutes:new Map(c.parallelRoutes),lazyDataResolved:c.lazyDataResolved,loading:c.loading}:{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map(null==c?void 0:c.parallelRoutes),lazyDataResolved:!1,loading:null},i.set(p,r),e(r,c,d,h||null,l,s),t.parallelRoutes.set(u,i);continue}}if(null!==h){let e=h[2],t=h[3];c={lazyData:null,rsc:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:t}}else c={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};let y=t.parallelRoutes.get(u);y?y.set(p,c):t.parallelRoutes.set(u,new Map([[p,c]])),e(c,void 0,d,h,l,s)}}}});let n=r(39886),o=r(57767);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},17252:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleMutable",{enumerable:!0,get:function(){return a}});let n=r(47326);function o(e){return void 0!==e}function a(e,t){var r,a,i;let l=null==(a=t.shouldScroll)||a,s=e.nextUrl;if(o(t.patchedTree)){let r=(0,n.computeChangedPath)(e.tree,t.patchedTree);r?s=r:s||(s=e.canonicalUrl)}return{buildId:e.buildId,canonicalUrl:o(t.canonicalUrl)?t.canonicalUrl===e.canonicalUrl?e.canonicalUrl:t.canonicalUrl:e.canonicalUrl,pushRef:{pendingPush:o(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:o(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:o(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!l&&(!!o(null==t?void 0:t.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:!!t.hashFragment&&e.canonicalUrl.split("#",1)[0]===(null==(r=t.canonicalUrl)?void 0:r.split("#",1)[0]),hashFragment:l?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:l?null!=(i=null==t?void 0:t.scrollableSegments)?i:e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,prefetchCache:t.prefetchCache?t.prefetchCache:e.prefetchCache,tree:o(t.patchedTree)?t.patchedTree:e.tree,nextUrl:s}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},65652:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSegmentMismatch",{enumerable:!0,get:function(){return o}});let n=r(20941);function o(e,t,r){return(0,n.handleExternalUrl)(e,{},e.canonicalUrl,!0)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},43193:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheBelowFlightSegmentPath",{enumerable:!0,get:function(){return function e(t,r,o){let a=o.length<=2,[i,l]=o,s=(0,n.createRouterCacheKey)(l),u=r.parallelRoutes.get(i);if(!u)return;let c=t.parallelRoutes.get(i);if(c&&c!==u||(c=new Map(u),t.parallelRoutes.set(i,c)),a){c.delete(s);return}let d=u.get(s),f=c.get(s);f&&d&&(f===d&&(f={lazyData:f.lazyData,rsc:f.rsc,prefetchRsc:f.prefetchRsc,head:f.head,prefetchHead:f.prefetchHead,parallelRoutes:new Map(f.parallelRoutes),lazyDataResolved:f.lazyDataResolved},c.set(s,f)),e(f,d,o.slice(2)))}}});let n=r(39886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2498:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheByRouterState",{enumerable:!0,get:function(){return o}});let n=r(39886);function o(e,t,r){for(let o in r[1]){let a=r[1][o][0],i=(0,n.createRouterCacheKey)(a),l=t.parallelRoutes.get(o);if(l){let t=new Map(l);t.delete(i),e.parallelRoutes.set(o,t)}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},23772:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,r){let n=t[0],o=r[0];if(Array.isArray(n)&&Array.isArray(o)){if(n[0]!==o[0]||n[2]!==o[2])return!0}else if(n!==o)return!0;if(t[4])return!r[4];if(r[4])return!0;let a=Object.values(t[1])[0],i=Object.values(r[1])[0];return!a||!i||e(a,i)}}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},68831:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{abortTask:function(){return u},listenForDynamicRequest:function(){return l},updateCacheNodeOnNavigation:function(){return function e(t,r,l,u,c){let d=r[1],f=l[1],p=u[1],h=t.parallelRoutes,y=new Map(h),m={},b=null;for(let t in f){let r;let l=f[t],u=d[t],g=h.get(t),v=p[t],_=l[0],P=(0,a.createRouterCacheKey)(_),w=void 0!==u?u[0]:void 0,E=void 0!==g?g.get(P):void 0;if(null!==(r=_===n.PAGE_SEGMENT_KEY?i(l,void 0!==v?v:null,c):_===n.DEFAULT_SEGMENT_KEY?void 0!==u?{route:u,node:null,children:null}:i(l,void 0!==v?v:null,c):void 0!==w&&(0,o.matchSegment)(_,w)&&void 0!==E&&void 0!==u?null!=v?e(E,u,l,v,c):function(e){let t=s(e,null,null);return{route:e,node:t,children:null}}(l):i(l,void 0!==v?v:null,c))){null===b&&(b=new Map),b.set(t,r);let e=r.node;if(null!==e){let r=new Map(g);r.set(P,e),y.set(t,r)}m[t]=r.route}else m[t]=l}if(null===b)return null;let g={lazyData:null,rsc:t.rsc,prefetchRsc:t.prefetchRsc,head:t.head,prefetchHead:t.prefetchHead,loading:t.loading,parallelRoutes:y,lazyDataResolved:!1};return{route:function(e,t){let r=[e[0],t];return 2 in e&&(r[2]=e[2]),3 in e&&(r[3]=e[3]),4 in e&&(r[4]=e[4]),r}(l,m),node:g,children:b}}},updateCacheNodeOnPopstateRestoration:function(){return function e(t,r){let n=r[1],o=t.parallelRoutes,i=new Map(o);for(let t in n){let r=n[t],l=r[0],s=(0,a.createRouterCacheKey)(l),u=o.get(t);if(void 0!==u){let n=u.get(s);if(void 0!==n){let o=e(n,r),a=new Map(u);a.set(s,o),i.set(t,a)}}}let l=t.rsc,s=f(l)&&"pending"===l.status;return{lazyData:null,rsc:l,head:t.head,prefetchHead:s?t.prefetchHead:null,prefetchRsc:s?t.prefetchRsc:null,loading:s?t.loading:null,parallelRoutes:i,lazyDataResolved:!1}}}});let n=r(68071),o=r(70455),a=r(39886);function i(e,t,r){let n=s(e,t,r);return{route:e,node:n,children:null}}function l(e,t){t.then(t=>{for(let r of t[0]){let t=r.slice(0,-3),n=r[r.length-3],i=r[r.length-2],l=r[r.length-1];"string"!=typeof t&&function(e,t,r,n,i){let l=e;for(let e=0;e{u(e,t)})}function s(e,t,r){let n=e[1],o=null!==t?t[1]:null,i=new Map;for(let e in n){let t=n[e],l=null!==o?o[e]:null,u=t[0],c=(0,a.createRouterCacheKey)(u),d=s(t,void 0===l?null:l,r),f=new Map;f.set(c,d),i.set(e,f)}let l=0===i.size,u=null!==t?t[2]:null,c=null!==t?t[3]:null;return{lazyData:null,parallelRoutes:i,prefetchRsc:void 0!==u?u:null,prefetchHead:l?r:null,loading:void 0!==c?c:null,rsc:p(),head:l?p():null,lazyDataResolved:!1}}function u(e,t){let r=e.node;if(null===r)return;let n=e.children;if(null===n)c(e.route,r,t);else for(let e of n.values())u(e,t);e.node=null}function c(e,t,r){let n=e[1],o=t.parallelRoutes;for(let e in n){let t=n[e],i=o.get(e);if(void 0===i)continue;let l=t[0],s=(0,a.createRouterCacheKey)(l),u=i.get(s);void 0!==u&&c(t,u,r)}let i=t.rsc;f(i)&&(null===r?i.resolve(null):i.reject(r));let l=t.head;f(l)&&l.resolve(null)}let d=Symbol();function f(e){return e&&e.tag===d}function p(){let e,t;let r=new Promise((r,n)=>{e=r,t=n});return r.status="pending",r.resolve=t=>{"pending"===r.status&&(r.status="fulfilled",r.value=t,e(t))},r.reject=e=>{"pending"===r.status&&(r.status="rejected",r.reason=e,t(e))},r.tag=d,r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},79373:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createPrefetchCacheEntryForInitialLoad:function(){return u},getOrCreatePrefetchCacheEntry:function(){return s},prunePrefetchCache:function(){return d}});let n=r(17584),o=r(9009),a=r(57767),i=r(61156);function l(e,t){let r=(0,n.createHrefFromUrl)(e,!1);return t?t+"%"+r:r}function s(e){let t,{url:r,nextUrl:n,tree:o,buildId:i,prefetchCache:s,kind:u}=e,d=l(r,n),f=s.get(d);if(f)t=f;else{let e=l(r),n=s.get(e);n&&(t=n)}return t?(t.status=h(t),t.kind!==a.PrefetchKind.FULL&&u===a.PrefetchKind.FULL)?c({tree:o,url:r,buildId:i,nextUrl:n,prefetchCache:s,kind:null!=u?u:a.PrefetchKind.TEMPORARY}):(u&&t.kind===a.PrefetchKind.TEMPORARY&&(t.kind=u),t):c({tree:o,url:r,buildId:i,nextUrl:n,prefetchCache:s,kind:u||a.PrefetchKind.TEMPORARY})}function u(e){let{nextUrl:t,tree:r,prefetchCache:n,url:o,kind:i,data:s}=e,[,,,u]=s,c=u?l(o,t):l(o),d={treeAtTimeOfPrefetch:r,data:Promise.resolve(s),kind:i,prefetchTime:Date.now(),lastUsedTime:Date.now(),key:c,status:a.PrefetchCacheEntryStatus.fresh};return n.set(c,d),d}function c(e){let{url:t,kind:r,tree:n,nextUrl:s,buildId:u,prefetchCache:c}=e,d=l(t),f=i.prefetchQueue.enqueue(()=>(0,o.fetchServerResponse)(t,n,s,u,r).then(e=>{let[,,,r]=e;return r&&function(e){let{url:t,nextUrl:r,prefetchCache:n}=e,o=l(t),a=n.get(o);if(!a)return;let i=l(t,r);n.set(i,a),n.delete(o)}({url:t,nextUrl:s,prefetchCache:c}),e})),p={treeAtTimeOfPrefetch:n,data:f,kind:r,prefetchTime:Date.now(),lastUsedTime:null,key:d,status:a.PrefetchCacheEntryStatus.fresh};return c.set(d,p),p}function d(e){for(let[t,r]of e)h(r)===a.PrefetchCacheEntryStatus.expired&&e.delete(t)}let f=1e3*Number("30"),p=1e3*Number("300");function h(e){let{kind:t,prefetchTime:r,lastUsedTime:n}=e;return Date.now()<(null!=n?n:r)+f?n?a.PrefetchCacheEntryStatus.reusable:a.PrefetchCacheEntryStatus.fresh:"auto"===t&&Date.now(){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fastRefreshReducer",{enumerable:!0,get:function(){return n}}),r(9009),r(17584),r(95166),r(23772),r(20941),r(17252),r(9894),r(12994),r(65652),r(45262);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},22492:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findHeadInCache",{enumerable:!0,get:function(){return o}});let n=r(39886);function o(e,t){return function e(t,r,o){if(0===Object.keys(r).length)return[t,o];for(let a in r){let[i,l]=r[a],s=t.parallelRoutes.get(a);if(!s)continue;let u=(0,n.createRouterCacheKey)(i),c=s.get(u);if(!c)continue;let d=e(c,l,o+"/"+u);if(d)return d}return null}(e,t,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},62162:(e,t)=>{"use strict";function r(e){return Array.isArray(e)?e[1]:e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentValue",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},45262:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasInterceptionRouteInCurrentTree",{enumerable:!0,get:function(){return function e(t){let[r,o]=t;if(Array.isArray(r)&&("di"===r[2]||"ci"===r[2])||"string"==typeof r&&(0,n.isInterceptionRouteAppPath)(r))return!0;if(o){for(let t in o)if(e(o[t]))return!0}return!1}}});let n=r(87356);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},20941:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleExternalUrl:function(){return m},navigateReducer:function(){return g}}),r(9009);let n=r(17584),o=r(43193),a=r(95166),i=r(54614),l=r(23772),s=r(57767),u=r(17252),c=r(9894),d=r(61156),f=r(12994),p=r(68071),h=(r(68831),r(79373)),y=r(12895);function m(e,t,r,n){return t.mpaNavigation=!0,t.canonicalUrl=r,t.pendingPush=n,t.scrollableSegments=void 0,(0,u.handleMutable)(e,t)}function b(e){let t=[],[r,n]=e;if(0===Object.keys(n).length)return[[r]];for(let[e,o]of Object.entries(n))for(let n of b(o))""===r?t.push([e,...n]):t.push([r,e,...n]);return t}let g=function(e,t){let{url:r,isExternalUrl:g,navigateType:v,shouldScroll:_}=t,P={},{hash:w}=r,E=(0,n.createHrefFromUrl)(r),R="push"===v;if((0,h.prunePrefetchCache)(e.prefetchCache),P.preserveCustomHistoryState=!1,g)return m(e,P,r.toString(),R);let O=(0,h.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,tree:e.tree,buildId:e.buildId,prefetchCache:e.prefetchCache}),{treeAtTimeOfPrefetch:j,data:x}=O;return d.prefetchQueue.bump(x),x.then(t=>{let[r,d]=t,h=!1;if(O.lastUsedTime||(O.lastUsedTime=Date.now(),h=!0),"string"==typeof r)return m(e,P,r,R);if(document.getElementById("__next-page-redirect"))return m(e,P,E,R);let g=e.tree,v=e.cache,x=[];for(let t of r){let r=t.slice(0,-4),n=t.slice(-3)[0],u=["",...r],d=(0,a.applyRouterStatePatchToTree)(u,g,n,E);if(null===d&&(d=(0,a.applyRouterStatePatchToTree)(u,j,n,E)),null!==d){if((0,l.isNavigatingToNewRootLayout)(g,d))return m(e,P,E,R);let a=(0,f.createEmptyCacheNode)(),_=!1;for(let e of(O.status!==s.PrefetchCacheEntryStatus.stale||h?_=(0,c.applyFlightData)(v,a,t,O):(_=function(e,t,r,n){let o=!1;for(let a of(e.rsc=t.rsc,e.prefetchRsc=t.prefetchRsc,e.loading=t.loading,e.parallelRoutes=new Map(t.parallelRoutes),b(n).map(e=>[...r,...e])))(0,y.clearCacheNodeDataForSegmentPath)(e,t,a),o=!0;return o}(a,v,r,n),O.lastUsedTime=Date.now()),(0,i.shouldHardNavigate)(u,g)?(a.rsc=v.rsc,a.prefetchRsc=v.prefetchRsc,(0,o.invalidateCacheBelowFlightSegmentPath)(a,v,r),P.cache=a):_&&(P.cache=a,v=a),g=d,b(n))){let t=[...r,...e];t[t.length-1]!==p.DEFAULT_SEGMENT_KEY&&x.push(t)}}}return P.patchedTree=g,P.canonicalUrl=d?(0,n.createHrefFromUrl)(d):E,P.pendingPush=R,P.scrollableSegments=x,P.hashFragment=w,P.shouldScroll=_,(0,u.handleMutable)(e,P)},()=>e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},61156:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{prefetchQueue:function(){return i},prefetchReducer:function(){return l}});let n=r(5138),o=r(77815),a=r(79373),i=new o.PromiseQueue(5);function l(e,t){(0,a.prunePrefetchCache)(e.prefetchCache);let{url:r}=t;return r.searchParams.delete(n.NEXT_RSC_UNION_QUERY),(0,a.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,prefetchCache:e.prefetchCache,kind:t.kind,tree:e.tree,buildId:e.buildId}),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},69809:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"refreshReducer",{enumerable:!0,get:function(){return h}});let n=r(9009),o=r(17584),a=r(95166),i=r(23772),l=r(20941),s=r(17252),u=r(114),c=r(12994),d=r(65652),f=r(45262),p=r(84158);function h(e,t){let{origin:r}=t,h={},y=e.canonicalUrl,m=e.tree;h.preserveCustomHistoryState=!1;let b=(0,c.createEmptyCacheNode)(),g=(0,f.hasInterceptionRouteInCurrentTree)(e.tree);return b.lazyData=(0,n.fetchServerResponse)(new URL(y,r),[m[0],m[1],m[2],"refetch"],g?e.nextUrl:null,e.buildId),b.lazyData.then(async r=>{let[n,c]=r;if("string"==typeof n)return(0,l.handleExternalUrl)(e,h,n,e.pushRef.pendingPush);for(let r of(b.lazyData=null,n)){if(3!==r.length)return console.log("REFRESH FAILED"),e;let[n]=r,s=(0,a.applyRouterStatePatchToTree)([""],m,n,e.canonicalUrl);if(null===s)return(0,d.handleSegmentMismatch)(e,t,n);if((0,i.isNavigatingToNewRootLayout)(m,s))return(0,l.handleExternalUrl)(e,h,y,e.pushRef.pendingPush);let f=c?(0,o.createHrefFromUrl)(c):void 0;c&&(h.canonicalUrl=f);let[v,_]=r.slice(-2);if(null!==v){let e=v[2];b.rsc=e,b.prefetchRsc=null,(0,u.fillLazyItemsTillLeafWithHead)(b,void 0,n,v,_),h.prefetchCache=new Map}await (0,p.refreshInactiveParallelSegments)({state:e,updatedTree:s,updatedCache:b,includeNextUrl:g,canonicalUrl:h.canonicalUrl||e.canonicalUrl}),h.cache=b,h.patchedTree=s,h.canonicalUrl=y,m=s}return(0,s.handleMutable)(e,h)},()=>e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},85608:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"restoreReducer",{enumerable:!0,get:function(){return a}});let n=r(17584),o=r(47326);function a(e,t){var r;let{url:a,tree:i}=t,l=(0,n.createHrefFromUrl)(a),s=i||e.tree,u=e.cache;return{buildId:e.buildId,canonicalUrl:l,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:u,prefetchCache:e.prefetchCache,tree:s,nextUrl:null!=(r=(0,o.extractPathFromFlightRouterState)(s))?r:a.pathname}}r(68831),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},25240:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverActionReducer",{enumerable:!0,get:function(){return _}});let n=r(15424),o=r(5138),a=r(3486),i=r(17584),l=r(20941),s=r(95166),u=r(23772),c=r(17252),d=r(114),f=r(12994),p=r(45262),h=r(65652),y=r(84158),m=r(67542),{createFromFetch:b,encodeReply:g}=r(56493);async function v(e,t,r){let i,{actionId:l,actionArgs:s}=r,u=await g(s),c=await fetch("",{method:"POST",headers:{Accept:o.RSC_CONTENT_TYPE_HEADER,[o.ACTION]:l,[o.NEXT_ROUTER_STATE_TREE]:(0,m.prepareFlightRouterStateForRequest)(e.tree),...t?{[o.NEXT_URL]:t}:{}},body:u}),d=c.headers.get("x-action-redirect");try{let e=JSON.parse(c.headers.get("x-action-revalidated")||"[[],0,0]");i={paths:e[0]||[],tag:!!e[1],cookie:e[2]}}catch(e){i={paths:[],tag:!1,cookie:!1}}let f=d?new URL((0,a.addBasePath)(d),new URL(e.canonicalUrl,window.location.href)):void 0;if(c.headers.get("content-type")===o.RSC_CONTENT_TYPE_HEADER){let e=await b(Promise.resolve(c),{callServer:n.callServer});if(d){let[,t]=null!=e?e:[];return{actionFlightData:t,redirectLocation:f,revalidatedParts:i}}let[t,[,r]]=null!=e?e:[];return{actionResult:t,actionFlightData:r,redirectLocation:f,revalidatedParts:i}}return{redirectLocation:f,revalidatedParts:i}}function _(e,t){let{resolve:r,reject:n}=t,o={},a=e.canonicalUrl,m=e.tree;o.preserveCustomHistoryState=!1;let b=e.nextUrl&&(0,p.hasInterceptionRouteInCurrentTree)(e.tree)?e.nextUrl:null;return o.inFlightServerAction=v(e,b,t),o.inFlightServerAction.then(async n=>{let{actionResult:p,actionFlightData:g,redirectLocation:v}=n;if(v&&(e.pushRef.pendingPush=!0,o.pendingPush=!0),!g)return(r(p),v)?(0,l.handleExternalUrl)(e,o,v.href,e.pushRef.pendingPush):e;if("string"==typeof g)return(0,l.handleExternalUrl)(e,o,g,e.pushRef.pendingPush);if(o.inFlightServerAction=null,v){let e=(0,i.createHrefFromUrl)(v,!1);o.canonicalUrl=e}for(let r of g){if(3!==r.length)return console.log("SERVER ACTION APPLY FAILED"),e;let[n]=r,c=(0,s.applyRouterStatePatchToTree)([""],m,n,v?(0,i.createHrefFromUrl)(v):e.canonicalUrl);if(null===c)return(0,h.handleSegmentMismatch)(e,t,n);if((0,u.isNavigatingToNewRootLayout)(m,c))return(0,l.handleExternalUrl)(e,o,a,e.pushRef.pendingPush);let[p,g]=r.slice(-2),_=null!==p?p[2]:null;if(null!==_){let t=(0,f.createEmptyCacheNode)();t.rsc=_,t.prefetchRsc=null,(0,d.fillLazyItemsTillLeafWithHead)(t,void 0,n,p,g),await (0,y.refreshInactiveParallelSegments)({state:e,updatedTree:c,updatedCache:t,includeNextUrl:!!b,canonicalUrl:o.canonicalUrl||e.canonicalUrl}),o.cache=t,o.prefetchCache=new Map}o.patchedTree=c,m=c}return r(p),(0,c.handleMutable)(e,o)},t=>(n(t),e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},14025:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverPatchReducer",{enumerable:!0,get:function(){return d}});let n=r(17584),o=r(95166),a=r(23772),i=r(20941),l=r(9894),s=r(17252),u=r(12994),c=r(65652);function d(e,t){let{serverResponse:r}=t,[d,f]=r,p={};if(p.preserveCustomHistoryState=!1,"string"==typeof d)return(0,i.handleExternalUrl)(e,p,d,e.pushRef.pendingPush);let h=e.tree,y=e.cache;for(let r of d){let s=r.slice(0,-4),[d]=r.slice(-3,-2),m=(0,o.applyRouterStatePatchToTree)(["",...s],h,d,e.canonicalUrl);if(null===m)return(0,c.handleSegmentMismatch)(e,t,d);if((0,a.isNavigatingToNewRootLayout)(h,m))return(0,i.handleExternalUrl)(e,p,e.canonicalUrl,e.pushRef.pendingPush);let b=f?(0,n.createHrefFromUrl)(f):void 0;b&&(p.canonicalUrl=b);let g=(0,u.createEmptyCacheNode)();(0,l.applyFlightData)(y,g,r),p.patchedTree=m,p.cache=g,y=g,h=m}return(0,s.handleMutable)(e,p)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},84158:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addRefreshMarkerToActiveParallelSegments:function(){return function e(t,r){let[n,o,,i]=t;for(let l in n.includes(a.PAGE_SEGMENT_KEY)&&"refresh"!==i&&(t[2]=r,t[3]="refresh"),o)e(o[l],r)}},refreshInactiveParallelSegments:function(){return i}});let n=r(9894),o=r(9009),a=r(68071);async function i(e){let t=new Set;await l({...e,rootTree:e.updatedTree,fetchedSegments:t})}async function l(e){let{state:t,updatedTree:r,updatedCache:a,includeNextUrl:i,fetchedSegments:s,rootTree:u=r,canonicalUrl:c}=e,[,d,f,p]=r,h=[];if(f&&f!==c&&"refresh"===p&&!s.has(f)){s.add(f);let e=(0,o.fetchServerResponse)(new URL(f,location.origin),[u[0],u[1],u[2],"refetch"],i?t.nextUrl:null,t.buildId).then(e=>{let t=e[0];if("string"!=typeof t)for(let e of t)(0,n.applyFlightData)(a,a,e)});h.push(e)}for(let e in d){let r=l({state:t,updatedTree:d[e],updatedCache:a,includeNextUrl:i,fetchedSegments:s,rootTree:u,canonicalUrl:c});h.push(r)}await Promise.all(h)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},57767:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_FAST_REFRESH:function(){return u},ACTION_NAVIGATE:function(){return a},ACTION_PREFETCH:function(){return s},ACTION_REFRESH:function(){return o},ACTION_RESTORE:function(){return i},ACTION_SERVER_ACTION:function(){return c},ACTION_SERVER_PATCH:function(){return l},PrefetchCacheEntryStatus:function(){return n},PrefetchKind:function(){return r},isThenable:function(){return d}});let o="refresh",a="navigate",i="restore",l="server-patch",s="prefetch",u="fast-refresh",c="server-action";function d(e){return e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}(function(e){e.AUTO="auto",e.FULL="full",e.TEMPORARY="temporary"})(r||(r={})),function(e){e.fresh="fresh",e.reusable="reusable",e.expired="expired",e.stale="stale"}(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83860:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reducer",{enumerable:!0,get:function(){return n}}),r(57767),r(20941),r(14025),r(85608),r(69809),r(61156),r(95703),r(25240);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},54614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"shouldHardNavigate",{enumerable:!0,get:function(){return function e(t,r){let[o,a]=r,[i,l]=t;return(0,n.matchSegment)(i,o)?!(t.length<=2)&&e(t.slice(2),a[l]):!!Array.isArray(i)}}});let n=r(70455);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},23325:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createDynamicallyTrackedSearchParams:function(){return l},createUntrackedSearchParams:function(){return i}});let n=r(45869),o=r(52846),a=r(22255);function i(e){let t=n.staticGenerationAsyncStorage.getStore();return t&&t.forceStatic?{}:e}function l(e){let t=n.staticGenerationAsyncStorage.getStore();return t?t.forceStatic?{}:t.isStaticGeneration||t.dynamicShouldError?new Proxy({},{get:(e,r,n)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),a.ReflectAdapter.get(e,r,n)),has:(e,r)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),Reflect.has(e,r)),ownKeys:e=>((0,o.trackDynamicDataAccessed)(t,"searchParams"),Reflect.ownKeys(e))}):e:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},86488:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{StaticGenBailoutError:function(){return n},isStaticGenBailoutError:function(){return o}});let r="NEXT_STATIC_GEN_BAILOUT";class n extends Error{constructor(...e){super(...e),this.code=r}}function o(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},39519:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return r}});let r={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77326:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{useReducerWithReduxDevtools:function(){return l},useUnwrapState:function(){return i}});let n=r(58374)._(r(17577)),o=r(57767);function a(e){if(e instanceof Map){let t={};for(let[r,n]of e.entries()){if("function"==typeof n){t[r]="fn()";continue}if("object"==typeof n&&null!==n){if(n.$$typeof){t[r]=n.$$typeof.toString();continue}if(n._bundlerConfig){t[r]="FlightData";continue}}t[r]=a(n)}return t}if("object"==typeof e&&null!==e){let t={};for(let r in e){let n=e[r];if("function"==typeof n){t[r]="fn()";continue}if("object"==typeof n&&null!==n){if(n.$$typeof){t[r]=n.$$typeof.toString();continue}if(n.hasOwnProperty("_bundlerConfig")){t[r]="FlightData";continue}}t[r]=a(n)}return t}return Array.isArray(e)?e.map(a):e}function i(e){return(0,o.isThenable)(e)?(0,n.use)(e):e}r(33879);let l=function(e){return[e,()=>{},()=>{}]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},67542:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"prepareFlightRouterStateForRequest",{enumerable:!0,get:function(){return o}});let n=r(68071);function o(e,t){return t?encodeURIComponent(JSON.stringify(e)):encodeURIComponent(JSON.stringify(function e(t){let[r,o,,a,i]=t,l="string"==typeof r&&r.startsWith(n.PAGE_SEGMENT_KEY+"?")?n.PAGE_SEGMENT_KEY:r,s={};for(let[t,r]of Object.entries(o))s[t]=e(r);let u=[l,s,null,a&&"refresh"!==a?a:null];return void 0!==i&&(u[4]=i),u}(e)))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},37929:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let n=r(34655);function o(e){return(0,n.pathHasPrefix)(e,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},23658:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return a}});let n=r(83236),o=r(93067),a=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:a}=(0,o.parsePath)(e);return""+(0,n.removeTrailingSlash)(t)+r+a};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},74237:(e,t,r)=>{"use strict";function n(e){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return n}}),r(37929),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},56401:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getPathname:function(){return n},isFullStringUrl:function(){return o},parseUrl:function(){return a}});let r="http://n";function n(e){return new URL(e,r).pathname}function o(e){return/https?:\/\//.test(e)}function a(e){let t;try{t=new URL(e,r)}catch{}return t}},52846:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return b},createPrerenderState:function(){return s},formatDynamicAPIAccesses:function(){return y},markCurrentScopeAsDynamic:function(){return u},trackDynamicDataAccessed:function(){return c},trackDynamicFetch:function(){return f},usedDynamicAPIs:function(){return h}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(17577)),o=r(70442),a=r(86488),i=r(56401),l="function"==typeof n.default.unstable_postpone;function s(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function u(e,t){let r=(0,i.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}}function c(e,t){let r=(0,i.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${r} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}function d({reason:e,prerenderState:t,pathname:r}){p(t,e,r)}function f(e,t){e.prerenderState&&p(e.prerenderState,t,e.urlPathname)}function p(e,t,r){m();let o=`Route ${r} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),n.default.unstable_postpone(o)}function h(e){return e.dynamicAccesses.length>0}function y(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: +${t}`))}function m(){if(!l)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function b(e){m();let t=new AbortController;try{n.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},92357:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentParam",{enumerable:!0,get:function(){return o}});let n=r(87356);function o(e){let t=n.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t));return(t&&(e=e.slice(t.length)),e.startsWith("[[...")&&e.endsWith("]]"))?{type:"optional-catchall",param:e.slice(5,-2)}:e.startsWith("[...")&&e.endsWith("]")?{type:t?"catchall-intercepted":"catchall",param:e.slice(4,-1)}:e.startsWith("[")&&e.endsWith("]")?{type:t?"dynamic-intercepted":"dynamic",param:e.slice(1,-1)}:null}},87356:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return i},isInterceptionRouteAppPath:function(){return a}});let n=r(72862),o=["(..)(..)","(.)","(..)","(...)"];function a(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function i(e){let t,r,a;for(let n of e.split("/"))if(r=o.find(e=>n.startsWith(e))){[t,a]=e.split(r,2);break}if(!t||!r||!a)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,n.normalizeAppPath)(t),r){case"(.)":a="/"===t?`/${a}`:t+"/"+a;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);a=t.split("/").slice(0,-1).concat(a).join("/");break;case"(...)":a="/"+a;break;case"(..)(..)":let i=t.split("/");if(i.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);a=i.slice(0,-2).concat(a).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:a}}},81616:(e,t,r)=>{"use strict";e.exports=r(20399)},52413:(e,t,r)=>{"use strict";e.exports=r(81616).vendored.contexts.AppRouterContext},97008:(e,t,r)=>{"use strict";e.exports=r(81616).vendored.contexts.HooksClientContext},93347:(e,t,r)=>{"use strict";e.exports=r(81616).vendored.contexts.ServerInsertedHtml},60962:(e,t,r)=>{"use strict";e.exports=r(81616).vendored["react-ssr"].ReactDOM},10326:(e,t,r)=>{"use strict";e.exports=r(81616).vendored["react-ssr"].ReactJsxRuntime},56493:(e,t,r)=>{"use strict";e.exports=r(81616).vendored["react-ssr"].ReactServerDOMWebpackClientEdge},17577:(e,t,r)=>{"use strict";e.exports=r(81616).vendored["react-ssr"].React},22255:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},92165:(e,t)=>{"use strict";function r(e){let t=5381;for(let r=0;r>>0}function n(e){return r(e).toString(36).slice(0,5)}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{djb2Hash:function(){return r},hexHash:function(){return n}})},94129:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return o}});let r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}},36058:(e,t)=>{"use strict";function r(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},33879:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ActionQueueContext:function(){return l},createMutableActionQueue:function(){return c}});let n=r(58374),o=r(57767),a=r(83860),i=n._(r(17577)),l=i.default.createContext(null);function s(e,t){null!==e.pending&&(e.pending=e.pending.next,null!==e.pending?u({actionQueue:e,action:e.pending,setState:t}):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:o.ACTION_REFRESH,origin:window.location.origin},t)))}async function u(e){let{actionQueue:t,action:r,setState:n}=e,a=t.state;if(!a)throw Error("Invariant: Router state not initialized");t.pending=r;let i=r.payload,l=t.action(a,i);function u(e){r.discarded||(t.state=e,t.devToolsInstance&&t.devToolsInstance.send(i,e),s(t,n),r.resolve(e))}(0,o.isThenable)(l)?l.then(u,e=>{s(t,n),r.reject(e)}):u(l)}function c(){let e={state:null,dispatch:(t,r)=>(function(e,t,r){let n={resolve:r,reject:()=>{}};if(t.type!==o.ACTION_RESTORE){let e=new Promise((e,t)=>{n={resolve:e,reject:t}});(0,i.startTransition)(()=>{r(e)})}let a={payload:t,next:null,resolve:n.resolve,reject:n.reject};null===e.pending?(e.last=a,u({actionQueue:e,action:a,setState:r})):t.type===o.ACTION_NAVIGATE||t.type===o.ACTION_RESTORE?(e.pending.discarded=!0,e.last=a,e.pending.payload.type===o.ACTION_SERVER_ACTION&&(e.needsRefresh=!0),u({actionQueue:e,action:a,setState:r})):(null!==e.last&&(e.last.next=a),e.last=a)})(e,t,r),action:async(e,t)=>{if(null===e)throw Error("Invariant: Router state not initialized");return(0,a.reducer)(e,t)},pending:null,last:null};return e}},8974:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let n=r(93067);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:a}=(0,n.parsePath)(e);return""+t+r+o+a}},72862:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{normalizeAppPath:function(){return a},normalizeRscURL:function(){return i}});let n=r(36058),o=r(68071);function a(e){return(0,n.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:e+"/"+t,""))}function i(e){return e.replace(/\.rsc($|\?)/,"$1")}},79976:(e,t)=>{"use strict";function r(e,t){if(void 0===t&&(t={}),t.onlyHashChange){e();return}let r=document.documentElement,n=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return r}})},32148:(e,t)=>{"use strict";function r(e){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(e)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isBot",{enumerable:!0,get:function(){return r}})},93067:(e,t)=>{"use strict";function r(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return r}})},34655:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let n=r(93067);function o(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},83236:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},68071:(e,t)=>{"use strict";function r(e){return"("===e[0]&&e.endsWith(")")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DEFAULT_SEGMENT_KEY:function(){return o},PAGE_SEGMENT_KEY:function(){return n},isGroupSegment:function(){return r}});let n="__PAGE__",o="__DEFAULT__"},576:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},68570:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createProxy",{enumerable:!0,get:function(){return n}});let n=r(51749).createClientModuleProxy},59943:(e,t,r)=>{"use strict";let{createProxy:n}=r(68570);e.exports=n("E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\app-router.js")},53144:(e,t,r)=>{"use strict";let{createProxy:n}=r(68570);e.exports=n("E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\client-page.js")},37922:(e,t,r)=>{"use strict";let{createProxy:n}=r(68570);e.exports=n("E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\error-boundary.js")},95106:(e,t,r)=>{"use strict";let{createProxy:n}=r(68570);e.exports=n("E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\layout-router.js")},60525:(e,t,r)=>{"use strict";let{createProxy:n}=r(68570);e.exports=n("E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js")},35866:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}}),r(53370);let n=r(19510);r(71159);let o={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};function a(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("title",{children:"404: This page could not be found."}),(0,n.jsx)("div",{style:o.error,children:(0,n.jsxs)("div",{children:[(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,n.jsx)("h1",{className:"next-error-h1",style:o.h1,children:"404"}),(0,n.jsx)("div",{style:o.desc,children:(0,n.jsx)("h2",{style:o.h2,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},84892:(e,t,r)=>{"use strict";let{createProxy:n}=r(68570);e.exports=n("E:\\Autonomous AI Marketing Agency\\phase-1-core-infra\\frontend\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js")},79181:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createDynamicallyTrackedSearchParams:function(){return l},createUntrackedSearchParams:function(){return i}});let n=r(45869),o=r(6278),a=r(38238);function i(e){let t=n.staticGenerationAsyncStorage.getStore();return t&&t.forceStatic?{}:e}function l(e){let t=n.staticGenerationAsyncStorage.getStore();return t?t.forceStatic?{}:t.isStaticGeneration||t.dynamicShouldError?new Proxy({},{get:(e,r,n)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),a.ReflectAdapter.get(e,r,n)),has:(e,r)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),Reflect.has(e,r)),ownKeys:e=>((0,o.trackDynamicDataAccessed)(t,"searchParams"),Reflect.ownKeys(e))}):e:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},95231:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRouter:function(){return o.default},ClientPageRoot:function(){return c.ClientPageRoot},LayoutRouter:function(){return a.default},NotFoundBoundary:function(){return p.NotFoundBoundary},Postpone:function(){return m.Postpone},RenderFromTemplateContext:function(){return i.default},actionAsyncStorage:function(){return u.actionAsyncStorage},createDynamicallyTrackedSearchParams:function(){return d.createDynamicallyTrackedSearchParams},createUntrackedSearchParams:function(){return d.createUntrackedSearchParams},decodeAction:function(){return n.decodeAction},decodeFormState:function(){return n.decodeFormState},decodeReply:function(){return n.decodeReply},patchFetch:function(){return _},preconnect:function(){return y.preconnect},preloadFont:function(){return y.preloadFont},preloadStyle:function(){return y.preloadStyle},renderToReadableStream:function(){return n.renderToReadableStream},requestAsyncStorage:function(){return s.requestAsyncStorage},serverHooks:function(){return f},staticGenerationAsyncStorage:function(){return l.staticGenerationAsyncStorage},taintObjectReference:function(){return b.taintObjectReference}});let n=r(51749),o=g(r(59943)),a=g(r(95106)),i=g(r(84892)),l=r(45869),s=r(54580),u=r(72934),c=r(53144),d=r(79181),f=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=v(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}(r(44789)),p=r(60525),h=r(60670);r(37922);let y=r(20135),m=r(49257),b=r(526);function g(e){return e&&e.__esModule?e:{default:e}}function v(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(v=function(e){return e?r:t})(e)}function _(){return(0,h.patchFetch)({serverHooks:f,staticGenerationAsyncStorage:l.staticGenerationAsyncStorage})}},49257:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Postpone",{enumerable:!0,get:function(){return n.Postpone}});let n=r(6278)},20135:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{preconnect:function(){return i},preloadFont:function(){return a},preloadStyle:function(){return o}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(97049));function o(e,t){let r={as:"style"};"string"==typeof t&&(r.crossOrigin=t),n.default.preload(e,r)}function a(e,t,r){let o={as:"font",type:t};"string"==typeof r&&(o.crossOrigin=r),n.default.preload(e,o)}function i(e,t){n.default.preconnect(e,"string"==typeof t?{crossOrigin:t}:void 0)}},526:(e,t,r)=>{"use strict";function n(){throw Error("Taint can only be used with the taint flag.")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{taintObjectReference:function(){return o},taintUniqueValue:function(){return a}}),r(71159);let o=n,a=n},97049:(e,t,r)=>{"use strict";e.exports=r(23191).vendored["react-rsc"].ReactDOM},19510:(e,t,r)=>{"use strict";e.exports=r(23191).vendored["react-rsc"].ReactJsxRuntime},51749:(e,t,r)=>{"use strict";e.exports=r(23191).vendored["react-rsc"].ReactServerDOMWebpackServerEdge},45353:(e,t,r)=>{"use strict";function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;tn})},48051:(e,t,r)=>{"use strict";r.d(t,{F:()=>o,e:()=>a});var n=r(17577);function o(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}function a(...e){return(0,n.useCallback)(o(...e),e)}},45226:(e,t,r)=>{"use strict";r.d(t,{WV:()=>l,jH:()=>s});var n=r(45353),o=r(17577),a=r(60962),i=r(34214);let l=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let r=(0,o.forwardRef)((e,r)=>{let{asChild:a,...l}=e,s=a?i.g7:t;return(0,o.useEffect)(()=>{window[Symbol.for("radix-ui")]=!0},[]),(0,o.createElement)(s,(0,n.Z)({},l,{ref:r}))});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function s(e,t){e&&(0,a.flushSync)(()=>e.dispatchEvent(t))}},34214:(e,t,r)=>{"use strict";r.d(t,{g7:()=>i});var n=r(45353),o=r(17577),a=r(48051);let i=(0,o.forwardRef)((e,t)=>{let{children:r,...a}=e,i=o.Children.toArray(r),s=i.find(u);if(s){let e=s.props.children,r=i.map(t=>t!==s?t:o.Children.count(e)>1?o.Children.only(null):(0,o.isValidElement)(e)?e.props.children:null);return(0,o.createElement)(l,(0,n.Z)({},a,{ref:t}),(0,o.isValidElement)(e)?(0,o.cloneElement)(e,void 0,r):null)}return(0,o.createElement)(l,(0,n.Z)({},a,{ref:t}),r)});i.displayName="Slot";let l=(0,o.forwardRef)((e,t)=>{let{children:r,...n}=e;return(0,o.isValidElement)(r)?(0,o.cloneElement)(r,{...function(e,t){let r={...t};for(let n in t){let o=e[n],a=t[n];/^on[A-Z]/.test(n)?o&&a?r[n]=(...e)=>{a(...e),o(...e)}:o&&(r[n]=o):"style"===n?r[n]={...o,...a}:"className"===n&&(r[n]=[o,a].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props),ref:t?(0,a.F)(t,r.ref):r.ref}):o.Children.count(r)>1?o.Children.only(null):null});l.displayName="SlotClone";let s=({children:e})=>(0,o.createElement)(o.Fragment,null,e);function u(e){return(0,o.isValidElement)(e)&&e.type===s}},10592:(e,t,r)=>{"use strict";let n;r.d(t,{aU:()=>en,x8:()=>eo,dk:()=>er,zt:()=>Z,fC:()=>ee,Dx:()=>et,l_:()=>J});var o=r(45353),a=r(17577),i=r(60962);function l(e,t,{checkForDefaultPrevented:r=!0}={}){return function(n){if(null==e||e(n),!1===r||!n.defaultPrevented)return null==t?void 0:t(n)}}var s=r(48051);function u(e,t=[]){let r=[],n=()=>{let t=r.map(e=>(0,a.createContext)(e));return function(r){let n=(null==r?void 0:r[e])||t;return(0,a.useMemo)(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return n.scopeName=e,[function(t,n){let o=(0,a.createContext)(n),i=r.length;function l(t){let{scope:r,children:n,...l}=t,s=(null==r?void 0:r[e][i])||o,u=(0,a.useMemo)(()=>l,Object.values(l));return(0,a.createElement)(s.Provider,{value:u},n)}return r=[...r,n],l.displayName=t+"Provider",[l,function(r,l){let s=(null==l?void 0:l[e][i])||o,u=(0,a.useContext)(s);if(u)return u;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:r,scopeName:n})=>{let o=r(e)[`__scope${n}`];return{...t,...o}},{});return(0,a.useMemo)(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(n,...t)]}var c=r(34214),d=r(45226);function f(e){let t=(0,a.useRef)(e);return(0,a.useEffect)(()=>{t.current=e}),(0,a.useMemo)(()=>(...e)=>{var r;return null===(r=t.current)||void 0===r?void 0:r.call(t,...e)},[])}let p="dismissableLayer.update",h=(0,a.createContext)({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),y=(0,a.forwardRef)((e,t)=>{var r;let{disableOutsidePointerEvents:i=!1,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:y,onInteractOutside:m,onDismiss:v,..._}=e,P=(0,a.useContext)(h),[w,E]=(0,a.useState)(null),R=null!==(r=null==w?void 0:w.ownerDocument)&&void 0!==r?r:null==globalThis?void 0:globalThis.document,[,O]=(0,a.useState)({}),j=(0,s.e)(t,e=>E(e)),x=Array.from(P.layers),[S]=[...P.layersWithOutsidePointerEventsDisabled].slice(-1),T=x.indexOf(S),C=w?x.indexOf(w):-1,M=P.layersWithOutsidePointerEventsDisabled.size>0,A=C>=T,N=function(e,t=null==globalThis?void 0:globalThis.document){let r=f(e),n=(0,a.useRef)(!1),o=(0,a.useRef)(()=>{});return(0,a.useEffect)(()=>{let e=e=>{if(e.target&&!n.current){let n={originalEvent:e};function a(){g("dismissableLayer.pointerDownOutside",r,n,{discrete:!0})}"touch"===e.pointerType?(t.removeEventListener("click",o.current),o.current=a,t.addEventListener("click",o.current,{once:!0})):a()}else t.removeEventListener("click",o.current);n.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",e),t.removeEventListener("click",o.current)}},[t,r]),{onPointerDownCapture:()=>n.current=!0}}(e=>{let t=e.target,r=[...P.branches].some(e=>e.contains(t));!A||r||(null==c||c(e),null==m||m(e),e.defaultPrevented||null==v||v())},R),D=function(e,t=null==globalThis?void 0:globalThis.document){let r=f(e),n=(0,a.useRef)(!1);return(0,a.useEffect)(()=>{let e=e=>{e.target&&!n.current&&g("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,r]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}(e=>{let t=e.target;[...P.branches].some(e=>e.contains(t))||(null==y||y(e),null==m||m(e),e.defaultPrevented||null==v||v())},R);return function(e,t=null==globalThis?void 0:globalThis.document){let r=f(e);(0,a.useEffect)(()=>{let e=e=>{"Escape"===e.key&&r(e)};return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)},[r,t])}(e=>{C!==P.layers.size-1||(null==u||u(e),!e.defaultPrevented&&v&&(e.preventDefault(),v()))},R),(0,a.useEffect)(()=>{if(w)return i&&(0===P.layersWithOutsidePointerEventsDisabled.size&&(n=R.body.style.pointerEvents,R.body.style.pointerEvents="none"),P.layersWithOutsidePointerEventsDisabled.add(w)),P.layers.add(w),b(),()=>{i&&1===P.layersWithOutsidePointerEventsDisabled.size&&(R.body.style.pointerEvents=n)}},[w,R,i,P]),(0,a.useEffect)(()=>()=>{w&&(P.layers.delete(w),P.layersWithOutsidePointerEventsDisabled.delete(w),b())},[w,P]),(0,a.useEffect)(()=>{let e=()=>O({});return document.addEventListener(p,e),()=>document.removeEventListener(p,e)},[]),(0,a.createElement)(d.WV.div,(0,o.Z)({},_,{ref:j,style:{pointerEvents:M?A?"auto":"none":void 0,...e.style},onFocusCapture:l(e.onFocusCapture,D.onFocusCapture),onBlurCapture:l(e.onBlurCapture,D.onBlurCapture),onPointerDownCapture:l(e.onPointerDownCapture,N.onPointerDownCapture)}))}),m=(0,a.forwardRef)((e,t)=>{let r=(0,a.useContext)(h),n=(0,a.useRef)(null),i=(0,s.e)(t,n);return(0,a.useEffect)(()=>{let e=n.current;if(e)return r.branches.add(e),()=>{r.branches.delete(e)}},[r.branches]),(0,a.createElement)(d.WV.div,(0,o.Z)({},e,{ref:i}))});function b(){let e=new CustomEvent(p);document.dispatchEvent(e)}function g(e,t,r,{discrete:n}){let o=r.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&o.addEventListener(e,t,{once:!0}),n?(0,d.jH)(o,a):o.dispatchEvent(a)}let v=(0,a.forwardRef)((e,t)=>{var r;let{container:n=null==globalThis?void 0:null===(r=globalThis.document)||void 0===r?void 0:r.body,...l}=e;return n?i.createPortal((0,a.createElement)(d.WV.div,(0,o.Z)({},l,{ref:t})),n):null}),_=(null==globalThis?void 0:globalThis.document)?a.useLayoutEffect:()=>{},P=e=>{let{present:t,children:r}=e,n=function(e){var t,r;let[n,o]=(0,a.useState)(),l=(0,a.useRef)({}),s=(0,a.useRef)(e),u=(0,a.useRef)("none"),[c,d]=(t=e?"mounted":"unmounted",r={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},(0,a.useReducer)((e,t)=>{let n=r[e][t];return null!=n?n:e},t));return(0,a.useEffect)(()=>{let e=w(l.current);u.current="mounted"===c?e:"none"},[c]),_(()=>{let t=l.current,r=s.current;if(r!==e){let n=u.current,o=w(t);e?d("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?d("UNMOUNT"):r&&n!==o?d("ANIMATION_OUT"):d("UNMOUNT"),s.current=e}},[e,d]),_(()=>{if(n){let e=e=>{let t=w(l.current).includes(e.animationName);e.target===n&&t&&(0,i.flushSync)(()=>d("ANIMATION_END"))},t=e=>{e.target===n&&(u.current=w(l.current))};return n.addEventListener("animationstart",t),n.addEventListener("animationcancel",e),n.addEventListener("animationend",e),()=>{n.removeEventListener("animationstart",t),n.removeEventListener("animationcancel",e),n.removeEventListener("animationend",e)}}d("ANIMATION_END")},[n,d]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:(0,a.useCallback)(e=>{e&&(l.current=getComputedStyle(e)),o(e)},[])}}(t),o="function"==typeof r?r({present:n.isPresent}):a.Children.only(r),l=(0,s.e)(n.ref,o.ref);return"function"==typeof r||n.isPresent?(0,a.cloneElement)(o,{ref:l}):null};function w(e){return(null==e?void 0:e.animationName)||"none"}P.displayName="Presence";let E=(0,a.forwardRef)((e,t)=>(0,a.createElement)(d.WV.span,(0,o.Z)({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}))),R="ToastProvider",[O,j,x]=function(e){let t=e+"CollectionProvider",[r,n]=u(t),[o,i]=r(t,{collectionRef:{current:null},itemMap:new Map}),l=e+"CollectionSlot",d=a.forwardRef((e,t)=>{let{scope:r,children:n}=e,o=i(l,r),u=(0,s.e)(t,o.collectionRef);return a.createElement(c.g7,{ref:u},n)}),f=e+"CollectionItemSlot",p="data-radix-collection-item";return[{Provider:e=>{let{scope:t,children:r}=e,n=a.useRef(null),i=a.useRef(new Map).current;return a.createElement(o,{scope:t,itemMap:i,collectionRef:n},r)},Slot:d,ItemSlot:a.forwardRef((e,t)=>{let{scope:r,children:n,...o}=e,l=a.useRef(null),u=(0,s.e)(t,l),d=i(f,r);return a.useEffect(()=>(d.itemMap.set(l,{ref:l,...o}),()=>void d.itemMap.delete(l))),a.createElement(c.g7,{[p]:"",ref:u},n)})},function(t){let r=i(e+"CollectionConsumer",t);return a.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${p}]`));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},n]}("Toast"),[S,T]=u("Toast",[x]),[C,M]=S(R),A=e=>{let{__scopeToast:t,label:r="Notification",duration:n=5e3,swipeDirection:o="right",swipeThreshold:i=50,children:l}=e,[s,u]=(0,a.useState)(null),[c,d]=(0,a.useState)(0),f=(0,a.useRef)(!1),p=(0,a.useRef)(!1);return(0,a.createElement)(O.Provider,{scope:t},(0,a.createElement)(C,{scope:t,label:r,duration:n,swipeDirection:o,swipeThreshold:i,toastCount:c,viewport:s,onViewportChange:u,onToastAdd:(0,a.useCallback)(()=>d(e=>e+1),[]),onToastRemove:(0,a.useCallback)(()=>d(e=>e-1),[]),isFocusedToastEscapeKeyDownRef:f,isClosePausedRef:p},l))};A.propTypes={label:e=>e.label&&"string"==typeof e.label&&!e.label.trim()?Error(`Invalid prop \`label\` supplied to \`${R}\`. Expected non-empty \`string\`.`):null};let N=["F8"],D="toast.viewportPause",F="toast.viewportResume",k=(0,a.forwardRef)((e,t)=>{let{__scopeToast:r,hotkey:n=N,label:i="Notifications ({hotkey})",...l}=e,u=M("ToastViewport",r),c=j(r),f=(0,a.useRef)(null),p=(0,a.useRef)(null),h=(0,a.useRef)(null),y=(0,a.useRef)(null),b=(0,s.e)(t,y,u.onViewportChange),g=n.join("+").replace(/Key/g,"").replace(/Digit/g,""),v=u.toastCount>0;(0,a.useEffect)(()=>{let e=e=>{var t;n.every(t=>e[t]||e.code===t)&&(null===(t=y.current)||void 0===t||t.focus())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[n]),(0,a.useEffect)(()=>{let e=f.current,t=y.current;if(v&&e&&t){let r=()=>{if(!u.isClosePausedRef.current){let e=new CustomEvent(D);t.dispatchEvent(e),u.isClosePausedRef.current=!0}},n=()=>{if(u.isClosePausedRef.current){let e=new CustomEvent(F);t.dispatchEvent(e),u.isClosePausedRef.current=!1}},o=t=>{e.contains(t.relatedTarget)||n()},a=()=>{e.contains(document.activeElement)||n()};return e.addEventListener("focusin",r),e.addEventListener("focusout",o),e.addEventListener("pointermove",r),e.addEventListener("pointerleave",a),window.addEventListener("blur",r),window.addEventListener("focus",n),()=>{e.removeEventListener("focusin",r),e.removeEventListener("focusout",o),e.removeEventListener("pointermove",r),e.removeEventListener("pointerleave",a),window.removeEventListener("blur",r),window.removeEventListener("focus",n)}}},[v,u.isClosePausedRef]);let _=(0,a.useCallback)(({tabbingDirection:e})=>{let t=c().map(t=>{let r=t.ref.current,n=[r,...function(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}(r)];return"forwards"===e?n:n.reverse()});return("forwards"===e?t.reverse():t).flat()},[c]);return(0,a.useEffect)(()=>{let e=y.current;if(e){let t=t=>{let r=t.altKey||t.ctrlKey||t.metaKey;if("Tab"===t.key&&!r){var n,o,a;let r=document.activeElement,i=t.shiftKey;if(t.target===e&&i){null===(n=p.current)||void 0===n||n.focus();return}let l=_({tabbingDirection:i?"backwards":"forwards"}),s=l.findIndex(e=>e===r);X(l.slice(s+1))?t.preventDefault():i?null===(o=p.current)||void 0===o||o.focus():null===(a=h.current)||void 0===a||a.focus()}};return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t)}},[c,_]),(0,a.createElement)(m,{ref:f,role:"region","aria-label":i.replace("{hotkey}",g),tabIndex:-1,style:{pointerEvents:v?void 0:"none"}},v&&(0,a.createElement)(U,{ref:p,onFocusFromOutsideViewport:()=>{X(_({tabbingDirection:"forwards"}))}}),(0,a.createElement)(O.Slot,{scope:r},(0,a.createElement)(d.WV.ol,(0,o.Z)({tabIndex:-1},l,{ref:b}))),v&&(0,a.createElement)(U,{ref:h,onFocusFromOutsideViewport:()=>{X(_({tabbingDirection:"backwards"}))}}))}),U=(0,a.forwardRef)((e,t)=>{let{__scopeToast:r,onFocusFromOutsideViewport:n,...i}=e,l=M("ToastFocusProxy",r);return(0,a.createElement)(E,(0,o.Z)({"aria-hidden":!0,tabIndex:0},i,{ref:t,style:{position:"fixed"},onFocus:e=>{var t;let r=e.relatedTarget;null!==(t=l.viewport)&&void 0!==t&&t.contains(r)||n()}}))}),I="Toast",L=(0,a.forwardRef)((e,t)=>{let{forceMount:r,open:n,defaultOpen:i,onOpenChange:s,...u}=e,[c=!0,d]=function({prop:e,defaultProp:t,onChange:r=()=>{}}){let[n,o]=function({defaultProp:e,onChange:t}){let r=(0,a.useState)(e),[n]=r,o=(0,a.useRef)(n),i=f(t);return(0,a.useEffect)(()=>{o.current!==n&&(i(n),o.current=n)},[n,o,i]),r}({defaultProp:t,onChange:r}),i=void 0!==e,l=i?e:n,s=f(r);return[l,(0,a.useCallback)(t=>{if(i){let r="function"==typeof t?t(e):t;r!==e&&s(r)}else o(t)},[i,e,o,s])]}({prop:n,defaultProp:i,onChange:s});return(0,a.createElement)(P,{present:r||c},(0,a.createElement)(q,(0,o.Z)({open:c},u,{ref:t,onClose:()=>d(!1),onPause:f(e.onPause),onResume:f(e.onResume),onSwipeStart:l(e.onSwipeStart,e=>{e.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:l(e.onSwipeMove,e=>{let{x:t,y:r}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","move"),e.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${t}px`),e.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${r}px`)}),onSwipeCancel:l(e.onSwipeCancel,e=>{e.currentTarget.setAttribute("data-swipe","cancel"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:l(e.onSwipeEnd,e=>{let{x:t,y:r}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","end"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${t}px`),e.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${r}px`),d(!1)})})))}),[H,z]=S(I,{onClose(){}}),q=(0,a.forwardRef)((e,t)=>{let{__scopeToast:r,type:n="foreground",duration:u,open:c,onClose:p,onEscapeKeyDown:h,onPause:m,onResume:b,onSwipeStart:g,onSwipeMove:v,onSwipeCancel:_,onSwipeEnd:P,...w}=e,E=M(I,r),[R,j]=(0,a.useState)(null),x=(0,s.e)(t,e=>j(e)),S=(0,a.useRef)(null),T=(0,a.useRef)(null),C=u||E.duration,A=(0,a.useRef)(0),N=(0,a.useRef)(C),k=(0,a.useRef)(0),{onToastAdd:U,onToastRemove:L}=E,z=f(()=>{var e;(null==R?void 0:R.contains(document.activeElement))&&(null===(e=E.viewport)||void 0===e||e.focus()),p()}),q=(0,a.useCallback)(e=>{e&&e!==1/0&&(window.clearTimeout(k.current),A.current=new Date().getTime(),k.current=window.setTimeout(z,e))},[z]);(0,a.useEffect)(()=>{let e=E.viewport;if(e){let t=()=>{q(N.current),null==b||b()},r=()=>{let e=new Date().getTime()-A.current;N.current=N.current-e,window.clearTimeout(k.current),null==m||m()};return e.addEventListener(D,r),e.addEventListener(F,t),()=>{e.removeEventListener(D,r),e.removeEventListener(F,t)}}},[E.viewport,C,m,b,q]),(0,a.useEffect)(()=>{c&&!E.isClosePausedRef.current&&q(C)},[c,C,E.isClosePausedRef,q]),(0,a.useEffect)(()=>(U(),()=>L()),[U,L]);let K=(0,a.useMemo)(()=>R?function e(t){let r=[];return Array.from(t.childNodes).forEach(t=>{if(t.nodeType===t.TEXT_NODE&&t.textContent&&r.push(t.textContent),t.nodeType===t.ELEMENT_NODE){let n=t.ariaHidden||t.hidden||"none"===t.style.display,o=""===t.dataset.radixToastAnnounceExclude;if(!n){if(o){let e=t.dataset.radixToastAnnounceAlt;e&&r.push(e)}else r.push(...e(t))}}}),r}(R):null,[R]);return E.viewport?(0,a.createElement)(a.Fragment,null,K&&(0,a.createElement)(G,{__scopeToast:r,role:"status","aria-live":"foreground"===n?"assertive":"polite","aria-atomic":!0},K),(0,a.createElement)(H,{scope:r,onClose:z},(0,i.createPortal)((0,a.createElement)(O.ItemSlot,{scope:r},(0,a.createElement)(y,{asChild:!0,onEscapeKeyDown:l(h,()=>{E.isFocusedToastEscapeKeyDownRef.current||z(),E.isFocusedToastEscapeKeyDownRef.current=!1})},(0,a.createElement)(d.WV.li,(0,o.Z)({role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":c?"open":"closed","data-swipe-direction":E.swipeDirection},w,{ref:x,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:l(e.onKeyDown,e=>{"Escape"!==e.key||(null==h||h(e.nativeEvent),e.nativeEvent.defaultPrevented||(E.isFocusedToastEscapeKeyDownRef.current=!0,z()))}),onPointerDown:l(e.onPointerDown,e=>{0===e.button&&(S.current={x:e.clientX,y:e.clientY})}),onPointerMove:l(e.onPointerMove,e=>{if(!S.current)return;let t=e.clientX-S.current.x,r=e.clientY-S.current.y,n=!!T.current,o=["left","right"].includes(E.swipeDirection),a=["left","up"].includes(E.swipeDirection)?Math.min:Math.max,i=o?a(0,t):0,l=o?0:a(0,r),s="touch"===e.pointerType?10:2,u={x:i,y:l},c={originalEvent:e,delta:u};n?(T.current=u,V("toast.swipeMove",v,c,{discrete:!1})):Y(u,E.swipeDirection,s)?(T.current=u,V("toast.swipeStart",g,c,{discrete:!1}),e.target.setPointerCapture(e.pointerId)):(Math.abs(t)>s||Math.abs(r)>s)&&(S.current=null)}),onPointerUp:l(e.onPointerUp,e=>{let t=T.current,r=e.target;if(r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),T.current=null,S.current=null,t){let r=e.currentTarget,n={originalEvent:e,delta:t};Y(t,E.swipeDirection,E.swipeThreshold)?V("toast.swipeEnd",P,n,{discrete:!0}):V("toast.swipeCancel",_,n,{discrete:!0}),r.addEventListener("click",e=>e.preventDefault(),{once:!0})}})})))),E.viewport))):null});q.propTypes={type:e=>e.type&&!["foreground","background"].includes(e.type)?Error(`Invalid prop \`type\` supplied to \`${I}\`. Expected \`foreground | background\`.`):null};let G=e=>{let{__scopeToast:t,children:r,...n}=e,o=M(I,t),[i,l]=(0,a.useState)(!1),[s,u]=(0,a.useState)(!1);return function(e=()=>{}){let t=f(e);_(()=>{let e=0,r=0;return e=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(e),window.cancelAnimationFrame(r)}},[t])}(()=>l(!0)),(0,a.useEffect)(()=>{let e=window.setTimeout(()=>u(!0),1e3);return()=>window.clearTimeout(e)},[]),s?null:(0,a.createElement)(v,{asChild:!0},(0,a.createElement)(E,n,i&&(0,a.createElement)(a.Fragment,null,o.label," ",r)))},K=(0,a.forwardRef)((e,t)=>{let{__scopeToast:r,...n}=e;return(0,a.createElement)(d.WV.div,(0,o.Z)({},n,{ref:t}))}),W=(0,a.forwardRef)((e,t)=>{let{__scopeToast:r,...n}=e;return(0,a.createElement)(d.WV.div,(0,o.Z)({},n,{ref:t}))}),B=(0,a.forwardRef)((e,t)=>{let{altText:r,...n}=e;return r?(0,a.createElement)(Q,{altText:r,asChild:!0},(0,a.createElement)($,(0,o.Z)({},n,{ref:t}))):null});B.propTypes={altText:e=>e.altText?null:Error("Missing prop `altText` expected on `ToastAction`")};let $=(0,a.forwardRef)((e,t)=>{let{__scopeToast:r,...n}=e,i=z("ToastClose",r);return(0,a.createElement)(Q,{asChild:!0},(0,a.createElement)(d.WV.button,(0,o.Z)({type:"button"},n,{ref:t,onClick:l(e.onClick,i.onClose)})))}),Q=(0,a.forwardRef)((e,t)=>{let{__scopeToast:r,altText:n,...i}=e;return(0,a.createElement)(d.WV.div,(0,o.Z)({"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":n||void 0},i,{ref:t}))});function V(e,t,r,{discrete:n}){let o=r.originalEvent.currentTarget,a=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&o.addEventListener(e,t,{once:!0}),n?(0,d.jH)(o,a):o.dispatchEvent(a)}let Y=(e,t,r=0)=>{let n=Math.abs(e.x),o=Math.abs(e.y),a=n>o;return"left"===t||"right"===t?a&&n>r:!a&&o>r};function X(e){let t=document.activeElement;return e.some(e=>e===t||(e.focus(),document.activeElement!==t))}let Z=A,J=k,ee=L,et=K,er=W,en=B,eo=$},98285:(e,t,r)=>{"use strict";function n(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}r.r(t),r.d(t,{_:()=>n,_class_private_field_loose_base:()=>n})},78817:(e,t,r)=>{"use strict";r.r(t),r.d(t,{_:()=>o,_class_private_field_loose_key:()=>o});var n=0;function o(e){return"__private_"+n+++"_"+e}},91174:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n,_interop_require_default:()=>n})},58374:(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var l=a?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(o,i,l):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o}r.r(t),r.d(t,{_:()=>o,_interop_require_wildcard:()=>o})},74951:(e,t,r)=>{"use strict";r.d(t,{S:()=>H});var n={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},o=new class{#e=n;#t=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}},a="undefined"==typeof window||"Deno"in globalThis;function i(){}function l(e,t){return"function"==typeof e?e(t):e}function s(e,t){let{type:r="all",exact:n,fetchStatus:o,predicate:a,queryKey:i,stale:l}=e;if(i){if(n){if(t.queryHash!==c(i,t.options))return!1}else if(!f(t.queryKey,i))return!1}if("all"!==r){let e=t.isActive();if("active"===r&&!e||"inactive"===r&&e)return!1}return("boolean"!=typeof l||t.isStale()===l)&&(!o||o===t.state.fetchStatus)&&(!a||!!a(t))}function u(e,t){let{exact:r,status:n,predicate:o,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(r){if(d(t.options.mutationKey)!==d(a))return!1}else if(!f(t.options.mutationKey,a))return!1}return(!n||t.state.status===n)&&(!o||!!o(t))}function c(e,t){return(t?.queryKeyHashFn||d)(e)}function d(e){return JSON.stringify(e,(e,t)=>y(t)?Object.keys(t).sort().reduce((e,r)=>(e[r]=t[r],e),{}):t)}function f(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(r=>f(e[r],t[r]))}var p=Object.prototype.hasOwnProperty;function h(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function y(e){if(!m(e))return!1;let t=e.constructor;if(void 0===t)return!0;let r=t.prototype;return!!(m(r)&&r.hasOwnProperty("isPrototypeOf"))&&Object.getPrototypeOf(e)===Object.prototype}function m(e){return"[object Object]"===Object.prototype.toString.call(e)}function b(e,t,r=0){let n=[...e,t];return r&&n.length>r?n.slice(1):n}function g(e,t,r=0){let n=[t,...e];return r&&n.length>r?n.slice(0,-1):n}var v=Symbol();function _(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==v?e.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`))}var P=function(e){setTimeout(e,0)},w=function(){let e=[],t=0,r=e=>{e()},n=e=>{e()},o=P,a=n=>{t?e.push(n):o(()=>{r(n)})},i=()=>{let t=e;e=[],t.length&&o(()=>{n(()=>{t.forEach(e=>{r(e)})})})};return{batch:e=>{let r;t++;try{r=e()}finally{--t||i()}return r},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{r=e},setBatchNotifyFunction:e=>{n=e},setScheduler:e=>{o=e}}}(),E=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},R=new class extends E{#r;#n;#o;constructor(){super(),this.#o=e=>{if(!a&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#n||this.setEventListener(this.#o)}onUnsubscribe(){this.hasListeners()||(this.#n?.(),this.#n=void 0)}setEventListener(e){this.#o=e,this.#n?.(),this.#n=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){this.#r!==e&&(this.#r=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#r?this.#r:globalThis.document?.visibilityState!=="hidden"}},O=new class extends E{#a=!0;#n;#o;constructor(){super(),this.#o=e=>{if(!a&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#n||this.setEventListener(this.#o)}onUnsubscribe(){this.hasListeners()||(this.#n?.(),this.#n=void 0)}setEventListener(e){this.#o=e,this.#n?.(),this.#n=e(this.setOnline.bind(this))}setOnline(e){this.#a!==e&&(this.#a=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#a}};function j(e){return Math.min(1e3*2**e,3e4)}function x(e){return(e??"online")!=="online"||O.isOnline()}var S=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function T(e){let t,r=!1,n=0,i=function(){let e,t;let r=new Promise((r,n)=>{e=r,t=n});function n(e){Object.assign(r,e),delete r.resolve,delete r.reject}return r.status="pending",r.catch(()=>{}),r.resolve=t=>{n({status:"fulfilled",value:t}),e(t)},r.reject=e=>{n({status:"rejected",reason:e}),t(e)},r}(),l=()=>"pending"!==i.status,s=()=>R.isFocused()&&("always"===e.networkMode||O.isOnline())&&e.canRun(),u=()=>x(e.networkMode)&&e.canRun(),c=e=>{l()||(t?.(),i.resolve(e))},d=e=>{l()||(t?.(),i.reject(e))},f=()=>new Promise(r=>{t=e=>{(l()||s())&&r(e)},e.onPause?.()}).then(()=>{t=void 0,l()||e.onContinue?.()}),p=()=>{let t;if(l())return;let i=0===n?e.initialPromise:void 0;try{t=i??e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(c).catch(t=>{if(l())return;let i=e.retry??(a?0:3),u=e.retryDelay??j,c="function"==typeof u?u(n,t):u,h=!0===i||"number"==typeof i&&n{o.setTimeout(e,c)}).then(()=>s()?void 0:f()).then(()=>{r?d(t):p()})})};return{promise:i,status:()=>i.status,cancel:t=>{if(!l()){let r=new S(t);d(r),e.onCancel?.(r)}},continue:()=>(t?.(),i),cancelRetry:()=>{r=!0},continueRetry:()=>{r=!1},canStart:u,start:()=>(u()?p():f().then(p),i)}}var C=class{#i;destroy(){this.clearGcTimeout()}scheduleGc(){var e;this.clearGcTimeout(),"number"==typeof(e=this.gcTime)&&e>=0&&e!==1/0&&(this.#i=o.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(a?1/0:3e5))}clearGcTimeout(){this.#i&&(o.clearTimeout(this.#i),this.#i=void 0)}},M=class extends C{#l;#s;#u;#c;#d;#f;#p;constructor(e){super(),this.#p=!1,this.#f=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#c=e.client,this.#u=this.#c.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#l=N(this.options),this.state=e.state??this.#l,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#d?.promise}setOptions(e){if(this.options={...this.#f,...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=N(this.options);void 0!==e.data&&(this.setState(A(e.data,e.dataUpdatedAt)),this.#l=e)}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#u.remove(this)}setData(e,t){var r,n;let o=(r=this.state.data,"function"==typeof(n=this.options).structuralSharing?n.structuralSharing(r,e):!1!==n.structuralSharing?function e(t,r,n=0){if(t===r)return t;if(n>500)return r;let o=h(t)&&h(r);if(!o&&!(y(t)&&y(r)))return r;let a=(o?t:Object.keys(t)).length,i=o?r:Object.keys(r),l=i.length,s=o?Array(l):{},u=0;for(let c=0;c{var t;return!1!==("function"==typeof(t=e.options.enabled)?t(this):t)})}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===v||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===l(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(e=0){return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!Math.max(this.state.dataUpdatedAt+(e||0)-Date.now(),0))}onFocus(){let e=this.observers.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#d?.continue()}onOnline(){let e=this.observers.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#d?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#u.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#d&&(this.#p?this.#d.cancel({revert:!0}):this.#d.cancelRetry()),this.scheduleGc()),this.#u.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#h({type:"invalidate"})}async fetch(e,t){if("idle"!==this.state.fetchStatus&&this.#d?.status()!=="rejected"){if(void 0!==this.state.data&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#d)return this.#d.continueRetry(),this.#d.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let r=new AbortController,n=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#p=!0,r.signal)})},o=()=>{let e=_(this.options,t),r=(()=>{let e={client:this.#c,queryKey:this.queryKey,meta:this.meta};return n(e),e})();return(this.#p=!1,this.options.persister)?this.options.persister(e,r,this):e(r)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#c,state:this.state,fetchFn:o};return n(e),e})();this.options.behavior?.onFetch(a,this),this.#s=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#h({type:"fetch",meta:a.fetchOptions?.meta}),this.#d=T({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof S&&e.revert&&this.setState({...this.#s,fetchStatus:"idle"}),r.abort()},onFail:(e,t)=>{this.#h({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#h({type:"pause"})},onContinue:()=>{this.#h({type:"continue"})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#d.start();if(void 0===e)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#u.config.onSuccess?.(e,this),this.#u.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof S){if(e.silent)return this.#d.promise;if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw this.#h({type:"error",error:e}),this.#u.config.onError?.(e,this),this.#u.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#h(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":var r;return{...t,...(r=t.data,{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:x(this.options.networkMode)?"fetching":"paused",...void 0===r&&{error:null,status:"pending"}}),fetchMeta:e.meta??null};case"success":let n={...t,...A(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#s=e.manual?n:void 0,n;case"error":let o=e.error;return{...t,error:o,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:o,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),w.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#u.notify({query:this,type:"updated",action:e})})}};function A(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function N(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,n=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?n??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}var D=class extends E{constructor(e={}){super(),this.config=e,this.#y=new Map}#y;build(e,t,r){let n=t.queryKey,o=t.queryHash??c(n,t),a=this.get(o);return a||(a=new M({client:e,queryKey:n,queryHash:o,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(n)}),this.add(a)),a}add(e){this.#y.has(e.queryHash)||(this.#y.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#y.get(e.queryHash);t&&(e.destroy(),t===e&&this.#y.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){w.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#y.get(e)}getAll(){return[...this.#y.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>s(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>s(e,t)):t}notify(e){w.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){w.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){w.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},F=class extends C{#c;#m;#b;#d;constructor(e){super(),this.#c=e.client,this.mutationId=e.mutationId,this.#b=e.mutationCache,this.#m=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#m.includes(e)||(this.#m.push(e),this.clearGcTimeout(),this.#b.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#m=this.#m.filter(t=>t!==e),this.scheduleGc(),this.#b.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#m.length||("pending"===this.state.status?this.scheduleGc():this.#b.remove(this))}continue(){return this.#d?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#h({type:"continue"})},r={client:this.#c,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#d=T({fn:()=>this.options.mutationFn?this.options.mutationFn(e,r):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#h({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#h({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#b.canRun(this)});let n="pending"===this.state.status,o=!this.#d.canStart();try{if(n)t();else{this.#h({type:"pending",variables:e,isPaused:o}),this.#b.config.onMutate&&await this.#b.config.onMutate(e,this,r);let t=await this.options.onMutate?.(e,r);t!==this.state.context&&this.#h({type:"pending",context:t,variables:e,isPaused:o})}let a=await this.#d.start();return await this.#b.config.onSuccess?.(a,e,this.state.context,this,r),await this.options.onSuccess?.(a,e,this.state.context,r),await this.#b.config.onSettled?.(a,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(a,null,e,this.state.context,r),this.#h({type:"success",data:a}),a}catch(t){try{await this.#b.config.onError?.(t,e,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,r)}catch(e){Promise.reject(e)}try{await this.#b.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,r)}catch(e){Promise.reject(e)}throw this.#h({type:"error",error:t}),t}finally{this.#b.runNext(this)}}#h(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),w.batch(()=>{this.#m.forEach(t=>{t.onMutationUpdate(e)}),this.#b.notify({mutation:this,type:"updated",action:e})})}},k=class extends E{constructor(e={}){super(),this.config=e,this.#g=new Set,this.#v=new Map,this.#_=0}#g;#v;#_;build(e,t,r){let n=new F({client:e,mutationCache:this,mutationId:++this.#_,options:e.defaultMutationOptions(t),state:r});return this.add(n),n}add(e){this.#g.add(e);let t=U(e);if("string"==typeof t){let r=this.#v.get(t);r?r.push(e):this.#v.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#g.delete(e)){let t=U(e);if("string"==typeof t){let r=this.#v.get(t);if(r){if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&this.#v.delete(t)}}}this.notify({type:"removed",mutation:e})}canRun(e){let t=U(e);if("string"!=typeof t)return!0;{let r=this.#v.get(t),n=r?.find(e=>"pending"===e.state.status);return!n||n===e}}runNext(e){let t=U(e);if("string"!=typeof t)return Promise.resolve();{let r=this.#v.get(t)?.find(t=>t!==e&&t.state.isPaused);return r?.continue()??Promise.resolve()}}clear(){w.batch(()=>{this.#g.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#g.clear(),this.#v.clear()})}getAll(){return Array.from(this.#g)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>u(t,e))}findAll(e={}){return this.getAll().filter(t=>u(e,t))}notify(e){w.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return w.batch(()=>Promise.all(e.map(e=>e.continue().catch(i))))}};function U(e){return e.options.scope?.id}function I(e){return{onFetch:(t,r)=>{let n=t.options,o=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],i=t.state.data?.pageParams||[],l={pages:[],pageParams:[]},s=0,u=async()=>{let r=!1,u=e=>{var n,o;let a,i;n=()=>t.signal,o=()=>r=!0,i=!1,Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(a??=n(),i||(i=!0,a.aborted?o():a.addEventListener("abort",o,{once:!0})),a)})},c=_(t.options,t.fetchOptions),d=async(e,n,o)=>{if(r)return Promise.reject();if(null==n&&e.pages.length)return Promise.resolve(e);let a=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:n,direction:o?"backward":"forward",meta:t.options.meta};return u(e),e})(),i=await c(a),{maxPages:l}=t.options,s=o?g:b;return{pages:s(e.pages,i,l),pageParams:s(e.pageParams,n,l)}};if(o&&a.length){let e="backward"===o,t={pages:a,pageParams:i},r=(e?function(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}:L)(n,t);l=await d(t,r,e)}else{let t=e??a.length;do{let e=0===s?i[0]??n.initialPageParam:L(n,l);if(s>0&&null==e)break;l=await d(l,e),s++}while(st.options.persister?.(u,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r):t.fetchFn=u}}}function L(e,{pages:t,pageParams:r}){let n=t.length-1;return t.length>0?e.getNextPageParam(t[n],t,r[n],r):void 0}var H=class{#P;#b;#f;#w;#E;#R;#O;#j;constructor(e={}){this.#P=e.queryCache||new D,this.#b=e.mutationCache||new k,this.#f=e.defaultOptions||{},this.#w=new Map,this.#E=new Map,this.#R=0}mount(){this.#R++,1===this.#R&&(this.#O=R.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#P.onFocus())}),this.#j=O.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#P.onOnline())}))}unmount(){this.#R--,0===this.#R&&(this.#O?.(),this.#O=void 0,this.#j?.(),this.#j=void 0)}isFetching(e){return this.#P.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#b.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#P.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),r=this.#P.build(this,t),n=r.state.data;return void 0===n?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime(l(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(n))}getQueriesData(e){return this.#P.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,r){let n=this.defaultQueryOptions({queryKey:e}),o=this.#P.get(n.queryHash),a=o?.state.data,i="function"==typeof t?t(a):t;if(void 0!==i)return this.#P.build(this,n).setData(i,{...r,manual:!0})}setQueriesData(e,t,r){return w.batch(()=>this.#P.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#P.get(t.queryHash)?.state}removeQueries(e){let t=this.#P;w.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=this.#P;return w.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){let r={revert:!0,...t};return Promise.all(w.batch(()=>this.#P.findAll(e).map(e=>e.cancel(r)))).then(i).catch(i)}invalidateQueries(e,t={}){return w.batch(()=>(this.#P.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType==="none")?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t))}refetchQueries(e,t={}){let r={...t,cancelRefetch:t.cancelRefetch??!0};return Promise.all(w.batch(()=>this.#P.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,r);return r.throwOnError||(t=t.catch(i)),"paused"===e.state.fetchStatus?Promise.resolve():t}))).then(i)}fetchQuery(e){let t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);let r=this.#P.build(this,t);return r.isStaleByTime(l(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(i).catch(i)}fetchInfiniteQuery(e){return e.behavior=I(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(i).catch(i)}ensureInfiniteQueryData(e){return e.behavior=I(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return O.isOnline()?this.#b.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#P}getMutationCache(){return this.#b}getDefaultOptions(){return this.#f}setDefaultOptions(e){this.#f=e}setQueryDefaults(e,t){this.#w.set(d(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#w.values()],r={};return t.forEach(t=>{f(e,t.queryKey)&&Object.assign(r,t.defaultOptions)}),r}setMutationDefaults(e,t){this.#E.set(d(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#E.values()],r={};return t.forEach(t=>{f(e,t.mutationKey)&&Object.assign(r,t.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#f.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=c(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===v&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#f.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#P.clear(),this.#b.clear()}}},44976:(e,t,r)=>{"use strict";r.d(t,{aH:()=>i});var n=r(17577),o=r(10326),a=n.createContext(void 0),i=({client:e,children:t})=>(n.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,o.jsx)(a.Provider,{value:e,children:t}))},79360:(e,t,r)=>{"use strict";r.d(t,{j:()=>i});var n=r(41135);let o=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,a=n.W,i=(e,t)=>r=>{var n;if((null==t?void 0:t.variants)==null)return a(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:l}=t,s=Object.keys(i).map(e=>{let t=null==r?void 0:r[e],n=null==l?void 0:l[e];if(null===t)return null;let a=o(t)||o(n);return i[e][a]}),u=r&&Object.entries(r).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return a(e,s,null==t?void 0:null===(n=t.compoundVariants)||void 0===n?void 0:n.reduce((e,t)=>{let{class:r,className:n,...o}=t;return Object.entries(o).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...l,...u}[t]):({...l,...u})[t]===r})?[...e,r,n]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}},41135:(e,t,r)=>{"use strict";function n(){for(var e,t,r=0,n="";rn,Z:()=>o});let o=n},31009:(e,t,r)=>{"use strict";r.d(t,{m6:()=>F});let n=/^\[(.+)\]$/;function o(e,t){let r=e;return t.split("-").forEach(e=>{r.nextPart.has(e)||r.nextPart.set(e,{nextPart:new Map,validators:[]}),r=r.nextPart.get(e)}),r}let a=/\s+/;function i(){let e,t,r=0,n="";for(;rt[e]||[];return t.isThemeGetter=!0,t}let s=/^\[(?:([a-z-]+):)?(.+)\]$/i,u=/^\d+\/\d+$/,c=new Set(["px","full","screen"]),d=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,f=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,p=/^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,h=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;function y(e){return b(e)||c.has(e)||u.test(e)}function m(e){return C(e,"length",M)}function b(e){return!!e&&!Number.isNaN(Number(e))}function g(e){return C(e,"number",b)}function v(e){return!!e&&Number.isInteger(Number(e))}function _(e){return e.endsWith("%")&&b(e.slice(0,-1))}function P(e){return s.test(e)}function w(e){return d.test(e)}let E=new Set(["length","size","percentage"]);function R(e){return C(e,E,A)}function O(e){return C(e,"position",A)}let j=new Set(["image","url"]);function x(e){return C(e,j,D)}function S(e){return C(e,"",N)}function T(){return!0}function C(e,t,r){let n=s.exec(e);return!!n&&(n[1]?"string"==typeof t?n[1]===t:t.has(n[1]):r(n[2]))}function M(e){return f.test(e)}function A(){return!1}function N(e){return p.test(e)}function D(e){return h.test(e)}Symbol.toStringTag;let F=function(e,...t){let r,l,s;let u=function(a){var i;return l=(r={cache:function(e){if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,r=new Map,n=new Map;function o(o,a){r.set(o,a),++t>e&&(t=0,n=r,r=new Map)}return{get(e){let t=r.get(e);return void 0!==t?t:void 0!==(t=n.get(e))?(o(e,t),t):void 0},set(e,t){r.has(e)?r.set(e,t):o(e,t)}}}((i=t.reduce((e,t)=>t(e),e())).cacheSize),splitModifiers:function(e){let t=e.separator,r=1===t.length,n=t[0],o=t.length;return function(e){let a;let i=[],l=0,s=0;for(let u=0;us?a-s:void 0}}}(i),...function(e){let t=function(e){var t;let{theme:r,prefix:n}=e,a={nextPart:new Map,validators:[]};return(t=Object.entries(e.classGroups),n?t.map(([e,t])=>[e,t.map(e=>"string"==typeof e?n+e:"object"==typeof e?Object.fromEntries(Object.entries(e).map(([e,t])=>[n+e,t])):e)]):t).forEach(([e,t])=>{(function e(t,r,n,a){t.forEach(t=>{if("string"==typeof t){(""===t?r:o(r,t)).classGroupId=n;return}if("function"==typeof t){if(t.isThemeGetter){e(t(a),r,n,a);return}r.validators.push({validator:t,classGroupId:n});return}Object.entries(t).forEach(([t,i])=>{e(i,o(r,t),n,a)})})})(t,a,e,r)}),a}(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:a}=e;return{getClassGroupId:function(e){let r=e.split("-");return""===r[0]&&1!==r.length&&r.shift(),function e(t,r){if(0===t.length)return r.classGroupId;let n=t[0],o=r.nextPart.get(n),a=o?e(t.slice(1),o):void 0;if(a)return a;if(0===r.validators.length)return;let i=t.join("-");return r.validators.find(({validator:e})=>e(i))?.classGroupId}(r,t)||function(e){if(n.test(e)){let t=n.exec(e)[1],r=t?.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}}(e)},getConflictingClassGroupIds:function(e,t){let n=r[e]||[];return t&&a[e]?[...n,...a[e]]:n}}}(i)}).cache.get,s=r.cache.set,u=c,c(a)};function c(e){let t=l(e);if(t)return t;let n=function(e,t){let{splitModifiers:r,getClassGroupId:n,getConflictingClassGroupIds:o}=t,i=new Set;return e.trim().split(a).map(e=>{let{modifiers:t,hasImportantModifier:o,baseClassName:a,maybePostfixModifierPosition:i}=r(e),l=n(i?a.substring(0,i):a),s=!!i;if(!l){if(!i||!(l=n(a)))return{isTailwindClass:!1,originalClassName:e};s=!1}let u=(function(e){if(e.length<=1)return e;let t=[],r=[];return e.forEach(e=>{"["===e[0]?(t.push(...r.sort(),e),r=[]):r.push(e)}),t.push(...r.sort()),t})(t).join(":");return{isTailwindClass:!0,modifierId:o?u+"!":u,classGroupId:l,originalClassName:e,hasPostfixModifier:s}}).reverse().filter(e=>{if(!e.isTailwindClass)return!0;let{modifierId:t,classGroupId:r,hasPostfixModifier:n}=e,a=t+r;return!i.has(a)&&(i.add(a),o(r,n).forEach(e=>i.add(t+e)),!0)}).reverse().map(e=>e.originalClassName).join(" ")}(e,r);return s(e,n),n}return function(){return u(i.apply(null,arguments))}}(function(){let e=l("colors"),t=l("spacing"),r=l("blur"),n=l("brightness"),o=l("borderColor"),a=l("borderRadius"),i=l("borderSpacing"),s=l("borderWidth"),u=l("contrast"),c=l("grayscale"),d=l("hueRotate"),f=l("invert"),p=l("gap"),h=l("gradientColorStops"),E=l("gradientColorStopPositions"),j=l("inset"),C=l("margin"),M=l("opacity"),A=l("padding"),N=l("saturate"),D=l("scale"),F=l("sepia"),k=l("skew"),U=l("space"),I=l("translate"),L=()=>["auto","contain","none"],H=()=>["auto","hidden","clip","visible","scroll"],z=()=>["auto",P,t],q=()=>[P,t],G=()=>["",y,m],K=()=>["auto",b,P],W=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],B=()=>["solid","dashed","dotted","double","none"],$=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity","plus-lighter"],Q=()=>["start","end","center","between","around","evenly","stretch"],V=()=>["","0",P],Y=()=>["auto","avoid","all","avoid-page","page","left","right","column"],X=()=>[b,g],Z=()=>[b,P];return{cacheSize:500,separator:":",theme:{colors:[T],spacing:[y,m],blur:["none","",w,P],brightness:X(),borderColor:[e],borderRadius:["none","","full",w,P],borderSpacing:q(),borderWidth:G(),contrast:X(),grayscale:V(),hueRotate:Z(),invert:V(),gap:q(),gradientColorStops:[e],gradientColorStopPositions:[_,m],inset:z(),margin:z(),opacity:X(),padding:q(),saturate:X(),scale:X(),sepia:V(),skew:Z(),space:q(),translate:q()},classGroups:{aspect:[{aspect:["auto","square","video",P]}],container:["container"],columns:[{columns:[w]}],"break-after":[{"break-after":Y()}],"break-before":[{"break-before":Y()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...W(),P]}],overflow:[{overflow:H()}],"overflow-x":[{"overflow-x":H()}],"overflow-y":[{"overflow-y":H()}],overscroll:[{overscroll:L()}],"overscroll-x":[{"overscroll-x":L()}],"overscroll-y":[{"overscroll-y":L()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[j]}],"inset-x":[{"inset-x":[j]}],"inset-y":[{"inset-y":[j]}],start:[{start:[j]}],end:[{end:[j]}],top:[{top:[j]}],right:[{right:[j]}],bottom:[{bottom:[j]}],left:[{left:[j]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",v,P]}],basis:[{basis:z()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",P]}],grow:[{grow:V()}],shrink:[{shrink:V()}],order:[{order:["first","last","none",v,P]}],"grid-cols":[{"grid-cols":[T]}],"col-start-end":[{col:["auto",{span:["full",v,P]},P]}],"col-start":[{"col-start":K()}],"col-end":[{"col-end":K()}],"grid-rows":[{"grid-rows":[T]}],"row-start-end":[{row:["auto",{span:[v,P]},P]}],"row-start":[{"row-start":K()}],"row-end":[{"row-end":K()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",P]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",P]}],gap:[{gap:[p]}],"gap-x":[{"gap-x":[p]}],"gap-y":[{"gap-y":[p]}],"justify-content":[{justify:["normal",...Q()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...Q(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...Q(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[A]}],px:[{px:[A]}],py:[{py:[A]}],ps:[{ps:[A]}],pe:[{pe:[A]}],pt:[{pt:[A]}],pr:[{pr:[A]}],pb:[{pb:[A]}],pl:[{pl:[A]}],m:[{m:[C]}],mx:[{mx:[C]}],my:[{my:[C]}],ms:[{ms:[C]}],me:[{me:[C]}],mt:[{mt:[C]}],mr:[{mr:[C]}],mb:[{mb:[C]}],ml:[{ml:[C]}],"space-x":[{"space-x":[U]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[U]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",P,t]}],"min-w":[{"min-w":[P,t,"min","max","fit"]}],"max-w":[{"max-w":[P,t,"none","full","min","max","fit","prose",{screen:[w]},w]}],h:[{h:[P,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[P,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[P,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[P,t,"auto","min","max","fit"]}],"font-size":[{text:["base",w,m]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",g]}],"font-family":[{font:[T]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",P]}],"line-clamp":[{"line-clamp":["none",b,g]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",y,P]}],"list-image":[{"list-image":["none",P]}],"list-style-type":[{list:["none","disc","decimal",P]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[M]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[M]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...B(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",y,m]}],"underline-offset":[{"underline-offset":["auto",y,P]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:q()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",P]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",P]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[M]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...W(),O]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",R]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},x]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[E]}],"gradient-via-pos":[{via:[E]}],"gradient-to-pos":[{to:[E]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],rounded:[{rounded:[a]}],"rounded-s":[{"rounded-s":[a]}],"rounded-e":[{"rounded-e":[a]}],"rounded-t":[{"rounded-t":[a]}],"rounded-r":[{"rounded-r":[a]}],"rounded-b":[{"rounded-b":[a]}],"rounded-l":[{"rounded-l":[a]}],"rounded-ss":[{"rounded-ss":[a]}],"rounded-se":[{"rounded-se":[a]}],"rounded-ee":[{"rounded-ee":[a]}],"rounded-es":[{"rounded-es":[a]}],"rounded-tl":[{"rounded-tl":[a]}],"rounded-tr":[{"rounded-tr":[a]}],"rounded-br":[{"rounded-br":[a]}],"rounded-bl":[{"rounded-bl":[a]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[M]}],"border-style":[{border:[...B(),"hidden"]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[M]}],"divide-style":[{divide:B()}],"border-color":[{border:[o]}],"border-color-x":[{"border-x":[o]}],"border-color-y":[{"border-y":[o]}],"border-color-t":[{"border-t":[o]}],"border-color-r":[{"border-r":[o]}],"border-color-b":[{"border-b":[o]}],"border-color-l":[{"border-l":[o]}],"divide-color":[{divide:[o]}],"outline-style":[{outline:["",...B()]}],"outline-offset":[{"outline-offset":[y,P]}],"outline-w":[{outline:[y,m]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:G()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[M]}],"ring-offset-w":[{"ring-offset":[y,m]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",w,S]}],"shadow-color":[{shadow:[T]}],opacity:[{opacity:[M]}],"mix-blend":[{"mix-blend":$()}],"bg-blend":[{"bg-blend":$()}],filter:[{filter:["","none"]}],blur:[{blur:[r]}],brightness:[{brightness:[n]}],contrast:[{contrast:[u]}],"drop-shadow":[{"drop-shadow":["","none",w,P]}],grayscale:[{grayscale:[c]}],"hue-rotate":[{"hue-rotate":[d]}],invert:[{invert:[f]}],saturate:[{saturate:[N]}],sepia:[{sepia:[F]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[r]}],"backdrop-brightness":[{"backdrop-brightness":[n]}],"backdrop-contrast":[{"backdrop-contrast":[u]}],"backdrop-grayscale":[{"backdrop-grayscale":[c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[d]}],"backdrop-invert":[{"backdrop-invert":[f]}],"backdrop-opacity":[{"backdrop-opacity":[M]}],"backdrop-saturate":[{"backdrop-saturate":[N]}],"backdrop-sepia":[{"backdrop-sepia":[F]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",P]}],duration:[{duration:Z()}],ease:[{ease:["linear","in","out","in-out",P]}],delay:[{delay:Z()}],animate:[{animate:["none","spin","ping","pulse","bounce",P]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[D]}],"scale-x":[{"scale-x":[D]}],"scale-y":[{"scale-y":[D]}],rotate:[{rotate:[v,P]}],"translate-x":[{"translate-x":[I]}],"translate-y":[{"translate-y":[I]}],"skew-x":[{"skew-x":[k]}],"skew-y":[{"skew-y":[k]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",P]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",P]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":q()}],"scroll-mx":[{"scroll-mx":q()}],"scroll-my":[{"scroll-my":q()}],"scroll-ms":[{"scroll-ms":q()}],"scroll-me":[{"scroll-me":q()}],"scroll-mt":[{"scroll-mt":q()}],"scroll-mr":[{"scroll-mr":q()}],"scroll-mb":[{"scroll-mb":q()}],"scroll-ml":[{"scroll-ml":q()}],"scroll-p":[{"scroll-p":q()}],"scroll-px":[{"scroll-px":q()}],"scroll-py":[{"scroll-py":q()}],"scroll-ps":[{"scroll-ps":q()}],"scroll-pe":[{"scroll-pe":q()}],"scroll-pt":[{"scroll-pt":q()}],"scroll-pr":[{"scroll-pr":q()}],"scroll-pb":[{"scroll-pb":q()}],"scroll-pl":[{"scroll-pl":q()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",P]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[y,m,g]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}})},53370:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n,_interop_require_default:()=>n})}}; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/chunks/682.js b/phase-1-core-infra/frontend/.next/server/chunks/682.js new file mode 100644 index 0000000000000000000000000000000000000000..05e647ceb794c26f5cdb4287ac5ea7253367c76e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/chunks/682.js @@ -0,0 +1,6 @@ +"use strict";exports.id=682,exports.ids=[682],exports.modules={61682:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{Head:function(){return y},Html:function(){return I},Main:function(){return T},NextScript:function(){return S},default:function(){return P}});let r=n(20997),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=p(void 0);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(r,o,s):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r}(n(16689)),o=n(45104),s=n(75778),a=n(79630),l=function(e){return e&&e.__esModule?e:{default:e}}(n(80676)),u=n(3112),c=n(8584);function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}let f=new Set;function d(e,t,n){let r=(0,s.getPageFiles)(e,"/_app"),i=n?[]:(0,s.getPageFiles)(e,t);return{sharedFiles:r,pageFiles:i,allFiles:[...new Set([...r,...i])]}}function h(e,t){let{assetPrefix:n,buildManifest:i,assetQueryString:o,disableOptimizedLoading:s,crossOrigin:a}=e;return i.polyfillFiles.filter(e=>e.endsWith(".js")&&!e.endsWith(".module.js")).map(e=>(0,r.jsx)("script",{defer:!s,nonce:t.nonce,crossOrigin:t.crossOrigin||a,noModule:!0,src:`${n}/_next/${(0,c.encodeURIPath)(e)}${o}`},e))}function m({styles:e}){if(!e)return null;let t=Array.isArray(e)?e:[];if(e.props&&Array.isArray(e.props.children)){let n=e=>{var t,n;return null==e?void 0:null==(n=e.props)?void 0:null==(t=n.dangerouslySetInnerHTML)?void 0:t.__html};e.props.children.forEach(e=>{Array.isArray(e)?e.forEach(e=>n(e)&&t.push(e)):n(e)&&t.push(e)})}return(0,r.jsx)("style",{"amp-custom":"",dangerouslySetInnerHTML:{__html:t.map(e=>e.props.dangerouslySetInnerHTML.__html).join("").replace(/\/\*# sourceMappingURL=.*\*\//g,"").replace(/\/\*@ sourceURL=.*?\*\//g,"")}})}function _(e,t,n){let{dynamicImports:i,assetPrefix:o,isDevelopment:s,assetQueryString:a,disableOptimizedLoading:l,crossOrigin:u}=e;return i.map(e=>!e.endsWith(".js")||n.allFiles.includes(e)?null:(0,r.jsx)("script",{async:!s&&l,defer:!l,src:`${o}/_next/${(0,c.encodeURIPath)(e)}${a}`,nonce:t.nonce,crossOrigin:t.crossOrigin||u},e))}function g(e,t,n){var i;let{assetPrefix:o,buildManifest:s,isDevelopment:a,assetQueryString:l,disableOptimizedLoading:u,crossOrigin:p}=e;return[...n.allFiles.filter(e=>e.endsWith(".js")),...null==(i=s.lowPriorityFiles)?void 0:i.filter(e=>e.endsWith(".js"))].map(e=>(0,r.jsx)("script",{src:`${o}/_next/${(0,c.encodeURIPath)(e)}${l}`,nonce:t.nonce,async:!a&&u,defer:!u,crossOrigin:t.crossOrigin||p},e))}function E(e,t){let{scriptLoader:n,disableOptimizedLoading:o,crossOrigin:s}=e,a=function(e,t){let{assetPrefix:n,scriptLoader:o,crossOrigin:s,nextScriptWorkers:a}=e;if(!a)return null;try{let{partytownSnippet:e}=require("@builder.io/partytown/integration"),a=(Array.isArray(t.children)?t.children:[t.children]).find(e=>{var t,n;return!!e&&!!e.props&&(null==e?void 0:null==(n=e.props)?void 0:null==(t=n.dangerouslySetInnerHTML)?void 0:t.__html.length)&&"data-partytown-config"in e.props});return(0,r.jsxs)(r.Fragment,{children:[!a&&(0,r.jsx)("script",{"data-partytown-config":"",dangerouslySetInnerHTML:{__html:` + partytown = { + lib: "${n}/_next/static/~partytown/" + }; + `}}),(0,r.jsx)("script",{"data-partytown":"",dangerouslySetInnerHTML:{__html:e()}}),(o.worker||[]).map((e,n)=>{let{strategy:r,src:o,children:a,dangerouslySetInnerHTML:l,...u}=e,c={};if(o)c.src=o;else if(l&&l.__html)c.dangerouslySetInnerHTML={__html:l.__html};else if(a)c.dangerouslySetInnerHTML={__html:"string"==typeof a?a:Array.isArray(a)?a.join(""):""};else throw Error("Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script");return(0,i.createElement)("script",{...c,...u,type:"text/partytown",key:o||n,nonce:t.nonce,"data-nscript":"worker",crossOrigin:t.crossOrigin||s})})]})}catch(e){return(0,l.default)(e)&&"MODULE_NOT_FOUND"!==e.code&&console.warn(`Warning: ${e.message}`),null}}(e,t),u=(n.beforeInteractive||[]).filter(e=>e.src).map((e,n)=>{let{strategy:r,...a}=e;return(0,i.createElement)("script",{...a,key:a.src||n,defer:a.defer??!o,nonce:t.nonce,"data-nscript":"beforeInteractive",crossOrigin:t.crossOrigin||s})});return(0,r.jsxs)(r.Fragment,{children:[a,u]})}class y extends i.default.Component{static #e=this.contextType=u.HtmlContext;getCssLinks(e){let{assetPrefix:t,assetQueryString:n,dynamicImports:i,crossOrigin:o,optimizeCss:s,optimizeFonts:a}=this.context,l=e.allFiles.filter(e=>e.endsWith(".css")),u=new Set(e.sharedFiles),p=new Set([]),f=Array.from(new Set(i.filter(e=>e.endsWith(".css"))));if(f.length){let e=new Set(l);p=new Set(f=f.filter(t=>!(e.has(t)||u.has(t)))),l.push(...f)}let d=[];return l.forEach(e=>{let i=u.has(e);s||d.push((0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"style",crossOrigin:this.props.crossOrigin||o},`${e}-preload`));let a=p.has(e);d.push((0,r.jsx)("link",{nonce:this.props.nonce,rel:"stylesheet",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,crossOrigin:this.props.crossOrigin||o,"data-n-g":a?void 0:i?"":void 0,"data-n-p":a?void 0:i?void 0:""},e))}),a&&(d=this.makeStylesheetInert(d)),0===d.length?null:d}getPreloadDynamicChunks(){let{dynamicImports:e,assetPrefix:t,assetQueryString:n,crossOrigin:i}=this.context;return e.map(e=>e.endsWith(".js")?(0,r.jsx)("link",{rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"script",nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||i},e):null).filter(Boolean)}getPreloadMainLinks(e){let{assetPrefix:t,assetQueryString:n,scriptLoader:i,crossOrigin:o}=this.context,s=e.allFiles.filter(e=>e.endsWith(".js"));return[...(i.beforeInteractive||[]).map(e=>(0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:e.src,as:"script",crossOrigin:this.props.crossOrigin||o},e.src)),...s.map(e=>(0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"script",crossOrigin:this.props.crossOrigin||o},e))]}getBeforeInteractiveInlineScripts(){let{scriptLoader:e}=this.context,{nonce:t,crossOrigin:n}=this.props;return(e.beforeInteractive||[]).filter(e=>!e.src&&(e.dangerouslySetInnerHTML||e.children)).map((e,r)=>{let{strategy:o,children:s,dangerouslySetInnerHTML:a,src:l,...u}=e,c="";return a&&a.__html?c=a.__html:s&&(c="string"==typeof s?s:Array.isArray(s)?s.join(""):""),(0,i.createElement)("script",{...u,dangerouslySetInnerHTML:{__html:c},key:u.id||r,nonce:t,"data-nscript":"beforeInteractive",crossOrigin:n||void 0})})}getDynamicChunks(e){return _(this.context,this.props,e)}getPreNextScripts(){return E(this.context,this.props)}getScripts(e){return g(this.context,this.props,e)}getPolyfillScripts(){return h(this.context,this.props)}makeStylesheetInert(e){return i.default.Children.map(e,e=>{var t,n;if((null==e?void 0:e.type)==="link"&&(null==e?void 0:null==(t=e.props)?void 0:t.href)&&o.OPTIMIZED_FONT_PROVIDERS.some(({url:t})=>{var n,r;return null==e?void 0:null==(r=e.props)?void 0:null==(n=r.href)?void 0:n.startsWith(t)})){let t={...e.props||{},"data-href":e.props.href,href:void 0};return i.default.cloneElement(e,t)}if(null==e?void 0:null==(n=e.props)?void 0:n.children){let t={...e.props||{},children:this.makeStylesheetInert(e.props.children)};return i.default.cloneElement(e,t)}return e}).filter(Boolean)}render(){let{styles:e,ampPath:t,inAmpMode:o,hybridAmp:s,canonicalBase:a,__NEXT_DATA__:l,dangerousAsPath:u,headTags:p,unstable_runtimeJS:f,unstable_JsPreload:h,disableOptimizedLoading:_,optimizeCss:g,optimizeFonts:E,assetPrefix:y,nextFontManifest:S}=this.context,I=!1===f,T=!1===h||!_;this.context.docComponentsRendered.Head=!0;let{head:P}=this.context,O=[],x=[];P&&(P.forEach(e=>{let t;this.context.strictNextHead&&(t=i.default.createElement("meta",{name:"next-head",content:"1"})),e&&"link"===e.type&&"preload"===e.props.rel&&"style"===e.props.as?(t&&O.push(t),O.push(e)):e&&(t&&("meta"!==e.type||!e.props.charSet)&&x.push(t),x.push(e))}),P=O.concat(x));let b=i.default.Children.toArray(this.props.children).filter(Boolean);E&&!o&&(b=this.makeStylesheetInert(b));let N=!1,j=!1;P=i.default.Children.map(P||[],e=>{if(!e)return e;let{type:t,props:n}=e;if(o){let r="";if("meta"===t&&"viewport"===n.name?r='name="viewport"':"link"===t&&"canonical"===n.rel?j=!0:"script"===t&&(n.src&&-1>n.src.indexOf("ampproject")||n.dangerouslySetInnerHTML&&(!n.type||"text/javascript"===n.type))&&(r="{r+=` ${e}="${n[e]}"`}),r+="/>"),r)return console.warn(`Found conflicting amp tag "${e.type}" with conflicting prop ${r} in ${l.page}. https://nextjs.org/docs/messages/conflicting-amp-tag`),null}else"link"===t&&"amphtml"===n.rel&&(N=!0);return e});let v=d(this.context.buildManifest,this.context.__NEXT_DATA__.page,o),R=function(e,t,n=""){if(!e)return{preconnect:null,preload:null};let i=e.pages["/_app"],o=e.pages[t],s=Array.from(new Set([...i??[],...o??[]]));return{preconnect:0===s.length&&(i||o)?(0,r.jsx)("link",{"data-next-font":e.pagesUsingSizeAdjust?"size-adjust":"",rel:"preconnect",href:"/",crossOrigin:"anonymous"}):null,preload:s?s.map(e=>{let t=/\.(woff|woff2|eot|ttf|otf)$/.exec(e)[1];return(0,r.jsx)("link",{rel:"preload",href:`${n}/_next/${(0,c.encodeURIPath)(e)}`,as:"font",type:`font/${t}`,crossOrigin:"anonymous","data-next-font":e.includes("-s")?"size-adjust":""},e)}):null}}(S,u,y);return(0,r.jsxs)("head",{...function(e){let{crossOrigin:t,nonce:n,...r}=e;return r}(this.props),children:[this.context.isDevelopment&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{"data-next-hide-fouc":!0,"data-ampdevmode":o?"true":void 0,dangerouslySetInnerHTML:{__html:"body{display:none}"}}),(0,r.jsx)("noscript",{"data-next-hide-fouc":!0,"data-ampdevmode":o?"true":void 0,children:(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{display:block}"}})})]}),P,this.context.strictNextHead?null:(0,r.jsx)("meta",{name:"next-head-count",content:i.default.Children.count(P||[]).toString()}),b,E&&(0,r.jsx)("meta",{name:"next-font-preconnect"}),R.preconnect,R.preload,o&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("meta",{name:"viewport",content:"width=device-width,minimum-scale=1,initial-scale=1"}),!j&&(0,r.jsx)("link",{rel:"canonical",href:a+n(50733).cleanAmpPath(u)}),(0,r.jsx)("link",{rel:"preload",as:"script",href:"https://cdn.ampproject.org/v0.js"}),(0,r.jsx)(m,{styles:e}),(0,r.jsx)("style",{"amp-boilerplate":"",dangerouslySetInnerHTML:{__html:"body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}"}}),(0,r.jsx)("noscript",{children:(0,r.jsx)("style",{"amp-boilerplate":"",dangerouslySetInnerHTML:{__html:"body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}"}})}),(0,r.jsx)("script",{async:!0,src:"https://cdn.ampproject.org/v0.js"})]}),!o&&(0,r.jsxs)(r.Fragment,{children:[!N&&s&&(0,r.jsx)("link",{rel:"amphtml",href:a+(t||`${u}${u.includes("?")?"&":"?"}amp=1`)}),this.getBeforeInteractiveInlineScripts(),!g&&this.getCssLinks(v),!g&&(0,r.jsx)("noscript",{"data-n-css":this.props.nonce??""}),!I&&!T&&this.getPreloadDynamicChunks(),!I&&!T&&this.getPreloadMainLinks(v),!_&&!I&&this.getPolyfillScripts(),!_&&!I&&this.getPreNextScripts(),!_&&!I&&this.getDynamicChunks(v),!_&&!I&&this.getScripts(v),g&&this.getCssLinks(v),g&&(0,r.jsx)("noscript",{"data-n-css":this.props.nonce??""}),this.context.isDevelopment&&(0,r.jsx)("noscript",{id:"__next_css__DO_NOT_USE__"}),e||null]}),i.default.createElement(i.default.Fragment,{},...p||[])]})}}class S extends i.default.Component{static #e=this.contextType=u.HtmlContext;getDynamicChunks(e){return _(this.context,this.props,e)}getPreNextScripts(){return E(this.context,this.props)}getScripts(e){return g(this.context,this.props,e)}getPolyfillScripts(){return h(this.context,this.props)}static getInlineScriptSource(e){let{__NEXT_DATA__:t,largePageDataBytes:r}=e;try{let i=JSON.stringify(t);if(f.has(t.page))return(0,a.htmlEscapeJsonString)(i);let o=Buffer.from(i).byteLength,s=n(95955).Z;return r&&o>r&&(f.add(t.page),console.warn(`Warning: data for page "${t.page}"${t.page===e.dangerousAsPath?"":` (path "${e.dangerousAsPath}")`} is ${s(o)} which exceeds the threshold of ${s(r)}, this amount of data can reduce performance. +See more info here: https://nextjs.org/docs/messages/large-page-data`)),(0,a.htmlEscapeJsonString)(i)}catch(e){if((0,l.default)(e)&&-1!==e.message.indexOf("circular structure"))throw Error(`Circular structure in "getInitialProps" result of page "${t.page}". https://nextjs.org/docs/messages/circular-structure`);throw e}}render(){let{assetPrefix:e,inAmpMode:t,buildManifest:n,unstable_runtimeJS:i,docComponentsRendered:o,assetQueryString:s,disableOptimizedLoading:a,crossOrigin:l}=this.context,u=!1===i;if(o.NextScript=!0,t)return null;let p=d(this.context.buildManifest,this.context.__NEXT_DATA__.page,t);return(0,r.jsxs)(r.Fragment,{children:[!u&&n.devFiles?n.devFiles.map(t=>(0,r.jsx)("script",{src:`${e}/_next/${(0,c.encodeURIPath)(t)}${s}`,nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||l},t)):null,u?null:(0,r.jsx)("script",{id:"__NEXT_DATA__",type:"application/json",nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||l,dangerouslySetInnerHTML:{__html:S.getInlineScriptSource(this.context)}}),a&&!u&&this.getPolyfillScripts(),a&&!u&&this.getPreNextScripts(),a&&!u&&this.getDynamicChunks(p),a&&!u&&this.getScripts(p)]})}}function I(e){let{inAmpMode:t,docComponentsRendered:n,locale:o,scriptLoader:s,__NEXT_DATA__:a}=(0,u.useHtmlContext)();return n.Html=!0,function(e,t,n){var r,o,s,a;if(!n.children)return;let l=[],u=Array.isArray(n.children)?n.children:[n.children],c=null==(o=u.find(e=>e.type===y))?void 0:null==(r=o.props)?void 0:r.children,p=null==(a=u.find(e=>"body"===e.type))?void 0:null==(s=a.props)?void 0:s.children,f=[...Array.isArray(c)?c:[c],...Array.isArray(p)?p:[p]];i.default.Children.forEach(f,t=>{var n;if(t&&(null==(n=t.type)?void 0:n.__nextScript)){if("beforeInteractive"===t.props.strategy){e.beforeInteractive=(e.beforeInteractive||[]).concat([{...t.props}]);return}if(["lazyOnload","afterInteractive","worker"].includes(t.props.strategy)){l.push(t.props);return}}}),t.scriptLoader=l}(s,a,e),(0,r.jsx)("html",{...e,lang:e.lang||o||void 0,amp:t?"":void 0,"data-ampdevmode":void 0})}function T(){let{docComponentsRendered:e}=(0,u.useHtmlContext)();return e.Main=!0,(0,r.jsx)("next-js-internal-body-render-target",{})}class P extends i.default.Component{static getInitialProps(e){return e.defaultGetInitialProps(e)}render(){return(0,r.jsxs)(I,{children:[(0,r.jsx)(y,{}),(0,r.jsxs)("body",{children:[(0,r.jsx)(T,{}),(0,r.jsx)(S,{})]})]})}}P[o.NEXT_BUILTIN_DOCUMENT]=function(){return(0,r.jsxs)(I,{children:[(0,r.jsx)(y,{}),(0,r.jsxs)("body",{children:[(0,r.jsx)(T,{}),(0,r.jsx)(S,{})]})]})}},45104:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{APP_BUILD_MANIFEST:function(){return E},APP_CLIENT_INTERNALS:function(){return K},APP_PATHS_MANIFEST:function(){return m},APP_PATH_ROUTES_MANIFEST:function(){return _},AUTOMATIC_FONT_OPTIMIZATION_MANIFEST:function(){return M},BARREL_OPTIMIZATION_PREFIX:function(){return B},BLOCKED_PAGES:function(){return F},BUILD_ID_FILE:function(){return w},BUILD_MANIFEST:function(){return g},CLIENT_PUBLIC_FILES_PATH:function(){return D},CLIENT_REFERENCE_MANIFEST:function(){return W},CLIENT_STATIC_FILES_PATH:function(){return U},CLIENT_STATIC_FILES_RUNTIME_AMP:function(){return q},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return V},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return X},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return Q},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return ee},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return Z},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return J},COMPILER_INDEXES:function(){return o},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return C},DEFAULT_RUNTIME_WEBPACK:function(){return et},DEFAULT_SANS_SERIF_FONT:function(){return el},DEFAULT_SERIF_FONT:function(){return ea},DEV_CLIENT_PAGES_MANIFEST:function(){return j},DEV_MIDDLEWARE_MANIFEST:function(){return R},EDGE_RUNTIME_WEBPACK:function(){return en},EDGE_UNSUPPORTED_NODE_APIS:function(){return ed},EXPORT_DETAIL:function(){return P},EXPORT_MARKER:function(){return T},FUNCTIONS_CONFIG_MANIFEST:function(){return y},GOOGLE_FONT_PROVIDER:function(){return eo},IMAGES_MANIFEST:function(){return b},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Y},MIDDLEWARE_BUILD_MANIFEST:function(){return G},MIDDLEWARE_MANIFEST:function(){return v},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return z},MODERN_BROWSERSLIST_TARGET:function(){return r.default},NEXT_BUILTIN_DOCUMENT:function(){return $},NEXT_FONT_MANIFEST:function(){return I},OPTIMIZED_FONT_PROVIDERS:function(){return es},PAGES_MANIFEST:function(){return h},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return d},PHASE_PRODUCTION_BUILD:function(){return u},PHASE_PRODUCTION_SERVER:function(){return c},PHASE_TEST:function(){return f},PRERENDER_MANIFEST:function(){return O},REACT_LOADABLE_MANIFEST:function(){return A},ROUTES_MANIFEST:function(){return x},RSC_MODULE_TYPES:function(){return ef},SERVER_DIRECTORY:function(){return L},SERVER_FILES_MANIFEST:function(){return N},SERVER_PROPS_ID:function(){return ei},SERVER_REFERENCE_MANIFEST:function(){return H},STATIC_PROPS_ID:function(){return er},STATIC_STATUS_PAGES:function(){return eu},STRING_LITERAL_DROP_BUNDLE:function(){return k},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return S},SYSTEM_ENTRYPOINTS:function(){return eh},TRACE_OUTPUT_VERSION:function(){return ec},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ep},UNDERSCORE_NOT_FOUND_ROUTE:function(){return s},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return a}});let r=n(50167)._(n(60979)),i={client:"client",server:"server",edgeServer:"edge-server"},o={[i.client]:0,[i.server]:1,[i.edgeServer]:2},s="/_not-found",a=""+s+"/page",l="phase-export",u="phase-production-build",c="phase-production-server",p="phase-development-server",f="phase-test",d="phase-info",h="pages-manifest.json",m="app-paths-manifest.json",_="app-path-routes-manifest.json",g="build-manifest.json",E="app-build-manifest.json",y="functions-config-manifest.json",S="subresource-integrity-manifest",I="next-font-manifest",T="export-marker.json",P="export-detail.json",O="prerender-manifest.json",x="routes-manifest.json",b="images-manifest.json",N="required-server-files.json",j="_devPagesManifest.json",v="middleware-manifest.json",R="_devMiddlewareManifest.json",A="react-loadable-manifest.json",M="font-manifest.json",L="server",C=["next.config.js","next.config.mjs"],w="BUILD_ID",F=["/_document","/_app","/_error"],D="public",U="static",k="__NEXT_DROP_CLIENT_FILE__",$="__NEXT_BUILTIN_DOCUMENT__",B="__barrel_optimize__",W="client-reference-manifest",H="server-reference-manifest",G="middleware-build-manifest",z="middleware-react-loadable-manifest",Y="interception-route-rewrite-manifest",V="main",X=""+V+"-app",K="app-pages-internals",Z="react-refresh",q="amp",J="webpack",Q="polyfills",ee=Symbol(Q),et="webpack-runtime",en="edge-runtime-webpack",er="__N_SSG",ei="__N_SSP",eo="https://fonts.googleapis.com/",es=[{url:eo,preconnect:"https://fonts.gstatic.com"},{url:"https://use.typekit.net",preconnect:"https://use.typekit.net"}],ea={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},el={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},eu=["/500"],ec=1,ep=6e3,ef={client:"client",server:"server"},ed=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eh=new Set([V,Z,q,X]);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8584:(e,t)=>{function n(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return n}})},58299:(e,t)=>{function n(e){return Object.prototype.toString.call(e)}function r(e){if("[object Object]"!==n(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getObjectClassLabel:function(){return n},isPlainObject:function(){return r}})},60979:e=>{e.exports=["chrome 64","edge 79","firefox 67","opera 51","safari 12"]},75876:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"denormalizePagePath",{enumerable:!0,get:function(){return o}});let r=n(72189),i=n(24212);function o(e){let t=(0,i.normalizePathSep)(e);return t.startsWith("/index/")&&!(0,r.isDynamicRoute)(t)?t.slice(6):"/index"!==t?t:"/"}},75078:(e,t)=>{function n(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return n}})},49431:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePagePath",{enumerable:!0,get:function(){return s}});let r=n(75078),i=n(72189),o=n(45782);function s(e){let t=/^\/index(\/|$)/.test(e)&&!(0,i.isDynamicRoute)(e)?"/index"+e:"/"===e?"/index":(0,r.ensureLeadingSlash)(e);{let{posix:e}=n(55315),r=e.normalize(t);if(r!==t)throw new o.NormalizeError("Requested and resolved page mismatch: "+t+" "+r)}return t}},24212:(e,t)=>{function n(e){return e.replace(/\\/g,"/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathSep",{enumerable:!0,get:function(){return n}})},42340:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{normalizeAppPath:function(){return o},normalizeRscURL:function(){return s}});let r=n(75078),i=n(73737);function o(e){return(0,r.ensureLeadingSlash)(e.split("/").reduce((e,t,n,r)=>!t||(0,i.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&n===r.length-1?e:e+"/"+t,""))}function s(e){return e.replace(/\.rsc($|\?)/,"$1")}},72189:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getSortedRoutes:function(){return r.getSortedRoutes},isDynamicRoute:function(){return i.isDynamicRoute}});let r=n(317),i=n(31735)},31735:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return o}});let r=n(92407),i=/\/\[[^/]+?\](?=\/|$)/;function o(e){return(0,r.isInterceptionRouteAppPath)(e)&&(e=(0,r.extractInterceptionRouteInformation)(e).interceptedRoute),i.test(e)}},317:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSortedRoutes",{enumerable:!0,get:function(){return r}});class n{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e){void 0===e&&(e="/");let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let n=t.map(t=>this.children.get(t)._smoosh(""+e+t+"/")).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&n.push(...this.children.get("[]")._smoosh(e+"["+this.slugName+"]/")),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Error('You cannot define a route with the same specificity as a optional catch-all route ("'+t+'" and "'+t+"[[..."+this.optionalRestSlugName+']]").');n.unshift(t)}return null!==this.restSlugName&&n.push(...this.children.get("[...]")._smoosh(e+"[..."+this.restSlugName+"]/")),null!==this.optionalRestSlugName&&n.push(...this.children.get("[[...]]")._smoosh(e+"[[..."+this.optionalRestSlugName+"]]/")),n}_insert(e,t,r){if(0===e.length){this.placeholder=!1;return}if(r)throw Error("Catch-all must be the last part of the URL.");let i=e[0];if(i.startsWith("[")&&i.endsWith("]")){let n=i.slice(1,-1),s=!1;if(n.startsWith("[")&&n.endsWith("]")&&(n=n.slice(1,-1),s=!0),n.startsWith("...")&&(n=n.substring(3),r=!0),n.startsWith("[")||n.endsWith("]"))throw Error("Segment names may not start or end with extra brackets ('"+n+"').");if(n.startsWith("."))throw Error("Segment names may not start with erroneous periods ('"+n+"').");function o(e,n){if(null!==e&&e!==n)throw Error("You cannot use different slug names for the same dynamic path ('"+e+"' !== '"+n+"').");t.forEach(e=>{if(e===n)throw Error('You cannot have the same slug name "'+n+'" repeat within a single dynamic path');if(e.replace(/\W/g,"")===i.replace(/\W/g,""))throw Error('You cannot have the slug names "'+e+'" and "'+n+'" differ only by non-word symbols within a single dynamic path')}),t.push(n)}if(r){if(s){if(null!=this.restSlugName)throw Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+e[0]+'" ).');o(this.optionalRestSlugName,n),this.optionalRestSlugName=n,i="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+e[0]+'").');o(this.restSlugName,n),this.restSlugName=n,i="[...]"}}else{if(s)throw Error('Optional route parameters are not yet supported ("'+e[0]+'").');o(this.slugName,n),this.slugName=n,i="[]"}}this.children.has(i)||this.children.set(i,new n),this.children.get(i)._insert(e.slice(1),t,r)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function r(e){let t=new n;return e.forEach(e=>t.insert(e)),t.smoosh()}},73737:(e,t)=>{function n(e){return"("===e[0]&&e.endsWith(")")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DEFAULT_SEGMENT_KEY:function(){return i},PAGE_SEGMENT_KEY:function(){return r},isGroupSegment:function(){return n}});let r="__PAGE__",i="__DEFAULT__"},45782:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return E},MissingStaticPage:function(){return g},NormalizeError:function(){return m},PageNotFoundError:function(){return _},SP:function(){return f},ST:function(){return d},WEB_VITALS:function(){return n},execOnce:function(){return r},getDisplayName:function(){return l},getLocationOrigin:function(){return s},getURL:function(){return a},isAbsoluteUrl:function(){return o},isResSent:function(){return u},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return y}});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function r(e){let t,n=!1;return function(){for(var r=arguments.length,i=Array(r),o=0;oi.test(e);function s(){let{protocol:e,hostname:t,port:n}=window.location;return e+"//"+t+(n?":"+n:"")}function a(){let{href:e}=window.location,t=s();return e.substring(t.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function u(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function p(e,t){let n=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let r=await e.getInitialProps(t);if(n&&u(n))return r;if(!r)throw Error('"'+l(e)+'.getInitialProps()" should resolve to an object. But found "'+r+'" instead.');return r}let f="undefined"!=typeof performance,d=f&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class m extends Error{}class _ extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class g extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class E extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function y(e){return JSON.stringify({message:e.message,stack:e.stack})}},80676:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return i},getProperError:function(){return o}});let r=n(58299);function i(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function o(e){return i(e)?e:Error((0,r.isPlainObject)(e)?JSON.stringify(e):e+"")}},95955:(e,t)=>{Object.defineProperty(t,"Z",{enumerable:!0,get:function(){return i}});let n=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],r=(e,t)=>{let n=e;return"string"==typeof t?n=e.toLocaleString(t):!0===t&&(n=e.toLocaleString()),n};function i(e,t){if(!Number.isFinite(e))throw TypeError(`Expected a finite number, got ${typeof e}: ${e}`);if((t=Object.assign({},t)).signed&&0===e)return" 0 B";let i=e<0,o=i?"-":t.signed?"+":"";if(i&&(e=-e),e<1)return o+r(e,t.locale)+" B";let s=Math.min(Math.floor(Math.log10(e)/3),n.length-1);return o+r(e=Number((e/Math.pow(1e3,s)).toPrecision(3)),t.locale)+" "+n[s]}},92407:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return i},extractInterceptionRouteInformation:function(){return s},isInterceptionRouteAppPath:function(){return o}});let r=n(42340),i=["(..)(..)","(.)","(..)","(...)"];function o(e){return void 0!==e.split("/").find(e=>i.find(t=>e.startsWith(t)))}function s(e){let t,n,o;for(let r of e.split("/"))if(n=i.find(e=>r.startsWith(e))){[t,o]=e.split(n,2);break}if(!t||!n||!o)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,r.normalizeAppPath)(t),n){case"(.)":o="/"===t?`/${o}`:t+"/"+o;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);o=t.split("/").slice(0,-1).concat(o).join("/");break;case"(...)":o="/"+o;break;case"(..)(..)":let s=t.split("/");if(s.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);o=s.slice(0,-2).concat(o).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:o}}},87093:(e,t,n)=>{e.exports=n(62785)},3112:(e,t,n)=>{e.exports=n(87093).vendored.contexts.HtmlContext},75778:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getPageFiles",{enumerable:!0,get:function(){return o}});let r=n(75876),i=n(49431);function o(e,t){let n=(0,r.denormalizePagePath)((0,i.normalizePagePath)(t));return e.pages[n]||(console.warn(`Could not find files for ${n} in .next/build-manifest.json`),[])}},79630:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ESCAPE_REGEX:function(){return r},htmlEscapeJsonString:function(){return i}});let n={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},r=/[&><\u2028\u2029]/g;function i(e){return e.replace(r,e=>n[e])}},50733:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{cleanAmpPath:function(){return o},debounce:function(){return s},isBlockedPage:function(){return i}});let r=n(45104);function i(e){return r.BLOCKED_PAGES.includes(e)}function o(e){return e.match(/\?amp=(y|yes|true|1)/)&&(e=e.replace(/\?amp=(y|yes|true|1)&?/,"?")),e.match(/&=(y|yes|true|1)/)&&(e=e.replace(/&=(y|yes|true|1)/,"")),e=e.replace(/\?$/,"")}function s(e,t,n=1/0){let r,i,o;let s=0,a=0;function l(){let u=Date.now(),c=a+t-u;c<=0||s+n>=u?(r=void 0,e.apply(o,i)):r=setTimeout(l,c)}return function(...e){i=e,o=this,a=Date.now(),void 0===r&&(s=a,r=setTimeout(l,t))}}},50167:(e,t)=>{t._=t._interop_require_default=function(e){return e&&e.__esModule?e:{default:e}}}}; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/chunks/729.js b/phase-1-core-infra/frontend/.next/server/chunks/729.js new file mode 100644 index 0000000000000000000000000000000000000000..60058aae8b67e0caad8c8d6bba2d69ee026200c1 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/chunks/729.js @@ -0,0 +1 @@ +exports.id=729,exports.ids=[729],exports.modules={16958:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,12994,23)),Promise.resolve().then(s.t.bind(s,96114,23)),Promise.resolve().then(s.t.bind(s,9727,23)),Promise.resolve().then(s.t.bind(s,79671,23)),Promise.resolve().then(s.t.bind(s,41868,23)),Promise.resolve().then(s.t.bind(s,84759,23))},45642:(e,t,s)=>{Promise.resolve().then(s.bind(s,57983))},4271:(e,t,s)=>{Promise.resolve().then(s.bind(s,86325))},90434:(e,t,s)=>{"use strict";s.d(t,{default:()=>a.a});var r=s(79404),a=s.n(r)},35047:(e,t,s)=>{"use strict";var r=s(77389);s.o(r,"usePathname")&&s.d(t,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}})},57983:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>m});var r=s(10326),a=s(32082),n=s(35047),i=s(42357),o=s(91664),l=s(56627);let d=(0,s(76557).Z)("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);function c({variant:e="ghost",className:t}){(0,n.useRouter)();let{toast:s}=(0,l.pm)(),a=async()=>{try{await (0,i.w7)(),s({title:"Success",description:"Logged out successfully"}),window.location.href="/auth/login"}catch(e){s({title:"Error",description:e.message||"Failed to logout",variant:"destructive"})}};return(0,r.jsxs)(o.z,{variant:e,onClick:a,className:t,children:[r.jsx(d,{className:"mr-2 h-4 w-4"}),"Logout"]})}var u=s(90434),h=s(17577);let f=[{href:"/dashboard",label:"Dashboard",exact:!0,icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"})})},{href:"/dashboard/content/create",label:"Create Post",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4v16m8-8H4"})})},{href:"/dashboard/post-history",label:"Post History",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})})},{href:"/dashboard/insights",label:"Insights",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})})},{href:"/dashboard/connected-accounts",label:"Accounts",icon:r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"})})}];function m({children:e}){let{user:t,isLoading:s,isAuthenticated:i,isAdmin:o}=(0,a.a)();(0,n.useRouter)();let l=(0,n.usePathname)(),[d,m]=(0,h.useState)(!1);if(s)return r.jsx("div",{className:"min-h-screen bg-[#F3F2EF] flex items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[r.jsx("div",{className:"w-10 h-10 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),r.jsx("span",{className:"text-gray-500 text-sm font-sans",children:"Loading..."})]})});if(!i)return r.jsx("div",{className:"min-h-screen bg-[#F3F2EF] flex items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[r.jsx("div",{className:"w-10 h-10 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),r.jsx("span",{className:"text-gray-500 text-sm font-sans",children:"Redirecting..."})]})});let x=(e,t)=>t?l===e:l.startsWith(e),p=(t?.name||t?.email||"U").split(" ").map(e=>e[0]).slice(0,2).join("").toUpperCase();return(0,r.jsxs)("div",{className:"min-h-screen bg-[#F3F2EF] font-sans",children:[r.jsx("header",{className:"sticky top-0 z-50 bg-white shadow-[0_0_0_1px_rgba(0,0,0,0.08)] h-14 flex items-center px-4",children:(0,r.jsxs)("div",{className:"max-w-7xl mx-auto w-full flex items-center justify-between gap-4",children:[(0,r.jsxs)(u.default,{href:"/dashboard",className:"flex items-center gap-2 shrink-0",children:[r.jsx("div",{className:"w-8 h-8 rounded-full bg-[#0A66C2] flex items-center justify-center",children:r.jsx("svg",{className:"w-4 h-4 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),r.jsx("span",{className:"font-semibold text-gray-900 text-sm tracking-tight",children:"PostAI"})]}),(0,r.jsxs)("nav",{className:"hidden md:flex items-center gap-1",children:[f.map(e=>{let t=x(e.href,e.exact);return(0,r.jsxs)(u.default,{href:e.href,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm font-semibold transition-all duration-150 ${t?"bg-[#0A66C2] text-white":"text-gray-500 hover:bg-gray-100 hover:text-gray-900"}`,children:[e.icon,e.label]},e.href)}),o&&(0,r.jsxs)(u.default,{href:"/admin",className:"flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm font-semibold text-red-500 hover:bg-red-50 transition-all",children:[r.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"})}),"Admin"]})]}),(0,r.jsxs)("div",{className:"hidden md:flex items-center gap-3 shrink-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[r.jsx("div",{className:"w-8 h-8 rounded-full bg-[#0A66C2] flex items-center justify-center",children:r.jsx("span",{className:"text-white text-xs font-bold",children:p})}),r.jsx("span",{className:"text-sm font-semibold text-gray-900 max-w-[120px] truncate",children:t?.name||t?.email?.split("@")[0]||"User"})]}),r.jsx(c,{variant:"outline"})]}),r.jsx("button",{className:"md:hidden p-2 rounded-lg text-gray-600 hover:bg-gray-100 transition-colors",onClick:()=>m(!0),"aria-label":"Open menu",children:r.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})})]})}),d&&r.jsx("div",{className:"fixed inset-0 z-50 bg-black/40 md:hidden",onClick:()=>m(!1)}),(0,r.jsxs)("div",{className:`fixed bottom-0 left-0 right-0 z-50 bg-white rounded-t-2xl shadow-2xl md:hidden transition-transform duration-300 ${d?"translate-y-0":"translate-y-full"}`,children:[r.jsx("div",{className:"flex justify-center pt-3 pb-1",children:r.jsx("div",{className:"w-10 h-1 rounded-full bg-gray-300"})}),(0,r.jsxs)("div",{className:"px-4 py-2 border-b border-gray-100 flex items-center gap-2 mb-2",children:[r.jsx("div",{className:"w-8 h-8 rounded-full bg-[#0A66C2] flex items-center justify-center",children:r.jsx("span",{className:"text-white text-xs font-bold",children:p})}),(0,r.jsxs)("div",{children:[r.jsx("p",{className:"text-sm font-semibold text-gray-900",children:t?.name||"User"}),r.jsx("p",{className:"text-xs text-gray-500",children:t?.email})]})]}),(0,r.jsxs)("nav",{className:"px-4 pb-4 space-y-1",children:[f.map(e=>{let t=x(e.href,e.exact);return(0,r.jsxs)(u.default,{href:e.href,onClick:()=>m(!1),className:`flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-semibold transition-all ${t?"bg-[#0A66C2] text-white":"text-gray-600 hover:bg-gray-100"}`,children:[e.icon,e.label]},e.href)}),r.jsx("div",{className:"pt-2 border-t border-gray-100 mt-2",children:r.jsx(c,{variant:"outline"})})]})]}),r.jsx("main",{className:"bg-[#F3F2EF] min-h-screen",children:e})]})}},86325:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>N});var r=s(10326),a=s(46465),n=s.n(a);s(23824);var i=s(17577),o=s(10592),l=s(79360),d=s(94019),c=s(51223);let u=o.zt,h=i.forwardRef(({className:e,...t},s)=>r.jsx(o.l_,{ref:s,className:(0,c.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));h.displayName=o.l_.displayName;let f=(0,l.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=i.forwardRef(({className:e,variant:t,...s},a)=>r.jsx(o.fC,{ref:a,className:(0,c.cn)(f({variant:t}),e),...s}));m.displayName=o.fC.displayName,i.forwardRef(({className:e,...t},s)=>r.jsx(o.aU,{ref:s,className:(0,c.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=o.aU.displayName;let x=i.forwardRef(({className:e,...t},s)=>r.jsx(o.x8,{ref:s,className:(0,c.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:r.jsx(d.Z,{className:"h-4 w-4"})}));x.displayName=o.x8.displayName;let p=i.forwardRef(({className:e,...t},s)=>r.jsx(o.Dx,{ref:s,className:(0,c.cn)("text-sm font-semibold",e),...t}));p.displayName=o.Dx.displayName;let g=i.forwardRef(({className:e,...t},s)=>r.jsx(o.dk,{ref:s,className:(0,c.cn)("text-sm opacity-90",e),...t}));g.displayName=o.dk.displayName;var v=s(56627);function b(){let{toasts:e}=(0,v.pm)();return(0,r.jsxs)(u,{children:[e.map(function({id:e,title:t,description:s,action:a,...n}){return(0,r.jsxs)(m,{...n,children:[(0,r.jsxs)("div",{className:"grid gap-1",children:[t&&r.jsx(p,{children:t}),s&&r.jsx(g,{children:s})]}),a,r.jsx(x,{})]},e)}),r.jsx(h,{})]})}var j=s(92876),y=s(74951),w=s(44976);function N({children:e}){let[t]=(0,i.useState)(()=>new y.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return r.jsx("html",{lang:"en",children:r.jsx("body",{className:n().className,children:r.jsx(w.aH,{client:t,children:(0,r.jsxs)(j.Ho,{children:[e,r.jsx(b,{})]})})})})}},92876:(e,t,s)=>{"use strict";s.d(t,{Ho:()=>o,aC:()=>l});var r=s(10326),a=s(17577),n=s(42357);let i=(0,a.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function o({children:e}){let[t,s]=(0,a.useState)(null),[o,l]=(0,a.useState)(null),[d,c]=(0,a.useState)(!0),u=async()=>{try{let e=await (0,n.Gg)();e?(s(e.user),l(e.session)):(s(null),l(null))}catch(e){s(null),l(null)}finally{c(!1)}};return r.jsx(i.Provider,{value:{user:t,session:o,loading:d,refetch:u},children:e})}function l(){return(0,a.useContext)(i)}},91664:(e,t,s)=>{"use strict";s.d(t,{z:()=>d});var r=s(10326),a=s(17577),n=s(34214),i=s(79360),o=s(51223);let l=(0,i.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),d=a.forwardRef(({className:e,variant:t,size:s,asChild:a=!1,...i},d)=>{let c=a?n.g7:"button";return r.jsx(c,{className:(0,o.cn)(l({variant:t,size:s,className:e})),ref:d,...i})});d.displayName="Button"},56627:(e,t,s)=>{"use strict";s.d(t,{pm:()=>h});var r=s(17577);let a=0,n=new Map,i=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?i(s):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=o(d,e),l.forEach(e=>{e(d)})}function u({...e}){let t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||s()}}}),{id:t,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function h(){let[e,t]=r.useState(d);return r.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},32082:(e,t,s)=>{"use strict";s.d(t,{a:()=>a});var r=s(92876);function a(){let{user:e,session:t,loading:s,refetch:a}=(0,r.aC)();return{user:e||null,session:t||null,isLoading:s,isAuthenticated:!!e,isSignedIn:!!e,isAdmin:e?.isAdmin||!1,refreshSession:a}}},42357:(e,t,s)=>{"use strict";s.d(t,{Gg:()=>i,w7:()=>n});let r="http://127.0.0.1:8000",a={async signUp(e,t,s){let a=await fetch(`${r}/api/v1/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:s})});if(!a.ok)throw Error((await a.json()).detail||"Registration failed");return a.json()},async signIn(e,t){let s=await fetch(`${r}/api/v1/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!s.ok)throw Error((await s.json()).detail||"Login failed");return s.json()},async signOut(){if(!(await fetch(`${r}/api/v1/auth/logout`,{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch(`${r}/api/v1/auth/session`,{credentials:"include"});if(!e.ok)return null;return e.json()}catch{return null}}};a.signUp,a.signIn;let n=a.signOut,i=a.getSession},51223:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var r=s(41135),a=s(31009);function n(...e){return(0,a.m6)((0,r.W)(e))}},22834:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\dashboard\layout.tsx#default`)},32029:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});let r=(0,s(68570).createProxy)(String.raw`E:\Autonomous AI Marketing Agency\phase-1-core-infra\frontend\src\app\layout.tsx#default`)},23824:()=>{}}; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/chunks/972.js b/phase-1-core-infra/frontend/.next/server/chunks/972.js new file mode 100644 index 0000000000000000000000000000000000000000..2cfddaff773facd180f9a41e17d6878fae3a4d6d --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/chunks/972.js @@ -0,0 +1,12 @@ +exports.id=972,exports.ids=[972],exports.modules={87070:(e,t,i)=>{"use strict";var r=i(98277);i.o(r,"NextResponse")&&i.d(t,{NextResponse:function(){return r.NextResponse}})},79925:e=>{"use strict";var t=Object.defineProperty,i=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,n={};function s(e){var t;let i=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),r=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===i.length?r:`${r}; ${i.join("; ")}`}function a(e){let t=new Map;for(let i of e.split(/; */)){if(!i)continue;let e=i.indexOf("=");if(-1===e){t.set(i,"true");continue}let[r,o]=[i.slice(0,e),i.slice(e+1)];try{t.set(r,decodeURIComponent(null!=o?o:"true"))}catch{}}return t}function l(e){var t,i;if(!e)return;let[[r,o],...n]=a(e),{domain:s,expires:l,httponly:c,maxage:h,path:p,samesite:b,secure:f,partitioned:m,priority:w}=Object.fromEntries(n.map(([e,t])=>[e.toLowerCase(),t]));return function(e){let t={};for(let i in e)e[i]&&(t[i]=e[i]);return t}({name:r,value:decodeURIComponent(o),domain:s,...l&&{expires:new Date(l)},...c&&{httpOnly:!0},..."string"==typeof h&&{maxAge:Number(h)},path:p,...b&&{sameSite:u.includes(t=(t=b).toLowerCase())?t:void 0},...f&&{secure:!0},...w&&{priority:d.includes(i=(i=w).toLowerCase())?i:void 0},...m&&{partitioned:!0}})}((e,i)=>{for(var r in i)t(e,r,{get:i[r],enumerable:!0})})(n,{RequestCookies:()=>c,ResponseCookies:()=>h,parseCookie:()=>a,parseSetCookie:()=>l,stringifyCookie:()=>s}),e.exports=((e,n,s,a)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let s of r(n))o.call(e,s)||void 0===s||t(e,s,{get:()=>n[s],enumerable:!(a=i(n,s))||a.enumerable});return e})(t({},"__esModule",{value:!0}),n);var u=["strict","lax","none"],d=["low","medium","high"],c=class{constructor(e){this._parsed=new Map,this._headers=e;let t=e.get("cookie");if(t)for(let[e,i]of a(t))this._parsed.set(e,{name:e,value:i})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let i=Array.from(this._parsed);if(!e.length)return i.map(([e,t])=>t);let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return i.filter(([e])=>e===r).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,i]=1===e.length?[e[0].name,e[0].value]:e,r=this._parsed;return r.set(t,{name:t,value:i}),this._headers.set("cookie",Array.from(r).map(([e,t])=>s(t)).join("; ")),this}delete(e){let t=this._parsed,i=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>s(t)).join("; ")),i}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},h=class{constructor(e){var t,i,r;this._parsed=new Map,this._headers=e;let o=null!=(r=null!=(i=null==(t=e.getSetCookie)?void 0:t.call(e))?i:e.get("set-cookie"))?r:[];for(let e of Array.isArray(o)?o:function(e){if(!e)return[];var t,i,r,o,n,s=[],a=0;function l(){for(;a=e.length)&&s.push(e.substring(t,e.length))}return s}(o)){let t=l(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let i=Array.from(this._parsed.values());if(!e.length)return i;let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return i.filter(e=>e.name===r)}has(e){return this._parsed.has(e)}set(...e){let[t,i,r]=1===e.length?[e[0].name,e[0].value,e[0]]:e,o=this._parsed;return o.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:i,...r})),function(e,t){for(let[,i]of(t.delete("set-cookie"),e)){let e=s(i);t.append("set-cookie",e)}}(o,this._headers),this}delete(...e){let[t,i,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0].path,e[0].domain];return this.set({name:t,path:i,domain:r,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(s).join("; ")}}},18346:(e,t,i)=>{var r;(()=>{var o={226:function(o,n){!function(s,a){"use strict";var l="function",u="undefined",d="object",c="string",h="major",p="model",b="name",f="type",m="vendor",w="version",g="architecture",v="console",x="mobile",y="tablet",P="smarttv",k="wearable",_="embedded",j="Amazon",O="Apple",S="ASUS",R="BlackBerry",A="Browser",L="Chrome",C="Firefox",N="Google",U="Huawei",q="Microsoft",T="Motorola",E="Opera",I="Samsung",M="Sharp",z="Sony",$="Xiaomi",H="Zebra",D="Facebook",B="Chromium OS",W="Mac OS",G=function(e,t){var i={};for(var r in e)t[r]&&t[r].length%2==0?i[r]=t[r].concat(e[r]):i[r]=e[r];return i},F=function(e){for(var t={},i=0;i0?2===n.length?typeof n[1]==l?this[n[0]]=n[1].call(this,u):this[n[0]]=n[1]:3===n.length?typeof n[1]!==l||n[1].exec&&n[1].test?this[n[0]]=u?u.replace(n[1],n[2]):void 0:this[n[0]]=u?n[1].call(this,u,n[2]):void 0:4===n.length&&(this[n[0]]=u?n[3].call(this,u.replace(n[1],n[2])):void 0):this[n]=u||a;c+=2}},Q=function(e,t){for(var i in t)if(typeof t[i]===d&&t[i].length>0){for(var r=0;r2&&(e[p]="iPad",e[f]=y),e},this.getEngine=function(){var e={};return e[b]=a,e[w]=a,J.call(e,r,n.engine),e},this.getOS=function(){var e={};return e[b]=a,e[w]=a,J.call(e,r,n.os),v&&!e[b]&&o&&"Unknown"!=o.platform&&(e[b]=o.platform.replace(/chrome os/i,B).replace(/macos/i,W)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return r},this.setUA=function(e){return r=typeof e===c&&e.length>350?Z(e,350):e,this},this.setUA(r),this};ee.VERSION="1.0.35",ee.BROWSER=F([b,w,h]),ee.CPU=F([g]),ee.DEVICE=F([p,m,f,v,x,P,y,k,_]),ee.ENGINE=ee.OS=F([b,w]),typeof n!==u?(o.exports&&(n=o.exports=ee),n.UAParser=ee):i.amdO?void 0!==(r=(function(){return ee}).call(t,i,t,e))&&(e.exports=r):typeof s!==u&&(s.UAParser=ee);var et=typeof s!==u&&(s.jQuery||s.Zepto);if(et&&!et.ua){var ei=new ee;et.ua=ei.getResult(),et.ua.get=function(){return ei.getUA()},et.ua.set=function(e){ei.setUA(e);var t=ei.getResult();for(var i in t)et.ua[i]=t[i]}}}("object"==typeof window?window:this)}},n={};function s(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}},r=!0;try{o[e].call(i.exports,i,i.exports,s),r=!1}finally{r&&delete n[e]}return i.exports}s.ab=__dirname+"/";var a=s(226);e.exports=a})()},49303:(e,t,i)=>{"use strict";e.exports=i(30517)},44:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{PageSignatureError:function(){return i},RemovedPageError:function(){return r},RemovedUAError:function(){return o}});class i extends Error{constructor({page:e}){super(`The middleware "${e}" accepts an async API directly with the form: + + export function middleware(request, event) { + return NextResponse.redirect('/new-location') + } + + Read more: https://nextjs.org/docs/messages/middleware-new-signature + `)}}class r extends Error{constructor(){super(`The request.page has been deprecated in favour of \`URLPattern\`. + Read more: https://nextjs.org/docs/messages/middleware-request-page + `)}}class o extends Error{constructor(){super(`The request.ua has been removed in favour of \`userAgent\` function. + Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent + `)}}},98277:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{ImageResponse:function(){return r.ImageResponse},NextRequest:function(){return o.NextRequest},NextResponse:function(){return n.NextResponse},URLPattern:function(){return a.URLPattern},userAgent:function(){return s.userAgent},userAgentFromString:function(){return s.userAgentFromString}});let r=i(10006),o=i(39745),n=i(59211),s=i(78471),a=i(72433)},79519:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NextURL",{enumerable:!0,get:function(){return d}});let r=i(23777),o=i(93817),n=i(61675),s=i(6111),a=/(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)/;function l(e,t){return new URL(String(e).replace(a,"localhost"),t&&String(t).replace(a,"localhost"))}let u=Symbol("NextURLInternal");class d{constructor(e,t,i){let r,o;"object"==typeof t&&"pathname"in t||"string"==typeof t?(r=t,o=i||{}):o=i||t||{},this[u]={url:l(e,r??o.base),options:o,basePath:""},this.analyze()}analyze(){var e,t,i,o,a;let l=(0,s.getNextPathnameInfo)(this[u].url.pathname,{nextConfig:this[u].options.nextConfig,parseData:!0,i18nProvider:this[u].options.i18nProvider}),d=(0,n.getHostname)(this[u].url,this[u].options.headers);this[u].domainLocale=this[u].options.i18nProvider?this[u].options.i18nProvider.detectDomainLocale(d):(0,r.detectDomainLocale)(null==(t=this[u].options.nextConfig)?void 0:null==(e=t.i18n)?void 0:e.domains,d);let c=(null==(i=this[u].domainLocale)?void 0:i.defaultLocale)||(null==(a=this[u].options.nextConfig)?void 0:null==(o=a.i18n)?void 0:o.defaultLocale);this[u].url.pathname=l.pathname,this[u].defaultLocale=c,this[u].basePath=l.basePath??"",this[u].buildId=l.buildId,this[u].locale=l.locale??c,this[u].trailingSlash=l.trailingSlash}formatPathname(){return(0,o.formatNextPathnameInfo)({basePath:this[u].basePath,buildId:this[u].buildId,defaultLocale:this[u].options.forceLocale?void 0:this[u].defaultLocale,locale:this[u].locale,pathname:this[u].url.pathname,trailingSlash:this[u].trailingSlash})}formatSearch(){return this[u].url.search}get buildId(){return this[u].buildId}set buildId(e){this[u].buildId=e}get locale(){return this[u].locale??""}set locale(e){var t,i;if(!this[u].locale||!(null==(i=this[u].options.nextConfig)?void 0:null==(t=i.i18n)?void 0:t.locales.includes(e)))throw TypeError(`The NextURL configuration includes no locale "${e}"`);this[u].locale=e}get defaultLocale(){return this[u].defaultLocale}get domainLocale(){return this[u].domainLocale}get searchParams(){return this[u].url.searchParams}get host(){return this[u].url.host}set host(e){this[u].url.host=e}get hostname(){return this[u].url.hostname}set hostname(e){this[u].url.hostname=e}get port(){return this[u].url.port}set port(e){this[u].url.port=e}get protocol(){return this[u].url.protocol}set protocol(e){this[u].url.protocol=e}get href(){let e=this.formatPathname(),t=this.formatSearch();return`${this.protocol}//${this.host}${e}${t}${this.hash}`}set href(e){this[u].url=l(e),this.analyze()}get origin(){return this[u].url.origin}get pathname(){return this[u].url.pathname}set pathname(e){this[u].url.pathname=e}get hash(){return this[u].url.hash}set hash(e){this[u].url.hash=e}get search(){return this[u].url.search}set search(e){this[u].url.search=e}get password(){return this[u].url.password}set password(e){this[u].url.password=e}get username(){return this[u].url.username}set username(e){this[u].url.username=e}get basePath(){return this[u].basePath}set basePath(e){this[u].basePath=e.startsWith("/")?e:`/${e}`}toString(){return this.href}toJSON(){return this.href}[Symbol.for("edge-runtime.inspect.custom")](){return{href:this.href,origin:this.origin,protocol:this.protocol,username:this.username,password:this.password,host:this.host,hostname:this.hostname,port:this.port,pathname:this.pathname,search:this.search,searchParams:this.searchParams,hash:this.hash}}clone(){return new d(String(this),this[u].options)}}},92044:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{RequestCookies:function(){return r.RequestCookies},ResponseCookies:function(){return r.ResponseCookies},stringifyCookie:function(){return r.stringifyCookie}});let r=i(79925)},10006:(e,t)=>{"use strict";function i(){throw Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead')}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ImageResponse",{enumerable:!0,get:function(){return i}})},39745:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{INTERNALS:function(){return a},NextRequest:function(){return l}});let r=i(79519),o=i(17636),n=i(44),s=i(92044),a=Symbol("internal request");class l extends Request{constructor(e,t={}){let i="string"!=typeof e&&"url"in e?e.url:String(e);(0,o.validateURL)(i),e instanceof Request?super(e,t):super(i,t);let n=new r.NextURL(i,{headers:(0,o.toNodeOutgoingHttpHeaders)(this.headers),nextConfig:t.nextConfig});this[a]={cookies:new s.RequestCookies(this.headers),geo:t.geo||{},ip:t.ip,nextUrl:n,url:n.toString()}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,geo:this.geo,ip:this.ip,nextUrl:this.nextUrl,url:this.url,bodyUsed:this.bodyUsed,cache:this.cache,credentials:this.credentials,destination:this.destination,headers:Object.fromEntries(this.headers),integrity:this.integrity,keepalive:this.keepalive,method:this.method,mode:this.mode,redirect:this.redirect,referrer:this.referrer,referrerPolicy:this.referrerPolicy,signal:this.signal}}get cookies(){return this[a].cookies}get geo(){return this[a].geo}get ip(){return this[a].ip}get nextUrl(){return this[a].nextUrl}get page(){throw new n.RemovedPageError}get ua(){throw new n.RemovedUAError}get url(){return this[a].url}}},59211:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NextResponse",{enumerable:!0,get:function(){return c}});let r=i(92044),o=i(79519),n=i(17636),s=i(38238),a=i(92044),l=Symbol("internal response"),u=new Set([301,302,303,307,308]);function d(e,t){var i;if(null==e?void 0:null==(i=e.request)?void 0:i.headers){if(!(e.request.headers instanceof Headers))throw Error("request.headers must be an instance of Headers");let i=[];for(let[r,o]of e.request.headers)t.set("x-middleware-request-"+r,o),i.push(r);t.set("x-middleware-override-headers",i.join(","))}}class c extends Response{constructor(e,t={}){super(e,t);let i=this.headers,u=new Proxy(new a.ResponseCookies(i),{get(e,o,n){switch(o){case"delete":case"set":return(...n)=>{let s=Reflect.apply(e[o],e,n),l=new Headers(i);return s instanceof a.ResponseCookies&&i.set("x-middleware-set-cookie",s.getAll().map(e=>(0,r.stringifyCookie)(e)).join(",")),d(t,l),s};default:return s.ReflectAdapter.get(e,o,n)}}});this[l]={cookies:u,url:t.url?new o.NextURL(t.url,{headers:(0,n.toNodeOutgoingHttpHeaders)(i),nextConfig:t.nextConfig}):void 0}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,url:this.url,body:this.body,bodyUsed:this.bodyUsed,headers:Object.fromEntries(this.headers),ok:this.ok,redirected:this.redirected,status:this.status,statusText:this.statusText,type:this.type}}get cookies(){return this[l].cookies}static json(e,t){let i=Response.json(e,t);return new c(i.body,i)}static redirect(e,t){let i="number"==typeof t?t:(null==t?void 0:t.status)??307;if(!u.has(i))throw RangeError('Failed to execute "redirect" on "response": Invalid status code');let r="object"==typeof t?t:{},o=new Headers(null==r?void 0:r.headers);return o.set("Location",(0,n.validateURL)(e)),new c(null,{...r,headers:o,status:i})}static rewrite(e,t){let i=new Headers(null==t?void 0:t.headers);return i.set("x-middleware-rewrite",(0,n.validateURL)(e)),d(t,i),new c(null,{...t,headers:i})}static next(e){let t=new Headers(null==e?void 0:e.headers);return t.set("x-middleware-next","1"),d(e,t),new c(null,{...e,headers:t})}}},72433:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"URLPattern",{enumerable:!0,get:function(){return i}});let i="undefined"==typeof URLPattern?void 0:URLPattern},78471:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{isBot:function(){return o},userAgent:function(){return s},userAgentFromString:function(){return n}});let r=function(e){return e&&e.__esModule?e:{default:e}}(i(18346));function o(e){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(e)}function n(e){return{...(0,r.default)(e),isBot:void 0!==e&&o(e)}}function s({headers:e}){return n(e.get("user-agent")||void 0)}},17636:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{fromNodeOutgoingHttpHeaders:function(){return o},normalizeNextQueryParam:function(){return l},splitCookiesString:function(){return n},toNodeOutgoingHttpHeaders:function(){return s},validateURL:function(){return a}});let r=i(11943);function o(e){let t=new Headers;for(let[i,r]of Object.entries(e))for(let e of Array.isArray(r)?r:[r])void 0!==e&&("number"==typeof e&&(e=e.toString()),t.append(i,e));return t}function n(e){var t,i,r,o,n,s=[],a=0;function l(){for(;a=e.length)&&s.push(e.substring(t,e.length))}return s}function s(e){let t={},i=[];if(e)for(let[r,o]of e.entries())"set-cookie"===r.toLowerCase()?(i.push(...n(o)),t[r]=1===i.length?i[0]:i):t[r]=o;return t}function a(e){try{return String(new URL(String(e)))}catch(t){throw Error(`URL is malformed "${String(e)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,{cause:t})}}function l(e,t){for(let i of[r.NEXT_QUERY_PARAM_PREFIX,r.NEXT_INTERCEPTION_MARKER_PREFIX])e!==i&&e.startsWith(i)&&t(e.substring(i.length))}},61675:(e,t)=>{"use strict";function i(e,t){let i;if((null==t?void 0:t.host)&&!Array.isArray(t.host))i=t.host.toString().split(":",1)[0];else{if(!e.hostname)return;i=e.hostname}return i.toLowerCase()}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getHostname",{enumerable:!0,get:function(){return i}})},23777:(e,t)=>{"use strict";function i(e,t,i){if(e)for(let n of(i&&(i=i.toLowerCase()),e)){var r,o;if(t===(null==(r=n.domain)?void 0:r.split(":",1)[0].toLowerCase())||i===n.defaultLocale.toLowerCase()||(null==(o=n.locales)?void 0:o.some(e=>e.toLowerCase()===i)))return n}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"detectDomainLocale",{enumerable:!0,get:function(){return i}})},95014:(e,t)=>{"use strict";function i(e,t){let i;let r=e.split("/");return(t||[]).some(t=>!!r[1]&&r[1].toLowerCase()===t.toLowerCase()&&(i=t,r.splice(1,1),e=r.join("/")||"/",!0)),{pathname:e,detectedLocale:i}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizeLocalePath",{enumerable:!0,get:function(){return i}})},80225:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addLocale",{enumerable:!0,get:function(){return n}});let r=i(91041),o=i(84329);function n(e,t,i,n){if(!t||t===i)return e;let s=e.toLowerCase();return!n&&((0,o.pathHasPrefix)(s,"/api")||(0,o.pathHasPrefix)(s,"/"+t.toLowerCase()))?e:(0,r.addPathPrefix)(e,"/"+t)}},91041:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let r=i(81693);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:i,query:o,hash:n}=(0,r.parsePath)(e);return""+t+i+o+n}},98166:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathSuffix",{enumerable:!0,get:function(){return o}});let r=i(81693);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:i,query:o,hash:n}=(0,r.parsePath)(e);return""+i+t+o+n}},93817:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"formatNextPathnameInfo",{enumerable:!0,get:function(){return a}});let r=i(37847),o=i(91041),n=i(98166),s=i(80225);function a(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,r.removeTrailingSlash)(t)),e.buildId&&(t=(0,n.addPathSuffix)((0,o.addPathPrefix)(t,"/_next/data/"+e.buildId),"/"===e.pathname?"index.json":".json")),t=(0,o.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,n.addPathSuffix)(t,"/"):(0,r.removeTrailingSlash)(t)}},6111:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let r=i(95014),o=i(29529),n=i(84329);function s(e,t){var i,s;let{basePath:a,i18n:l,trailingSlash:u}=null!=(i=t.nextConfig)?i:{},d={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):u};a&&(0,n.pathHasPrefix)(d.pathname,a)&&(d.pathname=(0,o.removePathPrefix)(d.pathname,a),d.basePath=a);let c=d.pathname;if(d.pathname.startsWith("/_next/data/")&&d.pathname.endsWith(".json")){let e=d.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/"),i=e[0];d.buildId=i,c="index"!==e[1]?"/"+e.slice(1).join("/"):"/",!0===t.parseData&&(d.pathname=c)}if(l){let e=t.i18nProvider?t.i18nProvider.analyze(d.pathname):(0,r.normalizeLocalePath)(d.pathname,l.locales);d.locale=e.detectedLocale,d.pathname=null!=(s=e.pathname)?s:d.pathname,!e.detectedLocale&&d.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(c):(0,r.normalizeLocalePath)(c,l.locales)).detectedLocale&&(d.locale=e.detectedLocale)}return d}},81693:(e,t)=>{"use strict";function i(e){let t=e.indexOf("#"),i=e.indexOf("?"),r=i>-1&&(t<0||i-1?{pathname:e.substring(0,r?i:t),query:r?e.substring(i,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return i}})},84329:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let r=i(81693);function o(e,t){if("string"!=typeof e)return!1;let{pathname:i}=(0,r.parsePath)(e);return i===t||i.startsWith(t+"/")}},29529:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removePathPrefix",{enumerable:!0,get:function(){return o}});let r=i(84329);function o(e,t){if(!(0,r.pathHasPrefix)(e,t))return e;let i=e.slice(t.length);return i.startsWith("/")?i:"/"+i}},37847:(e,t)=>{"use strict";function i(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return i}})}}; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/chunks/font-manifest.json b/phase-1-core-infra/frontend/.next/server/chunks/font-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..0637a088a01e8ddab3bf3fa98dbe804cbde1a0dc --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/chunks/font-manifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/edge-runtime-webpack.js b/phase-1-core-infra/frontend/.next/server/edge-runtime-webpack.js new file mode 100644 index 0000000000000000000000000000000000000000..e3d654c5998f047f4e2b211a675eeb4073b2f6a9 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/edge-runtime-webpack.js @@ -0,0 +1,2 @@ +(()=>{"use strict";var e={},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var i=r[o]={exports:{}},l=!0;try{e[o](i,i.exports,t),l=!1}finally{l&&delete r[o]}return i.exports}t.m=e,t.amdO={},(()=>{var e=[];t.O=(r,o,n,i)=>{if(o){i=i||0;for(var l=e.length;l>0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[o,n,i];return}for(var a=1/0,l=0;l=i&&Object.keys(t.O).every(e=>t.O[e](o[u]))?o.splice(u--,1):(f=!1,i{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={993:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,i,[l,a,f]=o,u=0;if(l.some(r=>0!==e[r])){for(n in a)t.o(a,n)&&(t.m[n]=a[n]);if(f)var s=f(t)}for(r&&r(o);u {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t993: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","threw","__webpack_modules__","m","amdO","deferred","O","result","chunkIds","fn","priority","i","length","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","d","definition","o","defineProperty","enumerable","get","g","globalThis","e","window","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self","forEach","bind","push"],"sourceRoot":""} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/font-manifest.json b/phase-1-core-infra/frontend/.next/server/font-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..0637a088a01e8ddab3bf3fa98dbe804cbde1a0dc --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/font-manifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/functions-config-manifest.json b/phase-1-core-infra/frontend/.next/server/functions-config-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..996cd7831b5dd5b7acf853be46773bc3694625c5 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/functions-config-manifest.json @@ -0,0 +1 @@ +{"version":1,"functions":{}} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/interception-route-rewrite-manifest.js b/phase-1-core-infra/frontend/.next/server/interception-route-rewrite-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..24f77ba74f79609fc4cf4cc495a629f822a5fd0d --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/interception-route-rewrite-manifest.js @@ -0,0 +1 @@ +self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]"; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/middleware-build-manifest.js b/phase-1-core-infra/frontend/.next/server/middleware-build-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..3716ec6d8dbe4f6c2fd1f87a5eb0ed57abee18f8 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/middleware-build-manifest.js @@ -0,0 +1 @@ +self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-02761f80ef09b837.js","static/chunks/fd9d1056-e12ba778587e956e.js","static/chunks/117-b80dbde68ec4014e.js","static/chunks/main-app-fb7ccb699bc25929.js"],pages:{"/_app":["static/chunks/webpack-02761f80ef09b837.js","static/chunks/framework-b370f160bb96059c.js","static/chunks/main-51c785e6adf07474.js","static/chunks/pages/_app-15e2daefa259f0b5.js"],"/_error":["static/chunks/webpack-02761f80ef09b837.js","static/chunks/framework-b370f160bb96059c.js","static/chunks/main-51c785e6adf07474.js","static/chunks/pages/_error-28b803cb2479b966.js"]},ampFirstPages:[]},self.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"]; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/middleware-manifest.json b/phase-1-core-infra/frontend/.next/server/middleware-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..594d69c547e0a2bc6f412b4281d9c7073651ca76 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/middleware-manifest.json @@ -0,0 +1,32 @@ +{ + "version": 3, + "middleware": { + "/": { + "files": [ + "server/edge-runtime-webpack.js", + "server/src/middleware.js" + ], + "name": "src/middleware", + "page": "/", + "matchers": [ + { + "regexp": "^(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/((?!_next\\/static|_next\\/image|favicon.ico|public).*))(.json)?[\\/#\\?]?$", + "originalSource": "/((?!_next/static|_next/image|favicon.ico|public).*)" + } + ], + "wasm": [], + "assets": [], + "env": { + "__NEXT_BUILD_ID": "_ZCPiTZXfhnfeDdShwrwt", + "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "Y+N10TXKgD69dAecxzYwYyuE+lT8ElRHb40XS/Cu9LY=", + "__NEXT_PREVIEW_MODE_ID": "27ea2c7e21cdd121fd35ba17d6cbea16", + "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "88d6261316c31384ca6ace121460d82a8913319eadf5a548f60bd7cde8bf69fb", + "__NEXT_PREVIEW_MODE_SIGNING_KEY": "89bf08b16f28c0ca1d3f3e5f64d655f5b122f6413431f631ae983a1208ccd02c" + } + } + }, + "functions": {}, + "sortedMiddleware": [ + "/" + ] +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/middleware-react-loadable-manifest.js b/phase-1-core-infra/frontend/.next/server/middleware-react-loadable-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..170749eca8a4c612cc6ffafa73398480c02d3679 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/middleware-react-loadable-manifest.js @@ -0,0 +1 @@ +self.__REACT_LOADABLE_MANIFEST="{}"; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/next-font-manifest.js b/phase-1-core-infra/frontend/.next/server/next-font-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..8267a5082ade0f7f80b9fe375f819ea4e8db14b1 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/next-font-manifest.js @@ -0,0 +1 @@ +self.__NEXT_FONT_MANIFEST='{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}'; \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/next-font-manifest.json b/phase-1-core-infra/frontend/.next/server/next-font-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..25f78e72b334089404d8a0d1203a7443cd0f3f69 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/next-font-manifest.json @@ -0,0 +1 @@ +{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages-manifest.json b/phase-1-core-infra/frontend/.next/server/pages-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..a679766a2aa2c4cbe0159932f04880f2fbb488c3 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages-manifest.json @@ -0,0 +1,5 @@ +{ + "/_app": "pages/_app.js", + "/_error": "pages/_error.js", + "/_document": "pages/_document.js" +} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages/404.html b/phase-1-core-infra/frontend/.next/server/pages/404.html new file mode 100644 index 0000000000000000000000000000000000000000..420bb1e1828307ac253e14797997771ae42fa1c2 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages/404.html @@ -0,0 +1 @@ +404: This page could not be found.

                                    404

                                    This page could not be found.

                                      \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages/500.html b/phase-1-core-infra/frontend/.next/server/pages/500.html new file mode 100644 index 0000000000000000000000000000000000000000..6cb896c13201c010ca7fa21397565212e4534bb7 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages/500.html @@ -0,0 +1 @@ +500: Internal Server Error

                                      500

                                      Internal Server Error.

                                      \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages/_app.js b/phase-1-core-infra/frontend/.next/server/pages/_app.js new file mode 100644 index 0000000000000000000000000000000000000000..e01665692840fa23ecc85ae972f75743d58ccc95 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages/_app.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=888,e.ids=[888],e.modules={48141:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(50167),o=r(20997),i=n._(r(16689)),u=r(45782);async function s(e){let{Component:t,ctx:r}=e;return{pageProps:await (0,u.loadGetInitialProps)(t,r)}}class a extends i.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,o.jsx)(e,{...t})}}a.origGetInitialProps=s,a.getInitialProps=s,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},45782:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return g},MiddlewareNotFoundError:function(){return E},MissingStaticPage:function(){return y},NormalizeError:function(){return m},PageNotFoundError:function(){return P},SP:function(){return d},ST:function(){return p},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return a},getLocationOrigin:function(){return u},getURL:function(){return s},isAbsoluteUrl:function(){return i},isResSent:function(){return c},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return l},stringifyError:function(){return x}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),i=0;io.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function s(){let{href:e}=window.location,t=u();return e.substring(t.length)}function a(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function c(e){return e.finished||e.headersSent}function l(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function f(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&c(r))return n;if(!n)throw Error('"'+a(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.');return n}let d="undefined"!=typeof performance,p=d&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class m extends Error{}class P extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class y extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class E extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function x(e){return JSON.stringify({message:e.message,stack:e.stack})}},16689:e=>{e.exports=require("react")},20997:e=>{e.exports=require("react/jsx-runtime")},50167:(e,t)=>{t._=t._interop_require_default=function(e){return e&&e.__esModule?e:{default:e}}}};var t=require("../webpack-runtime.js");t.C(e);var r=t(t.s=48141);module.exports=r})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages/_app.js.nft.json b/phase-1-core-infra/frontend/.next/server/pages/_app.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..90a7719050b7a7debc6b022fe5515f51687865cc --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages/_app.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../webpack-runtime.js","../../../package.json","../../../node_modules/next/dist/pages/_app.js"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages/_document.js b/phase-1-core-infra/frontend/.next/server/pages/_document.js new file mode 100644 index 0000000000000000000000000000000000000000..49e0fe3d33a1fa1cbfdaf463ce46526a24d86642 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages/_document.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=660,e.ids=[660],e.modules={62785:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},16689:e=>{e.exports=require("react")},20997:e=>{e.exports=require("react/jsx-runtime")},55315:e=>{e.exports=require("path")}};var r=require("../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[682],()=>s(61682));module.exports=t})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages/_document.js.nft.json b/phase-1-core-infra/frontend/.next/server/pages/_document.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..e7f7724974cfcbccc00491405a33a5a118aac7c7 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages/_document.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../webpack-runtime.js","../chunks/682.js","../../../package.json","../../../node_modules/next/dist/pages/_document.js"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages/_error.js b/phase-1-core-infra/frontend/.next/server/pages/_error.js new file mode 100644 index 0000000000000000000000000000000000000000..7cb0ba99af240e4eda8539d34c9f870867ee3b7e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages/_error.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=820,e.ids=[820,660],e.modules={1323:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},46051:(e,t,r)=>{r.r(t),r.d(t,{config:()=>h,default:()=>p,getServerSideProps:()=>g,getStaticPaths:()=>f,getStaticProps:()=>c,reportWebVitals:()=>y,routeModule:()=>v,unstable_getServerProps:()=>P,unstable_getServerSideProps:()=>x,unstable_getStaticParams:()=>_,unstable_getStaticPaths:()=>m,unstable_getStaticProps:()=>b});var n=r(87093),o=r(35244),l=r(1323),a=r(61682),i=r.n(a),u=r(48141),d=r.n(u),s=r(18529);let p=(0,l.l)(s,"default"),c=(0,l.l)(s,"getStaticProps"),f=(0,l.l)(s,"getStaticPaths"),g=(0,l.l)(s,"getServerSideProps"),h=(0,l.l)(s,"config"),y=(0,l.l)(s,"reportWebVitals"),b=(0,l.l)(s,"unstable_getStaticProps"),m=(0,l.l)(s,"unstable_getStaticPaths"),_=(0,l.l)(s,"unstable_getStaticParams"),P=(0,l.l)(s,"unstable_getServerProps"),x=(0,l.l)(s,"unstable_getServerSideProps"),v=new n.PagesRouteModule({definition:{kind:o.x.PAGES,page:"/_error",pathname:"/_error",bundlePath:"",filename:""},components:{App:d(),Document:i()},userland:s})},48141:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let n=r(50167),o=r(20997),l=n._(r(16689)),a=r(45782);async function i(e){let{Component:t,ctx:r}=e;return{pageProps:await (0,a.loadGetInitialProps)(t,r)}}class u extends l.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,o.jsx)(e,{...t})}}u.origGetInitialProps=i,u.getInitialProps=i,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},18529:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let n=r(50167),o=r(20997),l=n._(r(16689)),a=n._(r(50494)),i={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function u(e){let{res:t,err:r}=e;return{statusCode:t&&t.statusCode?t.statusCode:r?r.statusCode:404}}let d={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{lineHeight:"48px"},h1:{display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h2:{fontSize:14,fontWeight:400,lineHeight:"28px"},wrap:{display:"inline-block"}};class s extends l.default.Component{render(){let{statusCode:e,withDarkMode:t=!0}=this.props,r=this.props.title||i[e]||"An unexpected error has occurred";return(0,o.jsxs)("div",{style:d.error,children:[(0,o.jsx)(a.default,{children:(0,o.jsx)("title",{children:e?e+": "+r:"Application error: a client-side exception has occurred"})}),(0,o.jsxs)("div",{style:d.desc,children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}"+(t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":"")}}),e?(0,o.jsx)("h1",{className:"next-error-h1",style:d.h1,children:e}):null,(0,o.jsx)("div",{style:d.wrap,children:(0,o.jsxs)("h2",{style:d.h2,children:[this.props.title||e?r:(0,o.jsx)(o.Fragment,{children:"Application error: a client-side exception has occurred (see the browser console for more information)"}),"."]})})]})]})}}s.displayName="ErrorPage",s.getInitialProps=u,s.origGetInitialProps=u,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},98579:(e,t)=>{function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},50494:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return h},defaultHead:function(){return p}});let n=r(50167),o=r(28760),l=r(20997),a=o._(r(16689)),i=n._(r(3657)),u=r(98039),d=r(41988),s=r(98579);function p(e){void 0===e&&(e=!1);let t=[(0,l.jsx)("meta",{charSet:"utf-8"})];return e||t.push((0,l.jsx)("meta",{name:"viewport",content:"width=device-width"})),t}function c(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===a.default.Fragment?e.concat(a.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(79784);let f=["name","httpEquiv","charSet","itemProp"];function g(e,t){let{inAmpMode:r}=t;return e.reduce(c,[]).reverse().concat(p(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return o=>{let l=!0,a=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){a=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?l=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?l=!1:t.add(o.type);break;case"meta":for(let e=0,t=f.length;e{let n=e.key||t;if(!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,a.default.cloneElement(e,t)}return a.default.cloneElement(e,{key:n})})}let h=function(e){let{children:t}=e,r=(0,a.useContext)(u.AmpStateContext),n=(0,a.useContext)(d.HeadManagerContext);return(0,l.jsx)(i.default,{reduceComponentsToState:g,headManager:n,inAmpMode:(0,s.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3657:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(16689),o=()=>{},l=()=>{};function a(e){var t;let{headManager:r,reduceComponentsToState:a}=e;function i(){if(r&&r.mountedInstances){let t=n.Children.toArray(Array.from(r.mountedInstances).filter(Boolean));r.updateHead(a(t,e))}}return null==r||null==(t=r.mountedInstances)||t.add(e.children),i(),o(()=>{var t;return null==r||null==(t=r.mountedInstances)||t.add(e.children),()=>{var t;null==r||null==(t=r.mountedInstances)||t.delete(e.children)}}),o(()=>(r&&(r._pendingUpdate=i),()=>{r&&(r._pendingUpdate=i)})),l(()=>(r&&r._pendingUpdate&&(r._pendingUpdate(),r._pendingUpdate=null),()=>{r&&r._pendingUpdate&&(r._pendingUpdate(),r._pendingUpdate=null)})),null}},79784:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},35244:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},98039:(e,t,r)=>{e.exports=r(87093).vendored.contexts.AmpContext},41988:(e,t,r)=>{e.exports=r(87093).vendored.contexts.HeadManagerContext},62785:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},16689:e=>{e.exports=require("react")},20997:e=>{e.exports=require("react/jsx-runtime")},55315:e=>{e.exports=require("path")},28760:(e,t)=>{function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}t._=t._interop_require_wildcard=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=l?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(o,a,i):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}}};var t=require("../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[682],()=>r(46051));module.exports=n})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/pages/_error.js.nft.json b/phase-1-core-infra/frontend/.next/server/pages/_error.js.nft.json new file mode 100644 index 0000000000000000000000000000000000000000..367bcb13ae470166cc4ff924dd3ad009b4dbc59b --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/pages/_error.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../webpack-runtime.js","../chunks/682.js"]} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/server-reference-manifest.js b/phase-1-core-infra/frontend/.next/server/server-reference-manifest.js new file mode 100644 index 0000000000000000000000000000000000000000..3ca5dc5556d80534df8ddd6f7b5b17cc922d54d0 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/server-reference-manifest.js @@ -0,0 +1 @@ +self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}" \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/server-reference-manifest.json b/phase-1-core-infra/frontend/.next/server/server-reference-manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..78add6cdaac53babeb56233377676f3dc756a85b --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/server-reference-manifest.json @@ -0,0 +1 @@ +{"node":{},"edge":{},"encryptionKey":"Y+N10TXKgD69dAecxzYwYyuE+lT8ElRHb40XS/Cu9LY="} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/src/middleware.js b/phase-1-core-infra/frontend/.next/server/src/middleware.js new file mode 100644 index 0000000000000000000000000000000000000000..56835434884969b1a77be915d8974cc7e0ca5f58 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/src/middleware.js @@ -0,0 +1,14 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[727],{67:e=>{"use strict";e.exports=require("node:async_hooks")},195:e=>{"use strict";e.exports=require("node:buffer")},733:(e,t,r)=>{"use strict";let n;r.r(t),r.d(t,{default:()=>eW});var i,a,o,s,l,u,d,c,p,g,h,f,b={};async function m(){let e="_ENTRIES"in globalThis&&_ENTRIES.middleware_instrumentation&&(await _ENTRIES.middleware_instrumentation).register;if(e)try{await e()}catch(e){throw e.message=`An error occurred while loading instrumentation hook: ${e.message}`,e}}r.r(b),r.d(b,{config:()=>eG,middleware:()=>e$});let v=null;function w(){return v||(v=m()),v}function _(e){return`The edge runtime does not support Node.js '${e}' module. +Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`}process!==r.g.process&&(process.env=r.g.process.env,r.g.process=process),Object.defineProperty(globalThis,"__import_unsupported",{value:function(e){let t=new Proxy(function(){},{get(t,r){if("then"===r)return{};throw Error(_(e))},construct(){throw Error(_(e))},apply(r,n,i){if("function"==typeof i[0])return i[0](t);throw Error(_(e))}});return new Proxy({},{get:()=>t})},enumerable:!1,configurable:!1}),w();class y extends Error{constructor({page:e}){super(`The middleware "${e}" accepts an async API directly with the form: + + export function middleware(request, event) { + return NextResponse.redirect('/new-location') + } + + Read more: https://nextjs.org/docs/messages/middleware-new-signature + `)}}class x extends Error{constructor(){super(`The request.page has been deprecated in favour of \`URLPattern\`. + Read more: https://nextjs.org/docs/messages/middleware-request-page + `)}}class S extends Error{constructor(){super(`The request.ua has been removed in favour of \`userAgent\` function. + Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent + `)}}let P={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",api:"api",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route",appRouteHandler:"app-route-handler"};function O(e){var t,r,n,i,a,o=[],s=0;function l(){for(;s=e.length)&&o.push(e.substring(t,e.length))}return o}function N(e){let t={},r=[];if(e)for(let[n,i]of e.entries())"set-cookie"===n.toLowerCase()?(r.push(...O(i)),t[n]=1===r.length?r[0]:r):t[n]=i;return t}function R(e){try{return String(new URL(String(e)))}catch(t){throw Error(`URL is malformed "${String(e)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,{cause:t})}}({...P,GROUP:{serverOnly:[P.reactServerComponents,P.actionBrowser,P.appMetadataRoute,P.appRouteHandler,P.instrument],clientOnly:[P.serverSideRendering,P.appPagesBrowser],nonClientServerTarget:[P.middleware,P.api],app:[P.reactServerComponents,P.actionBrowser,P.appMetadataRoute,P.appRouteHandler,P.serverSideRendering,P.appPagesBrowser,P.shared,P.instrument]}});let T=Symbol("response"),C=Symbol("passThrough"),E=Symbol("waitUntil");class M{constructor(e){this[E]=[],this[C]=!1}respondWith(e){this[T]||(this[T]=Promise.resolve(e))}passThroughOnException(){this[C]=!0}waitUntil(e){this[E].push(e)}}class I extends M{constructor(e){super(e.request),this.sourcePage=e.page}get request(){throw new y({page:this.sourcePage})}respondWith(){throw new y({page:this.sourcePage})}}function A(e){return e.replace(/\/$/,"")||"/"}function L(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}function k(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:n,hash:i}=L(e);return""+t+r+n+i}function j(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:n,hash:i}=L(e);return""+r+t+n+i}function D(e,t){if("string"!=typeof e)return!1;let{pathname:r}=L(e);return r===t||r.startsWith(t+"/")}function V(e,t){let r;let n=e.split("/");return(t||[]).some(t=>!!n[1]&&n[1].toLowerCase()===t.toLowerCase()&&(r=t,n.splice(1,1),e=n.join("/")||"/",!0)),{pathname:e,detectedLocale:r}}let U=/(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)/;function B(e,t){return new URL(String(e).replace(U,"localhost"),t&&String(t).replace(U,"localhost"))}let q=Symbol("NextURLInternal");class ${constructor(e,t,r){let n,i;"object"==typeof t&&"pathname"in t||"string"==typeof t?(n=t,i=r||{}):i=r||t||{},this[q]={url:B(e,n??i.base),options:i,basePath:""},this.analyze()}analyze(){var e,t,r,n,i;let a=function(e,t){var r,n;let{basePath:i,i18n:a,trailingSlash:o}=null!=(r=t.nextConfig)?r:{},s={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};i&&D(s.pathname,i)&&(s.pathname=function(e,t){if(!D(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:"/"+r}(s.pathname,i),s.basePath=i);let l=s.pathname;if(s.pathname.startsWith("/_next/data/")&&s.pathname.endsWith(".json")){let e=s.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/"),r=e[0];s.buildId=r,l="index"!==e[1]?"/"+e.slice(1).join("/"):"/",!0===t.parseData&&(s.pathname=l)}if(a){let e=t.i18nProvider?t.i18nProvider.analyze(s.pathname):V(s.pathname,a.locales);s.locale=e.detectedLocale,s.pathname=null!=(n=e.pathname)?n:s.pathname,!e.detectedLocale&&s.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(l):V(l,a.locales)).detectedLocale&&(s.locale=e.detectedLocale)}return s}(this[q].url.pathname,{nextConfig:this[q].options.nextConfig,parseData:!0,i18nProvider:this[q].options.i18nProvider}),o=function(e,t){let r;if((null==t?void 0:t.host)&&!Array.isArray(t.host))r=t.host.toString().split(":",1)[0];else{if(!e.hostname)return;r=e.hostname}return r.toLowerCase()}(this[q].url,this[q].options.headers);this[q].domainLocale=this[q].options.i18nProvider?this[q].options.i18nProvider.detectDomainLocale(o):function(e,t,r){if(e)for(let a of(r&&(r=r.toLowerCase()),e)){var n,i;if(t===(null==(n=a.domain)?void 0:n.split(":",1)[0].toLowerCase())||r===a.defaultLocale.toLowerCase()||(null==(i=a.locales)?void 0:i.some(e=>e.toLowerCase()===r)))return a}}(null==(t=this[q].options.nextConfig)?void 0:null==(e=t.i18n)?void 0:e.domains,o);let s=(null==(r=this[q].domainLocale)?void 0:r.defaultLocale)||(null==(i=this[q].options.nextConfig)?void 0:null==(n=i.i18n)?void 0:n.defaultLocale);this[q].url.pathname=a.pathname,this[q].defaultLocale=s,this[q].basePath=a.basePath??"",this[q].buildId=a.buildId,this[q].locale=a.locale??s,this[q].trailingSlash=a.trailingSlash}formatPathname(){var e;let t;return t=function(e,t,r,n){if(!t||t===r)return e;let i=e.toLowerCase();return!n&&(D(i,"/api")||D(i,"/"+t.toLowerCase()))?e:k(e,"/"+t)}((e={basePath:this[q].basePath,buildId:this[q].buildId,defaultLocale:this[q].options.forceLocale?void 0:this[q].defaultLocale,locale:this[q].locale,pathname:this[q].url.pathname,trailingSlash:this[q].trailingSlash}).pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix),(e.buildId||!e.trailingSlash)&&(t=A(t)),e.buildId&&(t=j(k(t,"/_next/data/"+e.buildId),"/"===e.pathname?"index.json":".json")),t=k(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:j(t,"/"):A(t)}formatSearch(){return this[q].url.search}get buildId(){return this[q].buildId}set buildId(e){this[q].buildId=e}get locale(){return this[q].locale??""}set locale(e){var t,r;if(!this[q].locale||!(null==(r=this[q].options.nextConfig)?void 0:null==(t=r.i18n)?void 0:t.locales.includes(e)))throw TypeError(`The NextURL configuration includes no locale "${e}"`);this[q].locale=e}get defaultLocale(){return this[q].defaultLocale}get domainLocale(){return this[q].domainLocale}get searchParams(){return this[q].url.searchParams}get host(){return this[q].url.host}set host(e){this[q].url.host=e}get hostname(){return this[q].url.hostname}set hostname(e){this[q].url.hostname=e}get port(){return this[q].url.port}set port(e){this[q].url.port=e}get protocol(){return this[q].url.protocol}set protocol(e){this[q].url.protocol=e}get href(){let e=this.formatPathname(),t=this.formatSearch();return`${this.protocol}//${this.host}${e}${t}${this.hash}`}set href(e){this[q].url=B(e),this.analyze()}get origin(){return this[q].url.origin}get pathname(){return this[q].url.pathname}set pathname(e){this[q].url.pathname=e}get hash(){return this[q].url.hash}set hash(e){this[q].url.hash=e}get search(){return this[q].url.search}set search(e){this[q].url.search=e}get password(){return this[q].url.password}set password(e){this[q].url.password=e}get username(){return this[q].url.username}set username(e){this[q].url.username=e}get basePath(){return this[q].basePath}set basePath(e){this[q].basePath=e.startsWith("/")?e:`/${e}`}toString(){return this.href}toJSON(){return this.href}[Symbol.for("edge-runtime.inspect.custom")](){return{href:this.href,origin:this.origin,protocol:this.protocol,username:this.username,password:this.password,host:this.host,hostname:this.hostname,port:this.port,pathname:this.pathname,search:this.search,searchParams:this.searchParams,hash:this.hash}}clone(){return new $(String(this),this[q].options)}}var G=r(945);let H=Symbol("internal request");class F extends Request{constructor(e,t={}){let r="string"!=typeof e&&"url"in e?e.url:String(e);R(r),e instanceof Request?super(e,t):super(r,t);let n=new $(r,{headers:N(this.headers),nextConfig:t.nextConfig});this[H]={cookies:new G.RequestCookies(this.headers),geo:t.geo||{},ip:t.ip,nextUrl:n,url:n.toString()}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,geo:this.geo,ip:this.ip,nextUrl:this.nextUrl,url:this.url,bodyUsed:this.bodyUsed,cache:this.cache,credentials:this.credentials,destination:this.destination,headers:Object.fromEntries(this.headers),integrity:this.integrity,keepalive:this.keepalive,method:this.method,mode:this.mode,redirect:this.redirect,referrer:this.referrer,referrerPolicy:this.referrerPolicy,signal:this.signal}}get cookies(){return this[H].cookies}get geo(){return this[H].geo}get ip(){return this[H].ip}get nextUrl(){return this[H].nextUrl}get page(){throw new x}get ua(){throw new S}get url(){return this[H].url}}class z{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}let W=Symbol("internal response"),K=new Set([301,302,303,307,308]);function X(e,t){var r;if(null==e?void 0:null==(r=e.request)?void 0:r.headers){if(!(e.request.headers instanceof Headers))throw Error("request.headers must be an instance of Headers");let r=[];for(let[n,i]of e.request.headers)t.set("x-middleware-request-"+n,i),r.push(n);t.set("x-middleware-override-headers",r.join(","))}}class Y extends Response{constructor(e,t={}){super(e,t);let r=this.headers,n=new Proxy(new G.ResponseCookies(r),{get(e,n,i){switch(n){case"delete":case"set":return(...i)=>{let a=Reflect.apply(e[n],e,i),o=new Headers(r);return a instanceof G.ResponseCookies&&r.set("x-middleware-set-cookie",a.getAll().map(e=>(0,G.stringifyCookie)(e)).join(",")),X(t,o),a};default:return z.get(e,n,i)}}});this[W]={cookies:n,url:t.url?new $(t.url,{headers:N(r),nextConfig:t.nextConfig}):void 0}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,url:this.url,body:this.body,bodyUsed:this.bodyUsed,headers:Object.fromEntries(this.headers),ok:this.ok,redirected:this.redirected,status:this.status,statusText:this.statusText,type:this.type}}get cookies(){return this[W].cookies}static json(e,t){let r=Response.json(e,t);return new Y(r.body,r)}static redirect(e,t){let r="number"==typeof t?t:(null==t?void 0:t.status)??307;if(!K.has(r))throw RangeError('Failed to execute "redirect" on "response": Invalid status code');let n="object"==typeof t?t:{},i=new Headers(null==n?void 0:n.headers);return i.set("Location",R(e)),new Y(null,{...n,headers:i,status:r})}static rewrite(e,t){let r=new Headers(null==t?void 0:t.headers);return r.set("x-middleware-rewrite",R(e)),X(t,r),new Y(null,{...t,headers:r})}static next(e){let t=new Headers(null==e?void 0:e.headers);return t.set("x-middleware-next","1"),X(e,t),new Y(null,{...e,headers:t})}}function Z(e,t){let r="string"==typeof t?new URL(t):t,n=new URL(e,t),i=r.protocol+"//"+r.host;return n.protocol+"//"+n.host===i?n.toString().replace(i,""):n.toString()}let J=[["RSC"],["Next-Router-State-Tree"],["Next-Router-Prefetch"]],Q=["__nextFallback","__nextLocale","__nextInferredLocaleFromDefault","__nextDefaultLocale","__nextIsNotFound","_rsc"],ee=["__nextDataReq"];class et extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new et}}class er extends Headers{constructor(e){super(),this.headers=new Proxy(e,{get(t,r,n){if("symbol"==typeof r)return z.get(t,r,n);let i=r.toLowerCase(),a=Object.keys(e).find(e=>e.toLowerCase()===i);if(void 0!==a)return z.get(t,a,n)},set(t,r,n,i){if("symbol"==typeof r)return z.set(t,r,n,i);let a=r.toLowerCase(),o=Object.keys(e).find(e=>e.toLowerCase()===a);return z.set(t,o??r,n,i)},has(t,r){if("symbol"==typeof r)return z.has(t,r);let n=r.toLowerCase(),i=Object.keys(e).find(e=>e.toLowerCase()===n);return void 0!==i&&z.has(t,i)},deleteProperty(t,r){if("symbol"==typeof r)return z.deleteProperty(t,r);let n=r.toLowerCase(),i=Object.keys(e).find(e=>e.toLowerCase()===n);return void 0===i||z.deleteProperty(t,i)}})}static seal(e){return new Proxy(e,{get(e,t,r){switch(t){case"append":case"delete":case"set":return et.callable;default:return z.get(e,t,r)}}})}merge(e){return Array.isArray(e)?e.join(", "):e}static from(e){return e instanceof Headers?e:new er(e)}append(e,t){let r=this.headers[e];"string"==typeof r?this.headers[e]=[r,t]:Array.isArray(r)?r.push(t):this.headers[e]=t}delete(e){delete this.headers[e]}get(e){let t=this.headers[e];return void 0!==t?this.merge(t):null}has(e){return void 0!==this.headers[e]}set(e,t){this.headers[e]=t}forEach(e,t){for(let[r,n]of this.entries())e.call(t,n,r,this)}*entries(){for(let e of Object.keys(this.headers)){let t=e.toLowerCase(),r=this.get(t);yield[t,r]}}*keys(){for(let e of Object.keys(this.headers)){let t=e.toLowerCase();yield t}}*values(){for(let e of Object.keys(this.headers)){let t=this.get(e);yield t}}[Symbol.iterator](){return this.entries()}}let en=Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available");class ei{disable(){throw en}getStore(){}run(){throw en}exit(){throw en}enterWith(){throw en}}let ea=globalThis.AsyncLocalStorage;function eo(){return ea?new ea:new ei}let es=eo();class el extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options")}static callable(){throw new el}}class eu{static seal(e){return new Proxy(e,{get(e,t,r){switch(t){case"clear":case"delete":case"set":return el.callable;default:return z.get(e,t,r)}}})}}let ed=Symbol.for("next.mutated.cookies");class ec{static wrap(e,t){let r=new G.ResponseCookies(new Headers);for(let t of e.getAll())r.set(t);let n=[],i=new Set,a=()=>{let e=es.getStore();if(e&&(e.pathWasRevalidated=!0),n=r.getAll().filter(e=>i.has(e.name)),t){let e=[];for(let t of n){let r=new G.ResponseCookies(new Headers);r.set(t),e.push(r.toString())}t(e)}};return new Proxy(r,{get(e,t,r){switch(t){case ed:return n;case"delete":return function(...t){i.add("string"==typeof t[0]?t[0]:t[0].name);try{e.delete(...t)}finally{a()}};case"set":return function(...t){i.add("string"==typeof t[0]?t[0]:t[0].name);try{return e.set(...t)}finally{a()}};default:return z.get(e,t,r)}}})}}!function(e){e.handleRequest="BaseServer.handleRequest",e.run="BaseServer.run",e.pipe="BaseServer.pipe",e.getStaticHTML="BaseServer.getStaticHTML",e.render="BaseServer.render",e.renderToResponseWithComponents="BaseServer.renderToResponseWithComponents",e.renderToResponse="BaseServer.renderToResponse",e.renderToHTML="BaseServer.renderToHTML",e.renderError="BaseServer.renderError",e.renderErrorToResponse="BaseServer.renderErrorToResponse",e.renderErrorToHTML="BaseServer.renderErrorToHTML",e.render404="BaseServer.render404"}(i||(i={})),function(e){e.loadDefaultErrorComponents="LoadComponents.loadDefaultErrorComponents",e.loadComponents="LoadComponents.loadComponents"}(a||(a={})),function(e){e.getRequestHandler="NextServer.getRequestHandler",e.getServer="NextServer.getServer",e.getServerRequestHandler="NextServer.getServerRequestHandler",e.createServer="createServer.createServer"}(o||(o={})),function(e){e.compression="NextNodeServer.compression",e.getBuildId="NextNodeServer.getBuildId",e.createComponentTree="NextNodeServer.createComponentTree",e.clientComponentLoading="NextNodeServer.clientComponentLoading",e.getLayoutOrPageModule="NextNodeServer.getLayoutOrPageModule",e.generateStaticRoutes="NextNodeServer.generateStaticRoutes",e.generateFsStaticRoutes="NextNodeServer.generateFsStaticRoutes",e.generatePublicRoutes="NextNodeServer.generatePublicRoutes",e.generateImageRoutes="NextNodeServer.generateImageRoutes.route",e.sendRenderResult="NextNodeServer.sendRenderResult",e.proxyRequest="NextNodeServer.proxyRequest",e.runApi="NextNodeServer.runApi",e.render="NextNodeServer.render",e.renderHTML="NextNodeServer.renderHTML",e.imageOptimizer="NextNodeServer.imageOptimizer",e.getPagePath="NextNodeServer.getPagePath",e.getRoutesManifest="NextNodeServer.getRoutesManifest",e.findPageComponents="NextNodeServer.findPageComponents",e.getFontManifest="NextNodeServer.getFontManifest",e.getServerComponentManifest="NextNodeServer.getServerComponentManifest",e.getRequestHandler="NextNodeServer.getRequestHandler",e.renderToHTML="NextNodeServer.renderToHTML",e.renderError="NextNodeServer.renderError",e.renderErrorToHTML="NextNodeServer.renderErrorToHTML",e.render404="NextNodeServer.render404",e.startResponse="NextNodeServer.startResponse",e.route="route",e.onProxyReq="onProxyReq",e.apiResolver="apiResolver",e.internalFetch="internalFetch"}(s||(s={})),(l||(l={})).startServer="startServer.startServer",function(e){e.getServerSideProps="Render.getServerSideProps",e.getStaticProps="Render.getStaticProps",e.renderToString="Render.renderToString",e.renderDocument="Render.renderDocument",e.createBodyResult="Render.createBodyResult"}(u||(u={})),function(e){e.renderToString="AppRender.renderToString",e.renderToReadableStream="AppRender.renderToReadableStream",e.getBodyResult="AppRender.getBodyResult",e.fetch="AppRender.fetch"}(d||(d={})),(c||(c={})).executeRoute="Router.executeRoute",(p||(p={})).runHandler="Node.runHandler",(g||(g={})).runHandler="AppRouteRouteHandlers.runHandler",function(e){e.generateMetadata="ResolveMetadata.generateMetadata",e.generateViewport="ResolveMetadata.generateViewport"}(h||(h={})),(f||(f={})).execute="Middleware.execute";let ep=["Middleware.execute","BaseServer.handleRequest","Render.getServerSideProps","Render.getStaticProps","AppRender.fetch","AppRender.getBodyResult","Render.renderDocument","Node.runHandler","AppRouteRouteHandlers.runHandler","ResolveMetadata.generateMetadata","ResolveMetadata.generateViewport","NextNodeServer.createComponentTree","NextNodeServer.findPageComponents","NextNodeServer.getLayoutOrPageModule","NextNodeServer.startResponse","NextNodeServer.clientComponentLoading"],eg=["NextNodeServer.findPageComponents","NextNodeServer.createComponentTree","NextNodeServer.clientComponentLoading"],{context:eh,propagation:ef,trace:eb,SpanStatusCode:em,SpanKind:ev,ROOT_CONTEXT:ew}=n=r(439),e_=e=>null!==e&&"object"==typeof e&&"function"==typeof e.then,ey=(e,t)=>{(null==t?void 0:t.bubble)===!0?e.setAttribute("next.bubble",!0):(t&&e.recordException(t),e.setStatus({code:em.ERROR,message:null==t?void 0:t.message})),e.end()},ex=new Map,eS=n.createContextKey("next.rootSpanId"),eP=0,eO=()=>eP++;class eN{getTracerInstance(){return eb.getTracer("next.js","0.0.1")}getContext(){return eh}getActiveScopeSpan(){return eb.getSpan(null==eh?void 0:eh.active())}withPropagatedContext(e,t,r){let n=eh.active();if(eb.getSpanContext(n))return t();let i=ef.extract(n,e,r);return eh.with(i,t)}trace(...e){var t;let[r,n,i]=e,{fn:a,options:o}="function"==typeof n?{fn:n,options:{}}:{fn:i,options:{...n}},s=o.spanName??r;if(!ep.includes(r)&&"1"!==process.env.NEXT_OTEL_VERBOSE||o.hideSpan)return a();let l=this.getSpanContext((null==o?void 0:o.parentSpan)??this.getActiveScopeSpan()),u=!1;l?(null==(t=eb.getSpanContext(l))?void 0:t.isRemote)&&(u=!0):(l=(null==eh?void 0:eh.active())??ew,u=!0);let d=eO();return o.attributes={"next.span_name":s,"next.span_type":r,...o.attributes},eh.with(l.setValue(eS,d),()=>this.getTracerInstance().startActiveSpan(s,o,e=>{let t="performance"in globalThis?globalThis.performance.now():void 0,n=()=>{ex.delete(d),t&&process.env.NEXT_OTEL_PERFORMANCE_PREFIX&&eg.includes(r||"")&&performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(r.split(".").pop()||"").replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}`,{start:t,end:performance.now()})};u&&ex.set(d,new Map(Object.entries(o.attributes??{})));try{if(a.length>1)return a(e,t=>ey(e,t));let t=a(e);if(e_(t))return t.then(t=>(e.end(),t)).catch(t=>{throw ey(e,t),t}).finally(n);return e.end(),n(),t}catch(t){throw ey(e,t),n(),t}}))}wrap(...e){let t=this,[r,n,i]=3===e.length?e:[e[0],{},e[1]];return ep.includes(r)||"1"===process.env.NEXT_OTEL_VERBOSE?function(){let e=n;"function"==typeof e&&"function"==typeof i&&(e=e.apply(this,arguments));let a=arguments.length-1,o=arguments[a];if("function"!=typeof o)return t.trace(r,e,()=>i.apply(this,arguments));{let n=t.getContext().bind(eh.active(),o);return t.trace(r,e,(e,t)=>(arguments[a]=function(e){return null==t||t(e),n.apply(this,arguments)},i.apply(this,arguments)))}}:i}startSpan(...e){let[t,r]=e,n=this.getSpanContext((null==r?void 0:r.parentSpan)??this.getActiveScopeSpan());return this.getTracerInstance().startSpan(t,r,n)}getSpanContext(e){return e?eb.setSpan(eh.active(),e):void 0}getRootSpanAttributes(){let e=eh.active().getValue(eS);return ex.get(e)}}let eR=(()=>{let e=new eN;return()=>e})(),eT="__prerender_bypass";Symbol("__next_preview_data"),Symbol(eT);class eC{constructor(e,t,r,n){var i;let a=e&&function(e,t){let r=er.from(e.headers);return{isOnDemandRevalidate:r.get("x-prerender-revalidate")===t.previewModeId,revalidateOnlyGenerated:r.has("x-prerender-revalidate-if-generated")}}(t,e).isOnDemandRevalidate,o=null==(i=r.get(eT))?void 0:i.value;this.isEnabled=!!(!a&&o&&e&&o===e.previewModeId),this._previewModeId=null==e?void 0:e.previewModeId,this._mutableCookies=n}enable(){if(!this._previewModeId)throw Error("Invariant: previewProps missing previewModeId this should never happen");this._mutableCookies.set({name:eT,value:this._previewModeId,httpOnly:!0,sameSite:"none",secure:!0,path:"/"})}disable(){this._mutableCookies.set({name:eT,value:"",httpOnly:!0,sameSite:"none",secure:!0,path:"/",expires:new Date(0)})}}function eE(e,t){if("x-middleware-set-cookie"in e.headers&&"string"==typeof e.headers["x-middleware-set-cookie"]){let r=e.headers["x-middleware-set-cookie"],n=new Headers;for(let e of O(r))n.append("set-cookie",e);for(let e of new G.ResponseCookies(n).getAll())t.set(e)}}let eM={wrap(e,{req:t,res:r,renderOpts:n},i){let a;function o(e){r&&r.setHeader("Set-Cookie",e)}n&&"previewProps"in n&&(a=n.previewProps);let s={},l={get headers(){return s.headers||(s.headers=function(e){let t=er.from(e);for(let e of J)t.delete(e.toString().toLowerCase());return er.seal(t)}(t.headers)),s.headers},get cookies(){if(!s.cookies){let e=new G.RequestCookies(er.from(t.headers));eE(t,e),s.cookies=eu.seal(e)}return s.cookies},get mutableCookies(){if(!s.mutableCookies){let e=function(e,t){let r=new G.RequestCookies(er.from(e));return ec.wrap(r,t)}(t.headers,(null==n?void 0:n.onUpdateCookies)||(r?o:void 0));eE(t,e),s.mutableCookies=e}return s.mutableCookies},get draftMode(){return s.draftMode||(s.draftMode=new eC(a,t,this.cookies,this.mutableCookies)),s.draftMode},reactLoadableManifest:(null==n?void 0:n.reactLoadableManifest)||{},assetPrefix:(null==n?void 0:n.assetPrefix)||""};return e.run(l,i,l)}},eI=eo();function eA(){return{previewModeId:process.env.__NEXT_PREVIEW_MODE_ID,previewModeSigningKey:process.env.__NEXT_PREVIEW_MODE_SIGNING_KEY||"",previewModeEncryptionKey:process.env.__NEXT_PREVIEW_MODE_ENCRYPTION_KEY||""}}class eL extends F{constructor(e){super(e.input,e.init),this.sourcePage=e.page}get request(){throw new y({page:this.sourcePage})}respondWith(){throw new y({page:this.sourcePage})}waitUntil(){throw new y({page:this.sourcePage})}}let ek={keys:e=>Array.from(e.keys()),get:(e,t)=>e.get(t)??void 0},ej=(e,t)=>eR().withPropagatedContext(e.headers,t,ek),eD=!1;async function eV(e){let t,n;!function(){if(!eD&&(eD=!0,"true"===process.env.NEXT_PRIVATE_TEST_PROXY)){let{interceptTestApis:e,wrapRequestHandler:t}=r(177);e(),ej=t(ej)}}(),await w();let i=void 0!==self.__BUILD_MANIFEST;e.request.url=e.request.url.replace(/\.rsc($|\?)/,"$1");let a=new $(e.request.url,{headers:e.request.headers,nextConfig:e.request.nextConfig});for(let e of[...a.searchParams.keys()]){let t=a.searchParams.getAll(e);!function(e,t){for(let r of["nxtP","nxtI"])e!==r&&e.startsWith(r)&&t(e.substring(r.length))}(e,r=>{for(let e of(a.searchParams.delete(r),t))a.searchParams.append(r,e);a.searchParams.delete(e)})}let o=a.buildId;a.buildId="";let s=e.request.headers["x-nextjs-data"];s&&"/index"===a.pathname&&(a.pathname="/");let l=function(e){let t=new Headers;for(let[r,n]of Object.entries(e))for(let e of Array.isArray(n)?n:[n])void 0!==e&&("number"==typeof e&&(e=e.toString()),t.append(r,e));return t}(e.request.headers),u=new Map;if(!i)for(let e of J){let t=e.toString().toLowerCase();l.get(t)&&(u.set(t,l.get(t)),l.delete(t))}let d=new eL({page:e.page,input:(function(e,t){let r="string"==typeof e,n=r?new URL(e):e;for(let e of Q)n.searchParams.delete(e);if(t)for(let e of ee)n.searchParams.delete(e);return r?n.toString():n})(a,!0).toString(),init:{body:e.request.body,geo:e.request.geo,headers:l,ip:e.request.ip,method:e.request.method,nextConfig:e.request.nextConfig,signal:e.request.signal}});s&&Object.defineProperty(d,"__isData",{enumerable:!1,value:!0}),!globalThis.__incrementalCacheShared&&e.IncrementalCache&&(globalThis.__incrementalCache=new e.IncrementalCache({appDir:!0,fetchCache:!0,minimalMode:!0,fetchCacheKeyPrefix:"",dev:!1,requestHeaders:e.request.headers,requestProtocol:"https",getPrerenderManifest:()=>({version:-1,routes:{},dynamicRoutes:{},notFoundRoutes:[],preview:eA()})}));let c=new I({request:d,page:e.page});if((t=await ej(d,()=>"/middleware"===e.page||"/src/middleware"===e.page?eR().trace(f.execute,{spanName:`middleware ${d.method} ${d.nextUrl.pathname}`,attributes:{"http.target":d.nextUrl.pathname,"http.method":d.method}},()=>eM.wrap(eI,{req:d,renderOpts:{onUpdateCookies:e=>{n=e},previewProps:eA()}},()=>e.handler(d,c))):e.handler(d,c)))&&!(t instanceof Response))throw TypeError("Expected an instance of Response to be returned");t&&n&&t.headers.set("set-cookie",n);let p=null==t?void 0:t.headers.get("x-middleware-rewrite");if(t&&p&&!i){let r=new $(p,{forceLocale:!0,headers:e.request.headers,nextConfig:e.request.nextConfig});r.host===d.nextUrl.host&&(r.buildId=o||r.buildId,t.headers.set("x-middleware-rewrite",String(r)));let n=Z(String(r),String(a));s&&t.headers.set("x-nextjs-rewrite",n)}let g=null==t?void 0:t.headers.get("Location");if(t&&g&&!i){let r=new $(g,{forceLocale:!1,headers:e.request.headers,nextConfig:e.request.nextConfig});t=new Response(t.body,t),r.host===d.nextUrl.host&&(r.buildId=o||r.buildId,t.headers.set("Location",String(r))),s&&(t.headers.delete("Location"),t.headers.set("x-nextjs-redirect",Z(String(r),String(a))))}let h=t||Y.next(),b=h.headers.get("x-middleware-override-headers"),m=[];if(b){for(let[e,t]of u)h.headers.set(`x-middleware-request-${e}`,t),m.push(e);m.length>0&&h.headers.set("x-middleware-override-headers",b+","+m.join(","))}return{response:h,waitUntil:Promise.all(c[E]),fetchMetrics:d.fetchMetrics}}r(340),"undefined"==typeof URLPattern||URLPattern;let eU=["/dashboard","/profile","/settings","/admin"],eB=["/login","/signup","/auth/login","/auth/register"],eq=["/","/pricing","/about","/contact","/reset-password","/forgot-password"];function e$(e){let{pathname:t}=e.nextUrl;if(t.startsWith("/api/")||eq.some(e=>t===e||t.startsWith(e+"/")))return Y.next();let r=!!e.cookies.get("better-auth.session_token"),n=eU.some(e=>t.startsWith(e)),i=eB.some(e=>t.startsWith(e));if(n&&!r){let r=new URL("/login",e.url);return r.searchParams.set("redirect",t),Y.redirect(r)}return i&&r?Y.redirect(new URL("/dashboard",e.url)):Y.next()}let eG={matcher:["/((?!_next/static|_next/image|favicon.ico|public).*)"]},eH={...b},eF=eH.middleware||eH.default,ez="/src/middleware";if("function"!=typeof eF)throw Error(`The Middleware "${ez}" must export a \`middleware\` or a \`default\` function`);function eW(e){return eV({...e,page:ez,handler:eF})}},945:e=>{"use strict";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a={};function o(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function s(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,i]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=i?i:"true"))}catch{}}return t}function l(e){var t,r;if(!e)return;let[[n,i],...a]=s(e),{domain:o,expires:l,httponly:c,maxage:p,path:g,samesite:h,secure:f,partitioned:b,priority:m}=Object.fromEntries(a.map(([e,t])=>[e.toLowerCase(),t]));return function(e){let t={};for(let r in e)e[r]&&(t[r]=e[r]);return t}({name:n,value:decodeURIComponent(i),domain:o,...l&&{expires:new Date(l)},...c&&{httpOnly:!0},..."string"==typeof p&&{maxAge:Number(p)},path:g,...h&&{sameSite:u.includes(t=(t=h).toLowerCase())?t:void 0},...f&&{secure:!0},...m&&{priority:d.includes(r=(r=m).toLowerCase())?r:void 0},...b&&{partitioned:!0}})}((e,r)=>{for(var n in r)t(e,n,{get:r[n],enumerable:!0})})(a,{RequestCookies:()=>c,ResponseCookies:()=>p,parseCookie:()=>s,parseSetCookie:()=>l,stringifyCookie:()=>o}),e.exports=((e,a,o,s)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let l of n(a))i.call(e,l)||l===o||t(e,l,{get:()=>a[l],enumerable:!(s=r(a,l))||s.enumerable});return e})(t({},"__esModule",{value:!0}),a);var u=["strict","lax","none"],d=["low","medium","high"],c=class{constructor(e){this._parsed=new Map,this._headers=e;let t=e.get("cookie");if(t)for(let[e,r]of s(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>o(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>o(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},p=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;let i=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(let e of Array.isArray(i)?i:function(e){if(!e)return[];var t,r,n,i,a,o=[],s=0;function l(){for(;s=e.length)&&o.push(e.substring(t,e.length))}return o}(i)){let t=l(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,i=this._parsed;return i.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=o(r);t.append("set-cookie",e)}}(i,this._headers),this}delete(...e){let[t,r,n]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0].path,e[0].domain];return this.set({name:t,path:r,domain:n,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(o).join("; ")}}},439:(e,t,r)=>{(()=>{"use strict";var t={491:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ContextAPI=void 0;let n=r(223),i=r(172),a=r(930),o="context",s=new n.NoopContextManager;class l{constructor(){}static getInstance(){return this._instance||(this._instance=new l),this._instance}setGlobalContextManager(e){return(0,i.registerGlobal)(o,e,a.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,i.getGlobal)(o)||s}disable(){this._getContextManager().disable(),(0,i.unregisterGlobal)(o,a.DiagAPI.instance())}}t.ContextAPI=l},930:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagAPI=void 0;let n=r(56),i=r(912),a=r(957),o=r(172);class s{constructor(){function e(e){return function(...t){let r=(0,o.getGlobal)("diag");if(r)return r[e](...t)}}let t=this;t.setLogger=(e,r={logLevel:a.DiagLogLevel.INFO})=>{var n,s,l;if(e===t){let e=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return t.error(null!==(n=e.stack)&&void 0!==n?n:e.message),!1}"number"==typeof r&&(r={logLevel:r});let u=(0,o.getGlobal)("diag"),d=(0,i.createLogLevelDiagLogger)(null!==(s=r.logLevel)&&void 0!==s?s:a.DiagLogLevel.INFO,e);if(u&&!r.suppressOverrideMessage){let e=null!==(l=Error().stack)&&void 0!==l?l:"";u.warn(`Current logger will be overwritten from ${e}`),d.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,o.registerGlobal)("diag",d,t,!0)},t.disable=()=>{(0,o.unregisterGlobal)("diag",t)},t.createComponentLogger=e=>new n.DiagComponentLogger(e),t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}static instance(){return this._instance||(this._instance=new s),this._instance}}t.DiagAPI=s},653:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MetricsAPI=void 0;let n=r(660),i=r(172),a=r(930),o="metrics";class s{constructor(){}static getInstance(){return this._instance||(this._instance=new s),this._instance}setGlobalMeterProvider(e){return(0,i.registerGlobal)(o,e,a.DiagAPI.instance())}getMeterProvider(){return(0,i.getGlobal)(o)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,i.unregisterGlobal)(o,a.DiagAPI.instance())}}t.MetricsAPI=s},181:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PropagationAPI=void 0;let n=r(172),i=r(874),a=r(194),o=r(277),s=r(369),l=r(930),u="propagation",d=new i.NoopTextMapPropagator;class c{constructor(){this.createBaggage=s.createBaggage,this.getBaggage=o.getBaggage,this.getActiveBaggage=o.getActiveBaggage,this.setBaggage=o.setBaggage,this.deleteBaggage=o.deleteBaggage}static getInstance(){return this._instance||(this._instance=new c),this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(u,e,l.DiagAPI.instance())}inject(e,t,r=a.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=a.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(u,l.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(u)||d}}t.PropagationAPI=c},997:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceAPI=void 0;let n=r(172),i=r(846),a=r(139),o=r(607),s=r(930),l="trace";class u{constructor(){this._proxyTracerProvider=new i.ProxyTracerProvider,this.wrapSpanContext=a.wrapSpanContext,this.isSpanContextValid=a.isSpanContextValid,this.deleteSpan=o.deleteSpan,this.getSpan=o.getSpan,this.getActiveSpan=o.getActiveSpan,this.getSpanContext=o.getSpanContext,this.setSpan=o.setSpan,this.setSpanContext=o.setSpanContext}static getInstance(){return this._instance||(this._instance=new u),this._instance}setGlobalTracerProvider(e){let t=(0,n.registerGlobal)(l,this._proxyTracerProvider,s.DiagAPI.instance());return t&&this._proxyTracerProvider.setDelegate(e),t}getTracerProvider(){return(0,n.getGlobal)(l)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(l,s.DiagAPI.instance()),this._proxyTracerProvider=new i.ProxyTracerProvider}}t.TraceAPI=u},277:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;let n=r(491),i=(0,r(780).createContextKey)("OpenTelemetry Baggage Key");function a(e){return e.getValue(i)||void 0}t.getBaggage=a,t.getActiveBaggage=function(){return a(n.ContextAPI.getInstance().active())},t.setBaggage=function(e,t){return e.setValue(i,t)},t.deleteBaggage=function(e){return e.deleteValue(i)}},993:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaggageImpl=void 0;class r{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){let t=this._entries.get(e);if(t)return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map(([e,t])=>[e,t])}setEntry(e,t){let n=new r(this._entries);return n._entries.set(e,t),n}removeEntry(e){let t=new r(this._entries);return t._entries.delete(e),t}removeEntries(...e){let t=new r(this._entries);for(let r of e)t._entries.delete(r);return t}clear(){return new r}}t.BaggageImpl=r},830:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataSymbol=void 0,t.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")},369:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataFromString=t.createBaggage=void 0;let n=r(930),i=r(993),a=r(830),o=n.DiagAPI.instance();t.createBaggage=function(e={}){return new i.BaggageImpl(new Map(Object.entries(e)))},t.baggageEntryMetadataFromString=function(e){return"string"!=typeof e&&(o.error(`Cannot create baggage metadata from unknown type: ${typeof e}`),e=""),{__TYPE__:a.baggageEntryMetadataSymbol,toString:()=>e}}},67:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.context=void 0;let n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopContextManager=void 0;let n=r(780);class i{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=i},780:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ROOT_CONTEXT=t.createContextKey=void 0,t.createContextKey=function(e){return Symbol.for(e)};class r{constructor(e){let t=this;t._currentContext=e?new Map(e):new Map,t.getValue=e=>t._currentContext.get(e),t.setValue=(e,n)=>{let i=new r(t._currentContext);return i._currentContext.set(e,n),i},t.deleteValue=e=>{let n=new r(t._currentContext);return n._currentContext.delete(e),n}}}t.ROOT_CONTEXT=new r},506:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.diag=void 0;let n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagComponentLogger=void 0;let n=r(172);class i{constructor(e){this._namespace=e.namespace||"DiagComponentLogger"}debug(...e){return a("debug",this._namespace,e)}error(...e){return a("error",this._namespace,e)}info(...e){return a("info",this._namespace,e)}warn(...e){return a("warn",this._namespace,e)}verbose(...e){return a("verbose",this._namespace,e)}}function a(e,t,r){let i=(0,n.getGlobal)("diag");if(i)return r.unshift(t),i[e](...r)}t.DiagComponentLogger=i},972:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagConsoleLogger=void 0;let r=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];class n{constructor(){for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.createLogLevelDiagLogger=void 0;let n=r(957);t.createLogLevelDiagLogger=function(e,t){function r(r,n){let i=t[r];return"function"==typeof i&&e>=n?i.bind(t):function(){}}return en.DiagLogLevel.ALL&&(e=n.DiagLogLevel.ALL),t=t||{},{error:r("error",n.DiagLogLevel.ERROR),warn:r("warn",n.DiagLogLevel.WARN),info:r("info",n.DiagLogLevel.INFO),debug:r("debug",n.DiagLogLevel.DEBUG),verbose:r("verbose",n.DiagLogLevel.VERBOSE)}}},957:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagLogLevel=void 0,function(e){e[e.NONE=0]="NONE",e[e.ERROR=30]="ERROR",e[e.WARN=50]="WARN",e[e.INFO=60]="INFO",e[e.DEBUG=70]="DEBUG",e[e.VERBOSE=80]="VERBOSE",e[e.ALL=9999]="ALL"}(t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;let n=r(200),i=r(521),a=r(130),o=i.VERSION.split(".")[0],s=Symbol.for(`opentelemetry.js.api.${o}`),l=n._globalThis;t.registerGlobal=function(e,t,r,n=!1){var a;let o=l[s]=null!==(a=l[s])&&void 0!==a?a:{version:i.VERSION};if(!n&&o[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return r.error(t.stack||t.message),!1}if(o.version!==i.VERSION){let t=Error(`@opentelemetry/api: Registration of version v${o.version} for ${e} does not match previously registered API v${i.VERSION}`);return r.error(t.stack||t.message),!1}return o[e]=t,r.debug(`@opentelemetry/api: Registered a global for ${e} v${i.VERSION}.`),!0},t.getGlobal=function(e){var t,r;let n=null===(t=l[s])||void 0===t?void 0:t.version;if(n&&(0,a.isCompatible)(n))return null===(r=l[s])||void 0===r?void 0:r[e]},t.unregisterGlobal=function(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${i.VERSION}.`);let r=l[s];r&&delete r[e]}},130:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isCompatible=t._makeCompatibilityCheck=void 0;let n=r(521),i=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function a(e){let t=new Set([e]),r=new Set,n=e.match(i);if(!n)return()=>!1;let a={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(null!=a.prerelease)return function(t){return t===e};function o(e){return r.add(e),!1}return function(e){if(t.has(e))return!0;if(r.has(e))return!1;let n=e.match(i);if(!n)return o(e);let s={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};return null!=s.prerelease||a.major!==s.major?o(e):0===a.major?a.minor===s.minor&&a.patch<=s.patch?(t.add(e),!0):o(e):a.minor<=s.minor?(t.add(e),!0):o(e)}}t._makeCompatibilityCheck=a,t.isCompatible=a(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.metrics=void 0;let n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueType=void 0,function(e){e[e.INT=0]="INT",e[e.DOUBLE=1]="DOUBLE"}(t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class r{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=r;class n{}t.NoopMetric=n;class i extends n{add(e,t){}}t.NoopCounterMetric=i;class a extends n{add(e,t){}}t.NoopUpDownCounterMetric=a;class o extends n{record(e,t){}}t.NoopHistogramMetric=o;class s{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=s;class l extends s{}t.NoopObservableCounterMetric=l;class u extends s{}t.NoopObservableGaugeMetric=u;class d extends s{}t.NoopObservableUpDownCounterMetric=d,t.NOOP_METER=new r,t.NOOP_COUNTER_METRIC=new i,t.NOOP_HISTOGRAM_METRIC=new o,t.NOOP_UP_DOWN_COUNTER_METRIC=new a,t.NOOP_OBSERVABLE_COUNTER_METRIC=new l,t.NOOP_OBSERVABLE_GAUGE_METRIC=new u,t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new d,t.createNoopMeter=function(){return t.NOOP_METER}},660:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;let n=r(102);class i{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=i,t.NOOP_METER_PROVIDER=new i},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(46),t)},651:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t._globalThis=void 0,t._globalThis="object"==typeof globalThis?globalThis:r.g},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.propagation=void 0;let n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTextMapPropagator=void 0;class r{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=r},194:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultTextMapSetter=t.defaultTextMapGetter=void 0,t.defaultTextMapGetter={get(e,t){if(null!=e)return e[t]},keys:e=>null==e?[]:Object.keys(e)},t.defaultTextMapSetter={set(e,t,r){null!=e&&(e[t]=r)}}},845:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.trace=void 0;let n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonRecordingSpan=void 0;let n=r(476);class i{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}}t.NonRecordingSpan=i},614:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracer=void 0;let n=r(491),i=r(607),a=r(403),o=r(139),s=n.ContextAPI.getInstance();class l{startSpan(e,t,r=s.active()){if(null==t?void 0:t.root)return new a.NonRecordingSpan;let n=r&&(0,i.getSpanContext)(r);return"object"==typeof n&&"string"==typeof n.spanId&&"string"==typeof n.traceId&&"number"==typeof n.traceFlags&&(0,o.isSpanContextValid)(n)?new a.NonRecordingSpan(n):new a.NonRecordingSpan}startActiveSpan(e,t,r,n){let a,o,l;if(arguments.length<2)return;2==arguments.length?l=t:3==arguments.length?(a=t,l=r):(a=t,o=r,l=n);let u=null!=o?o:s.active(),d=this.startSpan(e,a,u),c=(0,i.setSpan)(u,d);return s.with(c,l,void 0,d)}}t.NoopTracer=l},124:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracerProvider=void 0;let n=r(614);class i{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=i},125:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracer=void 0;let n=new(r(614)).NoopTracer;class i{constructor(e,t,r,n){this._provider=e,this.name=t,this.version=r,this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){let i=this._getTracer();return Reflect.apply(i.startActiveSpan,i,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):n}}t.ProxyTracer=i},846:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracerProvider=void 0;let n=r(125),i=new(r(124)).NoopTracerProvider;class a{getTracer(e,t,r){var i;return null!==(i=this.getDelegateTracer(e,t,r))&&void 0!==i?i:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return null!==(e=this._delegate)&&void 0!==e?e:i}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return null===(n=this._delegate)||void 0===n?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=a},996:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SamplingDecision=void 0,function(e){e[e.NOT_RECORD=0]="NOT_RECORD",e[e.RECORD=1]="RECORD",e[e.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"}(t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;let n=r(780),i=r(403),a=r(491),o=(0,n.createContextKey)("OpenTelemetry Context Key SPAN");function s(e){return e.getValue(o)||void 0}function l(e,t){return e.setValue(o,t)}t.getSpan=s,t.getActiveSpan=function(){return s(a.ContextAPI.getInstance().active())},t.setSpan=l,t.deleteSpan=function(e){return e.deleteValue(o)},t.setSpanContext=function(e,t){return l(e,new i.NonRecordingSpan(t))},t.getSpanContext=function(e){var t;return null===(t=s(e))||void 0===t?void 0:t.spanContext()}},325:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceStateImpl=void 0;let n=r(564);class i{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let r=this._clone();return r._internalState.has(e)&&r._internalState.delete(e),r._internalState.set(e,t),r}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+"="+this.get(t)),e),[]).join(",")}_parse(e){!(e.length>512)&&(this._internalState=e.split(",").reverse().reduce((e,t)=>{let r=t.trim(),i=r.indexOf("=");if(-1!==i){let a=r.slice(0,i),o=r.slice(i+1,t.length);(0,n.validateKey)(a)&&(0,n.validateValue)(o)&&e.set(a,o)}return e},new Map),this._internalState.size>32&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,32))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let e=new i;return e._internalState=new Map(this._internalState),e}}t.TraceStateImpl=i},564:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateValue=t.validateKey=void 0;let r="[_0-9a-z-*/]",n=`[a-z]${r}{0,255}`,i=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`,a=RegExp(`^(?:${n}|${i})$`),o=/^[ -~]{0,255}[!-~]$/,s=/,|=/;t.validateKey=function(e){return a.test(e)},t.validateValue=function(e){return o.test(e)&&!s.test(e)}},98:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTraceState=void 0;let n=r(325);t.createTraceState=function(e){return new n.TraceStateImpl(e)}},476:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;let n=r(475);t.INVALID_SPANID="0000000000000000",t.INVALID_TRACEID="00000000000000000000000000000000",t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanKind=void 0,function(e){e[e.INTERNAL=0]="INTERNAL",e[e.SERVER=1]="SERVER",e[e.CLIENT=2]="CLIENT",e[e.PRODUCER=3]="PRODUCER",e[e.CONSUMER=4]="CONSUMER"}(t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;let n=r(476),i=r(403),a=/^([0-9a-f]{32})$/i,o=/^[0-9a-f]{16}$/i;function s(e){return a.test(e)&&e!==n.INVALID_TRACEID}function l(e){return o.test(e)&&e!==n.INVALID_SPANID}t.isValidTraceId=s,t.isValidSpanId=l,t.isSpanContextValid=function(e){return s(e.traceId)&&l(e.spanId)},t.wrapSpanContext=function(e){return new i.NonRecordingSpan(e)}},847:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanStatusCode=void 0,function(e){e[e.UNSET=0]="UNSET",e[e.OK=1]="OK",e[e.ERROR=2]="ERROR"}(t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceFlags=void 0,function(e){e[e.NONE=0]="NONE",e[e.SAMPLED=1]="SAMPLED"}(t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,t.VERSION="1.6.0"}},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={exports:{}},o=!0;try{t[e].call(a.exports,a,a.exports,i),o=!1}finally{o&&delete n[e]}return a.exports}i.ab="//";var a={};(()=>{Object.defineProperty(a,"__esModule",{value:!0}),a.trace=a.propagation=a.metrics=a.diag=a.context=a.INVALID_SPAN_CONTEXT=a.INVALID_TRACEID=a.INVALID_SPANID=a.isValidSpanId=a.isValidTraceId=a.isSpanContextValid=a.createTraceState=a.TraceFlags=a.SpanStatusCode=a.SpanKind=a.SamplingDecision=a.ProxyTracerProvider=a.ProxyTracer=a.defaultTextMapSetter=a.defaultTextMapGetter=a.ValueType=a.createNoopMeter=a.DiagLogLevel=a.DiagConsoleLogger=a.ROOT_CONTEXT=a.createContextKey=a.baggageEntryMetadataFromString=void 0;var e=i(369);Object.defineProperty(a,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return e.baggageEntryMetadataFromString}});var t=i(780);Object.defineProperty(a,"createContextKey",{enumerable:!0,get:function(){return t.createContextKey}}),Object.defineProperty(a,"ROOT_CONTEXT",{enumerable:!0,get:function(){return t.ROOT_CONTEXT}});var r=i(972);Object.defineProperty(a,"DiagConsoleLogger",{enumerable:!0,get:function(){return r.DiagConsoleLogger}});var n=i(957);Object.defineProperty(a,"DiagLogLevel",{enumerable:!0,get:function(){return n.DiagLogLevel}});var o=i(102);Object.defineProperty(a,"createNoopMeter",{enumerable:!0,get:function(){return o.createNoopMeter}});var s=i(901);Object.defineProperty(a,"ValueType",{enumerable:!0,get:function(){return s.ValueType}});var l=i(194);Object.defineProperty(a,"defaultTextMapGetter",{enumerable:!0,get:function(){return l.defaultTextMapGetter}}),Object.defineProperty(a,"defaultTextMapSetter",{enumerable:!0,get:function(){return l.defaultTextMapSetter}});var u=i(125);Object.defineProperty(a,"ProxyTracer",{enumerable:!0,get:function(){return u.ProxyTracer}});var d=i(846);Object.defineProperty(a,"ProxyTracerProvider",{enumerable:!0,get:function(){return d.ProxyTracerProvider}});var c=i(996);Object.defineProperty(a,"SamplingDecision",{enumerable:!0,get:function(){return c.SamplingDecision}});var p=i(357);Object.defineProperty(a,"SpanKind",{enumerable:!0,get:function(){return p.SpanKind}});var g=i(847);Object.defineProperty(a,"SpanStatusCode",{enumerable:!0,get:function(){return g.SpanStatusCode}});var h=i(475);Object.defineProperty(a,"TraceFlags",{enumerable:!0,get:function(){return h.TraceFlags}});var f=i(98);Object.defineProperty(a,"createTraceState",{enumerable:!0,get:function(){return f.createTraceState}});var b=i(139);Object.defineProperty(a,"isSpanContextValid",{enumerable:!0,get:function(){return b.isSpanContextValid}}),Object.defineProperty(a,"isValidTraceId",{enumerable:!0,get:function(){return b.isValidTraceId}}),Object.defineProperty(a,"isValidSpanId",{enumerable:!0,get:function(){return b.isValidSpanId}});var m=i(476);Object.defineProperty(a,"INVALID_SPANID",{enumerable:!0,get:function(){return m.INVALID_SPANID}}),Object.defineProperty(a,"INVALID_TRACEID",{enumerable:!0,get:function(){return m.INVALID_TRACEID}}),Object.defineProperty(a,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return m.INVALID_SPAN_CONTEXT}});let v=i(67);Object.defineProperty(a,"context",{enumerable:!0,get:function(){return v.context}});let w=i(506);Object.defineProperty(a,"diag",{enumerable:!0,get:function(){return w.diag}});let _=i(886);Object.defineProperty(a,"metrics",{enumerable:!0,get:function(){return _.metrics}});let y=i(939);Object.defineProperty(a,"propagation",{enumerable:!0,get:function(){return y.propagation}});let x=i(845);Object.defineProperty(a,"trace",{enumerable:!0,get:function(){return x.trace}}),a.default={context:v.context,diag:w.diag,metrics:_.metrics,propagation:y.propagation,trace:x.trace}})(),e.exports=a})()},133:e=>{(()=>{"use strict";"undefined"!=typeof __nccwpck_require__&&(__nccwpck_require__.ab="//");var t={};(()=>{t.parse=function(t,r){if("string"!=typeof t)throw TypeError("argument str must be a string");for(var i={},a=t.split(n),o=(r||{}).decode||e,s=0;s{var n;(()=>{var i={226:function(i,a){!function(o,s){"use strict";var l="function",u="undefined",d="object",c="string",p="major",g="model",h="name",f="type",b="vendor",m="version",v="architecture",w="console",_="mobile",y="tablet",x="smarttv",S="wearable",P="embedded",O="Amazon",N="Apple",R="ASUS",T="BlackBerry",C="Browser",E="Chrome",M="Firefox",I="Google",A="Huawei",L="Microsoft",k="Motorola",j="Opera",D="Samsung",V="Sharp",U="Sony",B="Xiaomi",q="Zebra",$="Facebook",G="Chromium OS",H="Mac OS",F=function(e,t){var r={};for(var n in e)t[n]&&t[n].length%2==0?r[n]=t[n].concat(e[n]):r[n]=e[n];return r},z=function(e){for(var t={},r=0;r0?2===a.length?typeof a[1]==l?this[a[0]]=a[1].call(this,u):this[a[0]]=a[1]:3===a.length?typeof a[1]!==l||a[1].exec&&a[1].test?this[a[0]]=u?u.replace(a[1],a[2]):void 0:this[a[0]]=u?a[1].call(this,u,a[2]):void 0:4===a.length&&(this[a[0]]=u?a[3].call(this,u.replace(a[1],a[2])):void 0):this[a]=u||s;c+=2}},Z=function(e,t){for(var r in t)if(typeof t[r]===d&&t[r].length>0){for(var n=0;n2&&(e[g]="iPad",e[f]=y),e},this.getEngine=function(){var e={};return e[h]=s,e[m]=s,Y.call(e,n,a.engine),e},this.getOS=function(){var e={};return e[h]=s,e[m]=s,Y.call(e,n,a.os),w&&!e[h]&&i&&"Unknown"!=i.platform&&(e[h]=i.platform.replace(/chrome os/i,G).replace(/macos/i,H)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return n},this.setUA=function(e){return n=typeof e===c&&e.length>350?X(e,350):e,this},this.setUA(n),this};ee.VERSION="1.0.35",ee.BROWSER=z([h,m,p]),ee.CPU=z([v]),ee.DEVICE=z([g,b,f,w,_,x,y,S,P]),ee.ENGINE=ee.OS=z([h,m]),typeof a!==u?(i.exports&&(a=i.exports=ee),a.UAParser=ee):r.amdO?void 0!==(n=(function(){return ee}).call(t,r,t,e))&&(e.exports=n):typeof o!==u&&(o.UAParser=ee);var et=typeof o!==u&&(o.jQuery||o.Zepto);if(et&&!et.ua){var er=new ee;et.ua=er.getResult(),et.ua.get=function(){return er.getUA()},et.ua.set=function(e){er.setUA(e);var t=er.getResult();for(var r in t)et.ua[r]=t[r]}}}("object"==typeof window?window:this)}},a={};function o(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}},n=!0;try{i[e].call(r.exports,r,r.exports,o),n=!1}finally{n&&delete a[e]}return r.exports}o.ab="//";var s=o(226);e.exports=s})()},488:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getTestReqInfo:function(){return o},withRequest:function(){return a}});let n=new(r(67)).AsyncLocalStorage;function i(e,t){let r=t.header(e,"next-test-proxy-port");if(r)return{url:t.url(e),proxyPort:Number(r),testData:t.header(e,"next-test-data")||""}}function a(e,t,r){let a=i(e,t);return a?n.run(a,r):r()}function o(e,t){return n.getStore()||(e&&t?i(e,t):void 0)}},375:(e,t,r)=>{"use strict";var n=r(195).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleFetch:function(){return s},interceptFetch:function(){return l},reader:function(){return a}});let i=r(488),a={url:e=>e.url,header:(e,t)=>e.headers.get(t)};async function o(e,t){let{url:r,method:i,headers:a,body:o,cache:s,credentials:l,integrity:u,mode:d,redirect:c,referrer:p,referrerPolicy:g}=t;return{testData:e,api:"fetch",request:{url:r,method:i,headers:[...Array.from(a),["next-test-stack",function(){let e=(Error().stack??"").split("\n");for(let t=1;t0){e=e.slice(t);break}return(e=(e=(e=e.filter(e=>!e.includes("/next/dist/"))).slice(0,5)).map(e=>e.replace("webpack-internal:///(rsc)/","").trim())).join(" ")}()]],body:o?n.from(await t.arrayBuffer()).toString("base64"):null,cache:s,credentials:l,integrity:u,mode:d,redirect:c,referrer:p,referrerPolicy:g}}}async function s(e,t){let r=(0,i.getTestReqInfo)(t,a);if(!r)return e(t);let{testData:s,proxyPort:l}=r,u=await o(s,t),d=await e(`http://localhost:${l}`,{method:"POST",body:JSON.stringify(u),next:{internal:!0}});if(!d.ok)throw Error(`Proxy request failed: ${d.status}`);let c=await d.json(),{api:p}=c;switch(p){case"continue":return e(t);case"abort":case"unhandled":throw Error(`Proxy request aborted [${t.method} ${t.url}]`)}return function(e){let{status:t,headers:r,body:i}=e.response;return new Response(i?n.from(i,"base64"):null,{status:t,headers:new Headers(r)})}(c)}function l(e){return r.g.fetch=function(t,r){var n;return(null==r?void 0:null==(n=r.next)?void 0:n.internal)?e(t,r):s(e,new Request(t,r))},()=>{r.g.fetch=e}}},177:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{interceptTestApis:function(){return a},wrapRequestHandler:function(){return o}});let n=r(488),i=r(375);function a(){return(0,i.interceptFetch)(r.g.fetch)}function o(e){return(t,r)=>(0,n.withRequest)(t,i.reader,()=>e(t,r))}}},e=>{var t=e(e.s=733);(_ENTRIES="undefined"==typeof _ENTRIES?{}:_ENTRIES)["middleware_src/middleware"]=t}]); +//# sourceMappingURL=middleware.js.map \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/src/middleware.js.map b/phase-1-core-infra/frontend/.next/server/src/middleware.js.map new file mode 100644 index 0000000000000000000000000000000000000000..946b28dc45ab4961fb4c370a1ad82fef71abacfc --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/src/middleware.js.map @@ -0,0 +1 @@ +{"version":3,"file":"src/middleware.js","mappings":"kFAAAA,CAAAA,EAAAC,OAAA,CAAAC,QAAA,yCCAAF,CAAAA,EAAAC,OAAA,CAAAC,QAAA,+CiCCAC,qCDKAC,EAeAC,EAKAC,EAOAC,EAkCAC,EAIAC,EAQAC,EAOAC,EAIIC,EAIJC,EAIAC,EAKAC,O/BvGA,eAAAC,IACA,IAAAC,EAAA,aAAAC,YAAAC,SAAAC,0BAAA,SAAAD,SAAAC,0BAAA,EAAAH,QAAA,CACA,GAAAA,EACA,IACA,MAAAA,GACA,CAAU,MAAAI,EAAA,CAEV,MADAA,EAAAC,OAAA,0DAAmFD,EAAAC,OAAA,CAAY,EAC/FD,CACA,CAEA,iDACA,IAAAE,EAAA,KACO,SAAAC,IAIP,OAHAD,GACAA,CAAAA,EAAAP,GAAA,EAEAO,CACA,CACA,SAAAE,EAAAzB,CAAA,EAEA,oDAAyDA,EAAO;wEAChE,EA0BA0B,UAAoBC,EAAAC,CAAM,CAAAF,OAAA,GAE1BA,QAAAG,GAAA,CAAsBF,EAAAC,CAAM,CAAAF,OAAA,CAAAG,GAAA,CACpBF,EAAAC,CAAM,CAAAF,OAAA,CAAAA,SAIdI,OAAAC,cAAA,CAAAb,WAAA,wBACAc,MAhCA,SAAAC,CAAA,EACA,IAAAC,EAAA,IAAAC,MAAA,aAAyC,CACzCC,IAAAC,CAAA,CAAAC,CAAA,EACA,GAAAA,SAAAA,EACA,QAEA,aAAAb,EAAAQ,GACA,EACAM,YACA,YAAAd,EAAAQ,GACA,EACAO,MAAAC,CAAA,CAAAC,CAAA,CAAAC,CAAA,EACA,sBAAAA,CAAA,IACA,OAAAA,CAAA,IAAAT,EAEA,aAAAT,EAAAQ,GACA,CACA,GACA,WAAAE,MAAA,GAAuB,CACvBC,IAAA,IAAAF,CACA,EACA,EAYAU,WAAA,GACAC,aAAA,EACA,GAEArB,GC5DO,OAAAsB,UAAAC,MACPC,YAAA,CAAkBC,KAAAA,CAAA,CAAM,EACxB,yBAAiCA,EAAK;;;;;;;EAOtC,EACA,CACA,CACO,MAAAC,UAAAH,MACPC,aAAA,CACA;;EAEA,EACA,CACA,CACO,MAAAG,UAAAJ,MACPC,aAAA,CACA;;EAEA,EACA,CACA,CCwCA,IAAAI,EAAA,CAGAC,OAAA,SAGAC,sBAAA,MAGAC,oBAAA,MAGAC,cAAA,iBAGArD,IAAA,MAGAsD,WAAA,aAGAC,WAAA,aAGAC,UAAA,aAGAC,gBAAA,oBAGAC,iBAAA,qBAGAC,gBAAA,mBACA,ECjEU,SAAAC,EAAAC,CAAA,EACV,IAEAC,EACAC,EACAC,EACAC,EACAC,EANAC,EAAA,GACAC,EAAA,EAMA,SAAAC,IACA,KAAAD,EAAAP,EAAAS,MAAA,OAAAC,IAAA,CAAAV,EAAAW,MAAA,CAAAJ,KACAA,GAAA,EAEA,OAAAA,EAAAP,EAAAS,MAAA,CAMA,KAAAF,EAAAP,EAAAS,MAAA,GAGA,IAFAR,EAAAM,EACAF,EAAA,GACAG,KAEA,GAAAN,MADAA,CAAAA,EAAAF,EAAAW,MAAA,CAAAJ,EAAA,EACA,CAMA,IAJAJ,EAAAI,EACAA,GAAA,EACAC,IACAJ,EAAAG,EACAA,EAAAP,EAAAS,MAAA,EAbAP,MADAA,CAAAA,EAAAF,EAAAW,MAAA,CAAAJ,EAAA,GACAL,MAAAA,GAAsCA,MAAAA,GActCK,GAAA,CAGAA,CAAAA,EAAAP,EAAAS,MAAA,EAAAT,MAAAA,EAAAW,MAAA,CAAAJ,IAEAF,EAAA,GAEAE,EAAAH,EACAE,EAAAM,IAAA,CAAAZ,EAAAa,SAAA,CAAAZ,EAAAE,IACAF,EAAAM,GAIAA,EAAAJ,EAAA,CAEA,MACAI,GAAA,EAGA,EAAAF,GAAAE,GAAAP,EAAAS,MAAA,GACAH,EAAAM,IAAA,CAAAZ,EAAAa,SAAA,CAAAZ,EAAAD,EAAAS,MAAA,EAEA,CACA,OAAAH,CACA,CAOW,SAAAQ,EAAAC,CAAA,EACX,IAAAC,EAAA,GACAC,EAAA,GACA,GAAAF,EACA,QAAAG,EAAAlD,EAAA,GAAA+C,EAAAI,OAAA,GACAD,eAAAA,EAAAE,WAAA,IAIAH,EAAAL,IAAA,IAAAb,EAAA/B,IACAgD,CAAA,CAAAE,EAAA,CAAAD,IAAAA,EAAAR,MAAA,CAAAQ,CAAA,IAAAA,GAEAD,CAAA,CAAAE,EAAA,CAAAlD,EAIA,OAAAgD,CACA,CAGW,SAAAK,EAAAC,CAAA,EACX,IACA,OAAAC,OAAA,IAAAC,IAAAD,OAAAD,IACA,CAAM,MAAAG,EAAA,CACN,iCAA6CF,OAAAD,GAAY,+FACzDI,MAAAD,CACA,EACA,CACA,CDvBA,EACA,GAAArC,CAAA,CACAuC,MAAA,CACAC,WAAA,CACAxC,EAAAE,qBAAA,CACAF,EAAAI,aAAA,CACAJ,EAAAS,gBAAA,CACAT,EAAAU,eAAA,CACAV,EAAAM,UAAA,CACA,CACAmC,WAAA,CACAzC,EAAAG,mBAAA,CACAH,EAAAQ,eAAA,CACA,CACAkC,sBAAA,CAEA1C,EAAAK,UAAA,CACAL,EAAAjD,GAAA,CACA,CACA4F,IAAA,CACA3C,EAAAE,qBAAA,CACAF,EAAAI,aAAA,CACAJ,EAAAS,gBAAA,CACAT,EAAAU,eAAA,CACAV,EAAAG,mBAAA,CACAH,EAAAQ,eAAA,CACAR,EAAAC,MAAA,CACAD,EAAAM,UAAA,CACA,CAEA,GEjIA,IAAAsC,EAAAC,OAAA,YACAC,EAAAD,OAAA,eACOE,EAAAF,OAAA,YACP,OAAAG,EAEApD,YAAAqD,CAAA,EACA,KAAAF,EAAA,IACA,KAAAD,EAAA,GACA,CACAI,YAAAC,CAAA,EACA,KAAAP,EAAA,EACA,MAAAA,EAAA,CAAAQ,QAAAC,OAAA,CAAAF,EAAA,CAEA,CACAG,wBAAA,CACA,KAAAR,EAAA,GACA,CACAS,UAAAC,CAAA,EACA,KAAAT,EAAA,CAAAvB,IAAA,CAAAgC,EACA,CACA,CACO,MAAAC,UAAAT,EACPpD,YAAA8D,CAAA,EACA,MAAAA,EAAAC,OAAA,EACA,KAAAC,UAAA,CAAAF,EAAA7D,IAAA,CAMA,IAAA8D,SAAA,CACA,UAAkBjE,EAAkB,CACpCG,KAAA,KAAA+D,UAAA,EAEA,CAKAV,aAAA,CACA,UAAkBxD,EAAkB,CACpCG,KAAA,KAAA+D,UAAA,EAEA,CACA,CEtCO,SAASC,EAAoBC,CAAa,EAC/C,OAAOA,EAAMC,OAAO,CAAC,MAAO,KAAO,GACrC,CCJO,SAASC,EAAUC,CAAY,EACpC,IAAMC,EAAYD,EAAKE,OAAO,CAAC,KACzBC,EAAaH,EAAKE,OAAO,CAAC,KAC1BE,EAAWD,EAAa,IAAOF,CAAAA,EAAY,GAAKE,EAAaF,CAAAA,SAEnE,GAAgBA,EAAY,GACnB,CACLI,SAAUL,EAAKxC,SAAS,CAAC,EAAG4C,EAAWD,EAAaF,GACpDK,MAAOF,EACHJ,EAAKxC,SAAS,CAAC2C,EAAYF,EAAY,GAAKA,EAAYM,KAAAA,GACxD,GACJC,KAAMP,EAAY,GAAKD,EAAKS,KAAK,CAACR,GAAa,EACjD,EAGK,CAAEI,SAAUL,EAAMM,MAAO,GAAIE,KAAM,EAAG,CAC/C,CCfO,SAASE,EAAcV,CAAY,CAAEW,CAAe,EACzD,GAAI,CAACX,EAAKY,UAAU,CAAC,MAAQ,CAACD,EAC5B,OAAOX,EAGT,GAAM,CAAEK,SAAAA,CAAQ,CAAEC,MAAAA,CAAK,CAAEE,KAAAA,CAAI,CAAE,CAAGT,EAAUC,GAC5C,MAAO,GAAGW,EAASN,EAAWC,EAAQE,CACxC,CCNO,SAASK,EAAcb,CAAY,CAAEc,CAAe,EACzD,GAAI,CAACd,EAAKY,UAAU,CAAC,MAAQ,CAACE,EAC5B,OAAOd,EAGT,GAAM,CAAEK,SAAAA,CAAQ,CAAEC,MAAAA,CAAK,CAAEE,KAAAA,CAAI,CAAE,CAAGT,EAAUC,GAC5C,MAAO,GAAGK,EAAWS,EAASR,EAAQE,CACxC,CCLO,SAASO,EAAcf,CAAY,CAAEW,CAAc,EACxD,GAAI,iBAAOX,EACT,MAAO,GAGT,GAAM,CAAEK,SAAAA,CAAQ,CAAE,CAAGN,EAAUC,GAC/B,OAAOK,IAAaM,GAAUN,EAASO,UAAU,CAACD,EAAS,IAC7D,CIFO,SAASK,EACdX,CAAgB,CAChBY,CAAkB,MAEdC,EAEJ,IAAMC,EAAgBd,EAASe,KAAK,CAAC,KAerC,MAbEH,CAAAA,GAAW,EAAE,EAAEI,IAAI,CAAC,GACpB,EACEF,CAAa,CAAC,EAAE,EAChBA,CAAa,CAAC,EAAE,CAACpD,WAAW,KAAOuD,EAAOvD,WAAW,KAErDmD,EAAiBI,EACjBH,EAAcI,MAAM,CAAC,EAAG,GACxBlB,EAAWc,EAAcK,IAAI,CAAC,MAAQ,IAC/B,KAKJ,CACLnB,SAAAA,EACAa,eAAAA,CACF,CACF,CGnCA,IAAAO,EAAA,2FACA,SAAAC,EAAAzD,CAAA,CAAA0D,CAAA,EACA,WAAAxD,IAAAD,OAAAD,GAAA6B,OAAA,CAAA2B,EAAA,aAAAE,GAAAzD,OAAAyD,GAAA7B,OAAA,CAAA2B,EAAA,aACA,CACA,IAAAG,EAAAhD,OAAA,kBACO,OAAAiD,EACPlG,YAAAmG,CAAA,CAAAC,CAAA,CAAAC,CAAA,EACA,IAAAL,EACAM,CACA,kBAAAF,GAAA,aAAAA,GAAA,iBAAAA,GACAJ,EAAAI,EACAE,EAAAD,GAAA,IAEAC,EAAAD,GAAAD,GAAA,GAEA,KAAAH,EAAA,EACA3D,IAAAyD,EAAAI,EAAAH,GAAAM,EAAAN,IAAA,EACAM,QAAAA,EACAC,SAAA,EACA,EACA,KAAAC,OAAA,EACA,CACAA,SAAA,CACA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACA,IAAAC,EAAqBC,SDyBnBrC,CAAgB,CAChB4B,CAAgB,MAE0BA,EAyCxBU,EAzClB,GAAM,CAAET,SAAAA,CAAQ,CAAEU,KAAAA,CAAI,CAAEC,cAAAA,CAAa,CAAE,CAAGZ,MAAAA,CAAAA,EAAAA,EAAQa,UAAU,EAAlBb,EAAsB,CAAC,EAC3DQ,EAAyB,CAC7BpC,SAAAA,EACAwC,cAAexC,MAAAA,EAAmBA,EAAS0C,QAAQ,CAAC,KAAOF,CAC7D,EAEIX,GAAYnB,EAAc0B,EAAKpC,QAAQ,CAAE6B,KAC3CO,EAAKpC,QAAQ,CAAG2C,SDrDahD,CAAY,CAAEW,CAAc,EAa3D,GAAI,CAACI,EAAcf,EAAMW,GACvB,OAAOX,EAIT,IAAMiD,EAAgBjD,EAAKS,KAAK,CAACE,EAAOvD,MAAM,SAG9C,EAAkBwD,UAAU,CAAC,KACpBqC,EAKF,IAAIA,CACb,ECyBqCR,EAAKpC,QAAQ,CAAE6B,GAChDO,EAAKP,QAAQ,CAAGA,GAElB,IAAIgB,EAAuBT,EAAKpC,QAAQ,CAExC,GACEoC,EAAKpC,QAAQ,CAACO,UAAU,CAAC,iBACzB6B,EAAKpC,QAAQ,CAAC0C,QAAQ,CAAC,SACvB,CACA,IAAMI,EAAQV,EAAKpC,QAAQ,CACxBP,OAAO,CAAC,mBAAoB,IAC5BA,OAAO,CAAC,UAAW,IACnBsB,KAAK,CAAC,KAEHgC,EAAUD,CAAK,CAAC,EAAE,CACxBV,EAAKW,OAAO,CAAGA,EACfF,EACEC,UAAAA,CAAK,CAAC,EAAE,CAAe,IAAIA,EAAM1C,KAAK,CAAC,GAAGe,IAAI,CAAC,KAAS,IAIhC,KAAtBS,EAAQoB,SAAS,EACnBZ,CAAAA,EAAKpC,QAAQ,CAAG6C,CAAAA,CAEpB,CAIA,GAAIN,EAAM,CACR,IAAID,EAASV,EAAQqB,YAAY,CAC7BrB,EAAQqB,YAAY,CAACnB,OAAO,CAACM,EAAKpC,QAAQ,EAC1CW,EAAoByB,EAAKpC,QAAQ,CAAEuC,EAAK3B,OAAO,CAEnDwB,CAAAA,EAAKnB,MAAM,CAAGqB,EAAOzB,cAAc,CACnCuB,EAAKpC,QAAQ,CAAGsC,MAAAA,CAAAA,EAAAA,EAAOtC,QAAQ,EAAfsC,EAAmBF,EAAKpC,QAAQ,CAE5C,CAACsC,EAAOzB,cAAc,EAAIuB,EAAKW,OAAO,EAKpCT,CAJJA,EAASV,EAAQqB,YAAY,CACzBrB,EAAQqB,YAAY,CAACnB,OAAO,CAACe,GAC7BlC,EAAoBkC,EAAsBN,EAAK3B,OAAO,GAE/CC,cAAc,EACvBuB,CAAAA,EAAKnB,MAAM,CAAGqB,EAAOzB,cAAc,CAGzC,CACA,OAAOuB,CACT,EClFwC,KAAAb,EAAA,CAAA3D,GAAA,CAAAoC,QAAA,EACxCyC,WAAA,KAAAlB,EAAA,CAAAK,OAAA,CAAAa,UAAA,CACAO,UAAA,GACAC,aAAA,KAAA1B,EAAA,CAAAK,OAAA,CAAAqB,YAAA,GAEAC,EAAyBC,SJxBvBC,CAAoC,CACpC/F,CAA6B,EAI7B,IAAI6F,EACJ,GAAI7F,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAASgG,IAAI,GAAI,CAACC,MAAMC,OAAO,CAAClG,EAAQgG,IAAI,EAC9CH,EAAW7F,EAAQgG,IAAI,CAACG,QAAQ,GAAGzC,KAAK,CAAC,IAAK,EAAE,CAAC,EAAE,MAC9C,IAAIqC,EAAOF,QAAQ,CAEnB,OADLA,EAAWE,EAAOF,QAAQ,CAG5B,OAAOA,EAASxF,WAAW,EAC7B,EIWoC,KAAA6D,EAAA,CAAA3D,GAAA,MAAA2D,EAAA,CAAAK,OAAA,CAAAvE,OAAA,CACpC,MAAAkE,EAAA,CAAAkC,YAAA,MAAAlC,EAAA,CAAAK,OAAA,CAAAqB,YAAA,MAAA1B,EAAA,CAAAK,OAAA,CAAAqB,YAAA,CAAAS,kBAAA,CAAAR,GAA+IQ,SZ/B7IC,CAA4B,CAC5BT,CAAiB,CACjBrC,CAAuB,EAEvB,GAAK8C,EAML,IAAK,IAAMC,KAJP/C,GACFA,CAAAA,EAAiBA,EAAenD,WAAW,IAG1BiG,GAAa,KAEPC,EAIrBA,EAHF,GACEV,IAFIW,CAAAA,MAAiBD,CAAAA,EAAAA,EAAKE,MAAM,SAAXF,EAAa7C,KAAK,CAAC,IAAK,EAAE,CAAC,EAAE,CAACrD,WAAW,KAG9DmD,IAAmB+C,EAAKG,aAAa,CAACrG,WAAW,WACjDkG,CAAAA,EAAAA,EAAKhD,OAAO,SAAZgD,EAAc5C,IAAI,CAAC,GAAYC,EAAOvD,WAAW,KAAOmD,EAAAA,EAExD,OAAO+C,CAEX,CACF,EYUiK,MAAA5B,CAAAA,EAAA,KAAAT,EAAA,CAAAK,OAAA,CAAAa,UAAA,eAAAV,CAAAA,EAAAC,EAAAO,IAAA,SAAAR,EAAAiC,OAAA,CAAAd,GACjK,IAAAa,EAAA,OAAA9B,CAAAA,EAAA,KAAAV,EAAA,CAAAkC,YAAA,SAAAxB,EAAA8B,aAAA,UAAA5B,CAAAA,EAAA,KAAAZ,EAAA,CAAAK,OAAA,CAAAa,UAAA,eAAAP,CAAAA,EAAAC,EAAAI,IAAA,SAAAL,EAAA6B,aAAA,CACA,MAAAxC,EAAA,CAAA3D,GAAA,CAAAoC,QAAA,CAAAoC,EAAApC,QAAA,CACA,KAAAuB,EAAA,CAAAwC,aAAA,CAAAA,EACA,KAAAxC,EAAA,CAAAM,QAAA,CAAAO,EAAAP,QAAA,KACA,KAAAN,EAAA,CAAAwB,OAAA,CAAAX,EAAAW,OAAA,CACA,KAAAxB,EAAA,CAAAN,MAAA,CAAAmB,EAAAnB,MAAA,EAAA8C,EACA,KAAAxC,EAAA,CAAAiB,aAAA,CAAAJ,EAAAI,aAAA,CAEAyB,gBAAA,KLhCuC7B,MACjCpC,EKgCN,OLhCMA,EAAWkE,SDHfvE,CAAY,CACZsB,CAAuB,CACvB8C,CAAsB,CACtBI,CAAsB,EAItB,GAAI,CAAClD,GAAUA,IAAW8C,EAAe,OAAOpE,EAEhD,IAAMyE,EAAQzE,EAAKjC,WAAW,SAI9B,CAAKyG,IACCzD,EAAc0D,EAAO,SACrB1D,EAAc0D,EAAO,IAAInD,EAAOvD,WAAW,KADNiC,EAKpCU,EAAcV,EAAM,IAAIsB,EACjC,EChBImB,CAFmCA,EKiCF,CACrCP,SAAA,KAAAN,EAAA,CAAAM,QAAA,CACAkB,QAAA,KAAAxB,EAAA,CAAAwB,OAAA,CACAgB,cAAA,KAAAxC,EAAA,CAAAK,OAAA,CAAAyC,WAAA,CAAAnE,KAAAA,EAAA,KAAAqB,EAAA,CAAAwC,aAAA,CACA9C,OAAA,KAAAM,EAAA,CAAAN,MAAA,CACAjB,SAAA,KAAAuB,EAAA,CAAA3D,GAAA,CAAAoC,QAAA,CACAwC,cAAA,KAAAjB,EAAA,CAAAiB,aAAA,GLrCSxC,QAAQ,CACboC,EAAKnB,MAAM,CACXmB,EAAKW,OAAO,CAAG7C,KAAAA,EAAYkC,EAAK2B,aAAa,CAC7C3B,EAAK+B,YAAY,EAGf/B,CAAAA,EAAKW,OAAO,EAAI,CAACX,EAAKI,aAAa,GACrCxC,CAAAA,EAAWT,EAAoBS,EAAAA,EAG7BoC,EAAKW,OAAO,EACd/C,CAAAA,EAAWQ,EACTH,EAAcL,EAAU,eAAeoC,EAAKW,OAAO,EACnDX,MAAAA,EAAKpC,QAAQ,CAAW,aAAe,UAI3CA,EAAWK,EAAcL,EAAUoC,EAAKP,QAAQ,EACzC,CAACO,EAAKW,OAAO,EAAIX,EAAKI,aAAa,CACtC,EAAUE,QAAQ,CAAC,KAEjB1C,EADAQ,EAAcR,EAAU,KAE1BT,EAAoBS,EKiB1B,CACAsE,cAAA,CACA,YAAA/C,EAAA,CAAA3D,GAAA,CAAA2G,MAAA,CAEA,IAAAxB,SAAA,CACA,YAAAxB,EAAA,CAAAwB,OAAA,CAEA,IAAAA,QAAAA,CAAA,EACA,KAAAxB,EAAA,CAAAwB,OAAA,CAAAA,CACA,CACA,IAAA9B,QAAA,CACA,YAAAM,EAAA,CAAAN,MAAA,IACA,CACA,IAAAA,OAAAA,CAAA,EACA,IAAAc,EAAAC,EACA,SAAAT,EAAA,CAAAN,MAAA,UAAAe,CAAAA,EAAA,KAAAT,EAAA,CAAAK,OAAA,CAAAa,UAAA,eAAAV,CAAAA,EAAAC,EAAAO,IAAA,SAAAR,EAAAnB,OAAA,CAAA4D,QAAA,CAAAvD,EAAA,EACA,iEAAiFA,EAAO,GAExF,MAAAM,EAAA,CAAAN,MAAA,CAAAA,CACA,CACA,IAAA8C,eAAA,CACA,YAAAxC,EAAA,CAAAwC,aAAA,CAEA,IAAAN,cAAA,CACA,YAAAlC,EAAA,CAAAkC,YAAA,CAEA,IAAAgB,cAAA,CACA,YAAAlD,EAAA,CAAA3D,GAAA,CAAA6G,YAAA,CAEA,IAAApB,MAAA,CACA,YAAA9B,EAAA,CAAA3D,GAAA,CAAAyF,IAAA,CAEA,IAAAA,KAAA/I,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAAyF,IAAA,CAAA/I,CACA,CACA,IAAA4I,UAAA,CACA,YAAA3B,EAAA,CAAA3D,GAAA,CAAAsF,QAAA,CAEA,IAAAA,SAAA5I,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAAsF,QAAA,CAAA5I,CACA,CACA,IAAAoK,MAAA,CACA,YAAAnD,EAAA,CAAA3D,GAAA,CAAA8G,IAAA,CAEA,IAAAA,KAAApK,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAA8G,IAAA,CAAApK,CACA,CACA,IAAAqK,UAAA,CACA,YAAApD,EAAA,CAAA3D,GAAA,CAAA+G,QAAA,CAEA,IAAAA,SAAArK,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAA+G,QAAA,CAAArK,CACA,CACA,IAAAsK,MAAA,CACA,IAAA5E,EAAA,KAAAiE,cAAA,GACAM,EAAA,KAAAD,YAAA,GACA,SAAkB,KAAAK,QAAA,CAAc,IAAI,KAAAtB,IAAA,CAAU,EAAErD,EAAS,EAAEuE,EAAO,EAAE,KAAApE,IAAA,CAAU,EAE9E,IAAAyE,KAAAhH,CAAA,EACA,KAAA2D,EAAA,CAAA3D,GAAA,CAAAyD,EAAAzD,GACA,KAAAkE,OAAA,EACA,CACA,IAAA+C,QAAA,CACA,YAAAtD,EAAA,CAAA3D,GAAA,CAAAiH,MAAA,CAEA,IAAA7E,UAAA,CACA,YAAAuB,EAAA,CAAA3D,GAAA,CAAAoC,QAAA,CAEA,IAAAA,SAAA1F,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAAoC,QAAA,CAAA1F,CACA,CACA,IAAA6F,MAAA,CACA,YAAAoB,EAAA,CAAA3D,GAAA,CAAAuC,IAAA,CAEA,IAAAA,KAAA7F,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAAuC,IAAA,CAAA7F,CACA,CACA,IAAAiK,QAAA,CACA,YAAAhD,EAAA,CAAA3D,GAAA,CAAA2G,MAAA,CAEA,IAAAA,OAAAjK,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAA2G,MAAA,CAAAjK,CACA,CACA,IAAAwK,UAAA,CACA,YAAAvD,EAAA,CAAA3D,GAAA,CAAAkH,QAAA,CAEA,IAAAA,SAAAxK,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAAkH,QAAA,CAAAxK,CACA,CACA,IAAAyK,UAAA,CACA,YAAAxD,EAAA,CAAA3D,GAAA,CAAAmH,QAAA,CAEA,IAAAA,SAAAzK,CAAA,EACA,KAAAiH,EAAA,CAAA3D,GAAA,CAAAmH,QAAA,CAAAzK,CACA,CACA,IAAAuH,UAAA,CACA,YAAAN,EAAA,CAAAM,QAAA,CAEA,IAAAA,SAAAvH,CAAA,EACA,KAAAiH,EAAA,CAAAM,QAAA,CAAAvH,EAAAiG,UAAA,MAAAjG,EAAA,IAAsEA,EAAM,EAE5EkJ,UAAA,CACA,YAAAoB,IAAA,CAEAI,QAAA,CACA,YAAAJ,IAAA,CAEA,CAAArG,OAAA0G,GAAA,mCACA,OACAL,KAAA,KAAAA,IAAA,CACAC,OAAA,KAAAA,MAAA,CACAF,SAAA,KAAAA,QAAA,CACAI,SAAA,KAAAA,QAAA,CACAD,SAAA,KAAAA,QAAA,CACAzB,KAAA,KAAAA,IAAA,CACAH,SAAA,KAAAA,QAAA,CACAwB,KAAA,KAAAA,IAAA,CACA1E,SAAA,KAAAA,QAAA,CACAuE,OAAA,KAAAA,MAAA,CACAE,aAAA,KAAAA,YAAA,CACAtE,KAAA,KAAAA,IAAA,CAEA,CACA+E,OAAA,CACA,WAAA1D,EAAA3D,OAAA,WAAA0D,EAAA,CAAAK,OAAA,CACA,CACA,cE9KO,IAAAuD,EAAA5G,OAAA,mBAKI,OAAA6G,UAAAC,QACX/J,YAAAmG,CAAA,CAAA6D,EAAA,EAAgC,EAChC,IAAA1H,EAAA,iBAAA6D,GAAA,QAAAA,EAAAA,EAAA7D,GAAA,CAAAC,OAAA4D,GACQ9D,EAAWC,GACnB6D,aAAA4D,QAAA,MAAA5D,EAAA6D,GACA,MAAA1H,EAAA0H,GACA,IAAAC,EAAA,IAA4B/D,EAAO5D,EAAA,CACnCP,QAAqBD,EAAyB,KAAAC,OAAA,EAC9CoF,WAAA6C,EAAA7C,UAAA,EAEA,MAAA0C,EAAA,EACA5H,QAAA,IAAyBiI,EAAAC,cAAc,MAAApI,OAAA,EACvCqI,IAAAJ,EAAAI,GAAA,KACAC,GAAAL,EAAAK,EAAA,CACAJ,QAAAA,EACA3H,IAAqE2H,EAAA/B,QAAA,EACrE,CACA,CACA,CAAAjF,OAAA0G,GAAA,mCACA,OACA1H,QAAA,KAAAA,OAAA,CACAmI,IAAA,KAAAA,GAAA,CACAC,GAAA,KAAAA,EAAA,CACAJ,QAAA,KAAAA,OAAA,CACA3H,IAAA,KAAAA,GAAA,CAEAgI,SAAA,KAAAA,QAAA,CACAC,MAAA,KAAAA,KAAA,CACAC,YAAA,KAAAA,WAAA,CACAC,YAAA,KAAAA,WAAA,CACA1I,QAAAjD,OAAA4L,WAAA,MAAA3I,OAAA,EACA4I,UAAA,KAAAA,SAAA,CACAC,UAAA,KAAAA,SAAA,CACAC,OAAA,KAAAA,MAAA,CACAC,KAAA,KAAAA,IAAA,CACAC,SAAA,KAAAA,QAAA,CACAC,SAAA,KAAAA,QAAA,CACAC,eAAA,KAAAA,cAAA,CACAC,OAAA,KAAAA,MAAA,CAEA,CACA,IAAAjJ,SAAA,CACA,YAAA4H,EAAA,CAAA5H,OAAA,CAEA,IAAAmI,KAAA,CACA,YAAAP,EAAA,CAAAO,GAAA,CAEA,IAAAC,IAAA,CACA,YAAAR,EAAA,CAAAQ,EAAA,CAEA,IAAAJ,SAAA,CACA,YAAAJ,EAAA,CAAAI,OAAA,CAMA,IAAAhK,MAAA,CACA,UAAkBC,CAClB,CAKA,IAAAiL,IAAA,CACA,UAAkBhL,CAClB,CACA,IAAAmC,KAAA,CACA,YAAAuH,EAAA,CAAAvH,GAAA,CAEA,CC/EO,MAAA8I,EACP,OAAAhM,IAAAiM,CAAA,CAAA/L,CAAA,CAAAgM,CAAA,EACA,IAAAtM,EAAAuM,QAAAnM,GAAA,CAAAiM,EAAA/L,EAAAgM,SACA,mBAAAtM,EACAA,EAAAwM,IAAA,CAAAH,GAEArM,CACA,CACA,OAAAyM,IAAAJ,CAAA,CAAA/L,CAAA,CAAAN,CAAA,CAAAsM,CAAA,EACA,OAAAC,QAAAE,GAAA,CAAAJ,EAAA/L,EAAAN,EAAAsM,EACA,CACA,OAAAI,IAAAL,CAAA,CAAA/L,CAAA,EACA,OAAAiM,QAAAG,GAAA,CAAAL,EAAA/L,EACA,CACA,OAAAqM,eAAAN,CAAA,CAAA/L,CAAA,EACA,OAAAiM,QAAAI,cAAA,CAAAN,EAAA/L,EACA,CACA,CCZA,IAAMsM,EAAS3I,OAAA,qBACf4I,EAAA,IAAAC,IAAA,CACA,IACA,IACA,IACA,IACA,IACA,EACA,SAAAC,EAAA/B,CAAA,CAAAjI,CAAA,EACA,IAAAiK,EACA,GAAAhC,MAAAA,EAAA,aAAAgC,CAAAA,EAAAhC,EAAAjG,OAAA,SAAAiI,EAAAjK,OAAA,EACA,IAAAiI,CAAAA,EAAAjG,OAAA,CAAAhC,OAAA,YAAAkK,OAAA,EACA,8DAEA,IAAAC,EAAA,GACA,QAAAhK,EAAAlD,EAAA,GAAAgL,EAAAjG,OAAA,CAAAhC,OAAA,CACAA,EAAA0J,GAAA,yBAAAvJ,EAAAlD,GACAkN,EAAAtK,IAAA,CAAAM,GAEAH,EAAA0J,GAAA,iCAAAS,EAAArG,IAAA,MACA,CACA,CAKW,MAAAsG,UAAAC,SACXpM,YAAAqM,CAAA,CAAArC,EAAA,EAA+B,EAC/B,MAAAqC,EAAArC,GACA,IAAAjI,EAAA,KAAAA,OAAA,CAEAuK,EAAA,IAAAnN,MADA,IAA4B+K,EAAAqC,eAAe,CAAAxK,GAC3C,CACA3C,IAAAiM,CAAA,CAAA/L,CAAA,CAAAgM,CAAA,EACA,OAAAhM,GACA,aACA,UAEA,UAAAK,KACA,IAAAqH,EAAAuE,QAAA/L,KAAA,CAAA6L,CAAA,CAAA/L,EAAA,CAAA+L,EAAA1L,GACA6M,EAAA,IAAAP,QAAAlK,GAKA,OAJAiF,aAAsDkD,EAAAqC,eAAe,EACrExK,EAAA0J,GAAA,2BAAAzE,EAAAyF,MAAA,GAAAC,GAAA,IAAyG,GAAAxC,EAAAyC,eAAA,EAAeC,IAAA/G,IAAA,OAExHkG,EAAA/B,EAAAwC,GACAxF,CACA,CAEA,SACA,OAA+BoE,EAAchM,GAAA,CAAAiM,EAAA/L,EAAAgM,EAC7C,CACA,CACA,EACA,MAAaM,EAAS,EACtB3J,QAAAqK,EACAhK,IAAA0H,EAAA1H,GAAA,KAAgC4D,EAAO8D,EAAA1H,GAAA,EACvCP,QAAyBD,EAAyBC,GAClDoF,WAAA6C,EAAA7C,UAAA,GACavC,KAAAA,CACb,CACA,CACA,CAAA3B,OAAA0G,GAAA,mCACA,OACA1H,QAAA,KAAAA,OAAA,CACAK,IAAA,KAAAA,GAAA,CAEA+J,KAAA,KAAAA,IAAA,CACA/B,SAAA,KAAAA,QAAA,CACAvI,QAAAjD,OAAA4L,WAAA,MAAA3I,OAAA,EACA8K,GAAA,KAAAA,EAAA,CACAC,WAAA,KAAAA,UAAA,CACAC,OAAA,KAAAA,MAAA,CACAC,WAAA,KAAAA,UAAA,CACAC,KAAA,KAAAA,IAAA,CAEA,CACA,IAAAhL,SAAA,CACA,YAAoB2J,EAAS,CAAA3J,OAAA,CAE7B,OAAAiL,KAAAb,CAAA,CAAArC,CAAA,EACA,IAAAzG,EAAA6I,SAAAc,IAAA,CAAAb,EAAArC,GACA,WAAAmC,EAAA5I,EAAA8I,IAAA,CAAA9I,EACA,CACA,OAAAwH,SAAAzI,CAAA,CAAA0H,CAAA,EACA,IAAA+C,EAAA,iBAAA/C,EAAAA,EAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAA+C,MAAA,OACA,IAAAlB,EAAAH,GAAA,CAAAqB,GACA,oFAEA,IAAAI,EAAA,iBAAAnD,EAAAA,EAAA,GACAjI,EAAA,IAAAkK,QAAAkB,MAAAA,EAAA,OAAAA,EAAApL,OAAA,EAEA,OADAA,EAAA0J,GAAA,YAAgCpJ,EAAWC,IAC3C,IAAA6J,EAAA,MACA,GAAAgB,CAAA,CACApL,QAAAA,EACAgL,OAAAA,CACA,EACA,CACA,OAAAK,QAAA3C,CAAA,CAAAT,CAAA,EACA,IAAAjI,EAAA,IAAAkK,QAAAjC,MAAAA,EAAA,OAAAA,EAAAjI,OAAA,EAGA,OAFAA,EAAA0J,GAAA,wBAA4CpJ,EAAWoI,IACvDsB,EAAA/B,EAAAjI,GACA,IAAAoK,EAAA,MACA,GAAAnC,CAAA,CACAjI,QAAAA,CACA,EACA,CACA,OAAAsL,KAAArD,CAAA,EACA,IAAAjI,EAAA,IAAAkK,QAAAjC,MAAAA,EAAA,OAAAA,EAAAjI,OAAA,EAGA,OAFAA,EAAA0J,GAAA,0BACAM,EAAA/B,EAAAjI,GACA,IAAAoK,EAAA,MACA,GAAAnC,CAAA,CACAjI,QAAAA,CACA,EACA,CACA,CClHO,SAASuL,EAAchL,CAAoB,CAAE0D,CAAkB,EACpE,IAAMuH,EAAU,iBAAOvH,EAAoB,IAAIxD,IAAIwD,GAAQA,EACrDwH,EAAW,IAAIhL,IAAIF,EAAK0D,GACxBuD,EAASgE,EAAWlE,QAAQ,CAAC,KAAIkE,EAAQxF,IAAI,CACnD,OAAOyF,EAAYnE,QAAQ,CAAC,KAAImE,EAASzF,IAAI,GAAOwB,EAChDiE,EAAStF,QAAQ,GAAG/D,OAAO,CAACoF,EAAQ,IACpCiE,EAAStF,QAAQ,EACvB,CCJO,IAAMuF,EAAoB,CAC/B,CATwB,MASZ,CACZ,CAPoC,yBAOZ,CACxB,CAPyC,uBAOZ,CAC9B,CCXDC,EAAA,CACA,iBACA,eACA,kCACA,sBACA,mBDQoC,OCNpC,CACAC,GAAA,CACA,gBACA,OERWC,WAAA7N,MACXC,aAAA,CACA,2GACA,CACA,OAAA6N,UAAA,CACA,UAAAD,EACA,CACA,CACO,MAAAE,WAAA7B,QACPjM,YAAA+B,CAAA,EAGA,QACA,KAAAA,OAAA,KAAA5C,MAAA4C,EAAA,CACA3C,IAAAiM,CAAA,CAAA/L,CAAA,CAAAgM,CAAA,EAIA,oBAAAhM,EACA,OAA2B8L,EAAchM,GAAA,CAAAiM,EAAA/L,EAAAgM,GAEzC,IAAAyC,EAAAzO,EAAA8C,WAAA,GAIA4L,EAAAlP,OAAAoN,IAAA,CAAAnK,GAAAkM,IAAA,IAAAC,EAAA9L,WAAA,KAAA2L,GAEA,YAAAC,EAEA,OAAuB5C,EAAchM,GAAA,CAAAiM,EAAA2C,EAAA1C,EACrC,EACAG,IAAAJ,CAAA,CAAA/L,CAAA,CAAAN,CAAA,CAAAsM,CAAA,EACA,oBAAAhM,EACA,OAA2B8L,EAAcK,GAAA,CAAAJ,EAAA/L,EAAAN,EAAAsM,GAEzC,IAAAyC,EAAAzO,EAAA8C,WAAA,GAIA4L,EAAAlP,OAAAoN,IAAA,CAAAnK,GAAAkM,IAAA,IAAAC,EAAA9L,WAAA,KAAA2L,GAEA,OAAuB3C,EAAcK,GAAA,CAAAJ,EAAA2C,GAAA1O,EAAAN,EAAAsM,EACrC,EACAI,IAAAL,CAAA,CAAA/L,CAAA,EACA,oBAAAA,EAAA,OAAqD8L,EAAcM,GAAA,CAAAL,EAAA/L,GACnE,IAAAyO,EAAAzO,EAAA8C,WAAA,GAIA4L,EAAAlP,OAAAoN,IAAA,CAAAnK,GAAAkM,IAAA,IAAAC,EAAA9L,WAAA,KAAA2L,UAEA,SAAAC,GAEuB5C,EAAcM,GAAA,CAAAL,EAAA2C,EACrC,EACArC,eAAAN,CAAA,CAAA/L,CAAA,EACA,oBAAAA,EAAA,OAAqD8L,EAAcO,cAAA,CAAAN,EAAA/L,GACnE,IAAAyO,EAAAzO,EAAA8C,WAAA,GAIA4L,EAAAlP,OAAAoN,IAAA,CAAAnK,GAAAkM,IAAA,IAAAC,EAAA9L,WAAA,KAAA2L,UAEA,SAAAC,GAEuB5C,EAAcO,cAAA,CAAAN,EAAA2C,EACrC,CACA,EACA,CAIA,OAAAG,KAAApM,CAAA,EACA,WAAA5C,MAAA4C,EAAA,CACA3C,IAAAiM,CAAA,CAAA/L,CAAA,CAAAgM,CAAA,EACA,OAAAhM,GACA,aACA,aACA,UACA,OAAAsO,GAAAC,QAAA,SAEA,OAA+BzC,EAAchM,GAAA,CAAAiM,EAAA/L,EAAAgM,EAC7C,CACA,CACA,EACA,CAOA8C,MAAApP,CAAA,SACA,MAAAiJ,OAAA,CAAAjJ,GAAAA,EAAA6G,IAAA,OACA7G,CACA,CAMA,OAAAqP,KAAAtM,CAAA,SACA,aAAAkK,QAAAlK,EACA,IAAA+L,GAAA/L,EACA,CACAuM,OAAAC,CAAA,CAAAvP,CAAA,EACA,IAAAwP,EAAA,KAAAzM,OAAA,CAAAwM,EAAA,CACA,iBAAAC,EACA,KAAAzM,OAAA,CAAAwM,EAAA,EACAC,EACAxP,EACA,CACUgJ,MAAAC,OAAA,CAAAuG,GACVA,EAAA5M,IAAA,CAAA5C,GAEA,KAAA+C,OAAA,CAAAwM,EAAA,CAAAvP,CAEA,CACAyP,OAAAF,CAAA,EACA,YAAAxM,OAAA,CAAAwM,EAAA,CAEAnP,IAAAmP,CAAA,EACA,IAAAvP,EAAA,KAAA+C,OAAA,CAAAwM,EAAA,QACA,SAAAvP,EAAA,KAAAoP,KAAA,CAAApP,GACA,IACA,CACA0M,IAAA6C,CAAA,EACA,qBAAAxM,OAAA,CAAAwM,EAAA,CAEA9C,IAAA8C,CAAA,CAAAvP,CAAA,EACA,KAAA+C,OAAA,CAAAwM,EAAA,CAAAvP,CACA,CACA0P,QAAAC,CAAA,CAAAC,CAAA,EACA,QAAAL,EAAAvP,EAAA,QAAAmD,OAAA,GACAwM,EAAAE,IAAA,CAAAD,EAAA5P,EAAAuP,EAAA,KAEA,CACA,CAAApM,SAAA,CACA,QAAAD,KAAApD,OAAAoN,IAAA,MAAAnK,OAAA,GACA,IAAAwM,EAAArM,EAAAE,WAAA,GAGApD,EAAA,KAAAI,GAAA,CAAAmP,EACA,OACAA,EACAvP,EACA,CAEA,CACA,CAAAkN,MAAA,CACA,QAAAhK,KAAApD,OAAAoN,IAAA,MAAAnK,OAAA,GACA,IAAAwM,EAAArM,EAAAE,WAAA,EACA,OAAAmM,CACA,CACA,CACA,CAAAO,QAAA,CACA,QAAA5M,KAAApD,OAAAoN,IAAA,MAAAnK,OAAA,GAGA,IAAA/C,EAAA,KAAAI,GAAA,CAAA8C,EACA,OAAAlD,CACA,CACA,CACA,CAAAiE,OAAA8L,QAAA,IACA,YAAA5M,OAAA,EACA,CACA,CCvKA,IAAM6M,GAA2C,MAC/C,6EAGF,OAAMC,GAGJC,SAAgB,CACd,MAAMF,EACR,CAEAG,UAA8B,CAG9B,CAEAC,KAAY,CACV,MAAMJ,EACR,CAEAK,MAAa,CACX,MAAML,EACR,CAEAM,WAAkB,CAChB,MAAMN,EACR,CACF,CAEA,IAAMO,GAA+BrR,WAAoBsR,iBAAiB,CAEnE,SAASC,YAGd,GACS,IAAIF,GAEN,IAAIN,EACb,CCrCO,IAAMS,GACXD,IECS,OAAAE,WAAA5P,MACXC,aAAA,CACA,8KACA,CACA,OAAA6N,UAAA,CACA,UAAA8B,EACA,CACA,CACO,MAAAC,GACP,OAAAzB,KAAAlM,CAAA,EACA,WAAA9C,MAAA8C,EAAA,CACA7C,IAAAiM,CAAA,CAAA/L,CAAA,CAAAgM,CAAA,EACA,OAAAhM,GACA,YACA,aACA,UACA,OAAAqQ,GAAA9B,QAAA,SAEA,OAA+BzC,EAAchM,GAAA,CAAAiM,EAAA/L,EAAAgM,EAC7C,CACA,CACA,EACA,CACA,CACA,IAAAuE,GAAA5M,OAAA0G,GAAA,wBA4BO,OAAAmG,GACP,OAAAC,KAAA9N,CAAA,CAAA+N,CAAA,EACA,IAAAC,EAAA,IAAoC/F,EAAAqC,eAAe,KAAAN,SACnD,QAAAW,KAAA3K,EAAAwK,MAAA,GACAwD,EAAAxE,GAAA,CAAAmB,GAEA,IAAAsD,EAAA,GACAC,EAAA,IAAArE,IACAsE,EAAA,KAEA,IAAAC,EAA+CX,GAA4BP,QAAA,GAM3E,GALAkB,GACAA,CAAAA,EAAAC,kBAAA,KAGAJ,EAAAK,EADA9D,MAAA,GACA+D,MAAA,IAAAL,EAAAzE,GAAA,CAAA+E,EAAAlC,IAAA,GACAyB,EAAA,CACA,IAAAU,EAAA,GACA,QAAA9D,KAAAsD,EAAA,CACA,IAAAS,EAAA,IAA4CzG,EAAAqC,eAAe,KAAAN,SAC3D0E,EAAAlF,GAAA,CAAAmB,GACA8D,EAAA9O,IAAA,CAAA+O,EAAAzI,QAAA,GACA,CACA8H,EAAAU,EACA,CACA,EACA,WAAAvR,MAAA8Q,EAAA,CACA7Q,IAAAiM,CAAA,CAAA/L,CAAA,CAAAgM,CAAA,EACA,OAAAhM,GAEA,KAAAuQ,GACA,OAAAK,CAGA,cACA,mBAAAvQ,CAAA,EACAwQ,EAAAS,GAAA,kBAAAjR,CAAA,IAAAA,CAAA,IAAAA,CAAA,IAAA4O,IAAA,EACA,IACAlD,EAAAoD,MAAA,IAAA9O,EACA,QAA8B,CAC9ByQ,GACA,CACA,CACA,WACA,mBAAAzQ,CAAA,EACAwQ,EAAAS,GAAA,kBAAAjR,CAAA,IAAAA,CAAA,IAAAA,CAAA,IAAA4O,IAAA,EACA,IACA,OAAAlD,EAAAI,GAAA,IAAA9L,EACA,QAA8B,CAC9ByQ,GACA,CACA,CACA,SACA,OAA+BhF,EAAchM,GAAA,CAAAiM,EAAA/L,EAAAgM,EAC7C,CACA,CACA,EACA,CACA,EC5GA,SAAAlO,CAAA,EACAA,EAAA,yCACAA,EAAA,qBACAA,EAAA,uBACAA,EAAA,yCACAA,EAAA,2BACAA,EAAA,2EACAA,EAAA,+CACAA,EAAA,uCACAA,EAAA,qCACAA,EAAA,yDACAA,EAAA,iDACAA,EAAA,gCACA,EAACA,GAAAA,CAAAA,EAAA,KAED,SAAAC,CAAA,EACAA,EAAA,uEACAA,EAAA,8CACA,EAACA,GAAAA,CAAAA,EAAA,KAED,SAAAC,CAAA,EACAA,EAAA,iDACAA,EAAA,iCACAA,EAAA,6DACAA,EAAA,wCACA,EAACA,GAAAA,CAAAA,EAAA,KAED,SAAAC,CAAA,EACAA,EAAA,yCACAA,EAAA,uCACAA,EAAA,yDACAA,EAAA,+DACAA,EAAA,6DACAA,EAAA,2DACAA,EAAA,+DACAA,EAAA,2DACAA,EAAA,+DACAA,EAAA,mDACAA,EAAA,2CACAA,EAAA,+BACAA,EAAA,+BACAA,EAAA,uCACAA,EAAA,+CACAA,EAAA,yCACAA,EAAA,qDACAA,EAAA,uDACAA,EAAA,iDACAA,EAAA,uEACAA,EAAA,qDACAA,EAAA,2CACAA,EAAA,yCACAA,EAAA,qDACAA,EAAA,qCACAA,EAAA,6CAEAA,EAAA,cACAA,EAAA,wBACAA,EAAA,0BACAA,EAAA,6BACA,EAACA,GAAAA,CAAAA,EAAA,KAGDC,CACCA,GAAAA,CAAAA,EAAA,GAA0C,EAD3C,sCAGA,SAAAC,CAAA,EACAA,EAAA,+CACAA,EAAA,uCACAA,EAAA,uCACAA,EAAA,uCACAA,EAAA,0CACA,EAACA,GAAAA,CAAAA,EAAA,KAED,SAAAC,CAAA,EACAA,EAAA,0CACAA,EAAA,0DACAA,EAAA,wCACAA,EAAA,uBACA,EAACA,GAAAA,CAAAA,EAAA,KAGDC,CACCA,GAAAA,CAAAA,EAAA,GAAgC,EADjC,mCAIAkT,CACGjT,GAAaA,CAAAA,EAAQ,GAAK,EAD7B,6BAIAC,CACCA,GAAAA,CAAAA,EAAA,GAA8D,EAD/D,8CAGA,SAAAC,CAAA,EACAA,EAAA,oDACAA,EAAA,mDACA,EAACA,GAAAA,CAAAA,EAAA,KAGDC,CACCA,GAAAA,CAAAA,EAAA,GAAwC,EADzC,6BAGO,IAAA+S,GAAA,CACP,qBACA,2BACA,4BACA,wBACA,kBACA,0BACA,wBACA,kBACA,mCACA,mCACA,mCACA,qCACA,oCACA,uCACA,+BACA,wCACA,CAGOC,GAAA,CACP,oCACA,qCACA,wCACA,CClHA,CAAQC,QAAAA,EAAA,CAAAC,YAAAA,EAAA,CAAAC,MAAAA,EAAA,CAAAC,eAAAA,EAAA,CAAAC,SAAAA,EAAA,CAAAC,aAAAA,EAAA,EARRlU,EAAUwB,EAAQ,KASlB2S,GAAA,GACAC,OAAAA,GAAA,iBAAAA,GAAA,mBAAAA,EAAAC,IAAA,CAEAC,GAAA,CAAAC,EAAAjP,KACA,CAAAA,MAAAA,EAAA,OAAAA,EAAAkP,MAAA,OACAD,EAAAE,YAAA,oBAEAnP,GACAiP,EAAAG,eAAA,CAAApP,GAEAiP,EAAAI,SAAA,EACAC,KAAAZ,GAAAa,KAAA,CACA1T,QAAAmE,MAAAA,EAAA,OAAAA,EAAAnE,OAAA,IAGAoT,EAAAO,GAAA,EACA,EACAC,GAAA,IAAAC,IACAC,GAAAjV,EAAAkV,gBAAA,oBACAC,GAAA,EACAC,GAAA,IAAAD,IACA,OAAAE,GAKAC,mBAAA,CACA,OAAAvB,GAAAwB,SAAA,mBACA,CACAC,YAAA,CACA,OAAA3B,EACA,CACA4B,oBAAA,CACA,OAAA1B,GAAA2B,OAAA,CAAA7B,MAAAA,GAAA,OAAAA,GAAA8B,MAAA,GACA,CACAC,sBAAAC,CAAA,CAAAC,CAAA,CAAAC,CAAA,EACA,IAAAC,EAAAnC,GAAA8B,MAAA,GACA,GAAA5B,GAAAkC,cAAA,CAAAD,GAEA,OAAAF,IAEA,IAAAI,EAAApC,GAAAqC,OAAA,CAAAH,EAAAH,EAAAE,GACA,OAAAlC,GAAAuC,IAAA,CAAAF,EAAAJ,EACA,CACA/B,MAAA,GAAAvR,CAAA,EACA,IAAA6T,EACA,IAAAvG,EAAAwG,EAAAC,EAAA,CAAA/T,EAEA,CAAgBsT,GAAAA,CAAA,CAAA3M,QAAAA,CAAA,EAAc,mBAAAmN,EAAA,CAC9BR,GAAAQ,EACAnN,QAAA,EACA,EAAU,CACV2M,GAAAS,EACApN,QAAA,CACA,GAAAmN,CAAA,CAEA,EACAE,EAAArN,EAAAqN,QAAA,EAAA1G,EACA,IAAa6D,GAAwB5H,QAAA,CAAA+D,IAAAvO,MAAAA,QAAAG,GAAA,CAAA+U,iBAAA,EAAAtN,EAAAuN,QAAA,CACrC,OAAAZ,IAGA,IAAAa,EAAA,KAAAV,cAAA,EAAA9M,MAAAA,EAAA,OAAAA,EAAAyN,UAAA,QAAAnB,kBAAA,IACAoB,EAAA,GACAF,EAGU,OAAAN,CAAAA,EAAAtC,GAAAkC,cAAA,CAAAU,EAAA,SAAAN,EAAAS,QAAA,GACVD,CAAAA,EAAA,KAHAF,EAAA,CAAA9C,MAAAA,GAAA,OAAAA,GAAA8B,MAAA,KAAAzB,GACA2C,EAAA,IAIA,IAAAE,EAAA3B,KAMA,OALAjM,EAAA6N,UAAA,EACA,iBAAAR,EACA,iBAAA1G,EACA,GAAA3G,EAAA6N,UAAA,EAEAnD,GAAAuC,IAAA,CAAAO,EAAAM,QAAA,CAAAhC,GAAA8B,GAAA,SAAAzB,iBAAA,GAAA4B,eAAA,CAAAV,EAAArN,EAAA,IACA,IAAAgO,EAAA,gBAAApW,WAAAA,WAAAqW,WAAA,CAAAC,GAAA,GAAA5P,KAAAA,EACA6P,EAAA,KACAvC,GAAAzD,MAAA,CAAAyF,GACAI,GAAA5V,QAAAG,GAAA,CAAA6V,4BAAA,EAAiF3D,GAAgB7H,QAAA,CAAA+D,GAAA,KACjGsH,YAAAI,OAAA,IAA+CjW,QAAAG,GAAA,CAAA6V,4BAAA,CAAyC,QAAQ,CAAAzH,EAAAxH,KAAA,MAAAmP,GAAA,QAAAzQ,OAAA,iBAAA0Q,EAAAzS,WAAA,IAAoF,GACpLnB,MAAAqT,EACArC,IAAAsC,YAAAC,GAAA,EACA,EAEA,EACAR,GACA9B,GAAAzG,GAAA,CAAAyI,EAAA,IAAA/B,IAAArT,OAAAqD,OAAA,CAAAmE,EAAA6N,UAAA,QAEA,IACA,GAAAlB,EAAAxR,MAAA,GACA,OAAAwR,EAAAvB,EAAA,GAAAD,GAAAC,EAAArT,IAEA,IAAA2I,EAAAiM,EAAAvB,GACA,GAAAJ,GAAAtK,GAEA,OAAAA,EAAAwK,IAAA,KACAE,EAAAO,GAAA,GAGA6C,IACyBC,KAAA,KAEzB,MADAtD,GAAAC,EAAArT,GACAA,CACA,GAAyB2W,OAAA,CAAAP,GAKzB,OAHA/C,EAAAO,GAAA,GACAwC,IAEAzN,CACA,CAAkB,MAAA3I,EAAA,CAGlB,MAFAoT,GAAAC,EAAArT,GACAoW,IACApW,CACA,CACA,GACA,CACA0R,KAAA,GAAApQ,CAAA,EACA,IAAAsV,EAAA,KACA,CAAA1G,EAAAjI,EAAA2M,EAAA,CAAAtT,IAAAA,EAAA8B,MAAA,CAAA9B,EAAA,CACAA,CAAA,IACA,GACAA,CAAA,IACA,QACA,GAAqCuJ,QAAA,CAAAqF,IAAA7P,MAAAA,QAAAG,GAAA,CAAA+U,iBAAA,CAGrC,WACA,IAAAsB,EAAA5O,CACA,oBAAA4O,GAAA,mBAAAjC,GACAiC,CAAAA,EAAAA,EAAA1V,KAAA,MAAA2V,UAAA,EAEA,IAAAC,EAAAD,UAAA1T,MAAA,GACA4T,EAAAF,SAAA,CAAAC,EAAA,CACA,sBAAAC,EAUA,OAAAJ,EAAA/D,KAAA,CAAA3C,EAAA2G,EAAA,IAAAjC,EAAAzT,KAAA,MAAA2V,WAVA,EACA,IAAAG,EAAAL,EAAAtC,UAAA,GAAAnH,IAAA,CAAAwF,GAAA8B,MAAA,GAAAuC,GACA,OAAAJ,EAAA/D,KAAA,CAAA3C,EAAA2G,EAAA,CAAAK,EAAAC,KACAL,SAAA,CAAAC,EAAA,UAAA/W,CAAA,EAEA,OADAmX,MAAAA,GAAAA,EAAAnX,GACAiX,EAAA9V,KAAA,MAAA2V,UACA,EACAlC,EAAAzT,KAAA,MAAA2V,YAEA,CAGA,EArBAlC,CAsBA,CACAwC,UAAA,GAAA9V,CAAA,EACA,IAAAsN,EAAA3G,EAAA,CAAA3G,EACAmU,EAAA,KAAAV,cAAA,EAAA9M,MAAAA,EAAA,OAAAA,EAAAyN,UAAA,QAAAnB,kBAAA,IACA,YAAAH,iBAAA,GAAAgD,SAAA,CAAAxI,EAAA3G,EAAAwN,EACA,CACAV,eAAAW,CAAA,EAEA,OADAA,EAAA7C,GAAAwE,OAAA,CAAA1E,GAAA8B,MAAA,GAAAiB,GAAAnP,KAAAA,CAEA,CACA+Q,uBAAA,CACA,IAAAzB,EAAAlD,GAAA8B,MAAA,GAAA8C,QAAA,CAAAxD,IACA,OAAAF,GAAA9S,GAAA,CAAA8U,EACA,CACA,CACA,IAAM2B,GAAS,MACf,IAAAZ,EAAA,IAAAzC,GACA,UAAAyC,CACA,KCrIOa,GAAA,qBAGA7S,OAFA,uBAGAA,OAAA6S,GCvDA,OAAAC,GACP/V,YAAAgW,CAAA,CAAAC,CAAA,CAAAhU,CAAA,CAAAiU,CAAA,EACA,IAAAC,EAGA,IAAAC,EAAAJ,GAAqDK,SDoC9CJ,CAAA,CAAAD,CAAA,EACP,IAAAjU,EAAoB+L,GAAcO,IAAA,CAAA4H,EAAAlU,OAAA,EAIlC,OACAqU,qBAHAE,EADAlX,GAAA,C/B1CO,4B+B2CP4W,EAAAM,aAAA,CAIAC,wBAHAxU,EAAA2J,GAAA,C/B3CO,sC+B+CP,CACA,EC7C8EuK,EAAAD,GAAAI,oBAAA,CAC9EI,EAAA,MAAAL,CAAAA,EAAAlU,EAAA7C,GAAA,CAAwD0W,GAA4B,SAAAK,EAAAnX,KAAA,CACpF,KAAAyX,SAAA,CAAAC,CAAAA,CAAA,EAAAN,GAAAI,GAAAR,GAAAQ,IAAAR,EAAAM,aAAA,EAEA,KAAAK,cAAA,CAAAX,MAAAA,EAAA,OAAAA,EAAAM,aAAA,CACA,KAAAM,eAAA,CAAAV,CACA,CACAW,QAAA,CACA,SAAAF,cAAA,CACA,sFAEA,KAAAC,eAAA,CAAAnL,GAAA,EACA8C,KAAkBuH,GAClB9W,MAAA,KAAA2X,cAAA,CACAG,SAAA,GACAC,SAA4D,OAC5DC,OAAoB,GACpB3S,KAAA,GACA,EACA,CACA6K,SAAA,CAIA,KAAA0H,eAAA,CAAAnL,GAAA,EACA8C,KAAkBuH,GAClB9W,MAAA,GACA8X,SAAA,GACAC,SAA4D,OAC5DC,OAAoB,GACpB3S,KAAA,IACA4S,QAAA,IAAAC,KAAA,EACA,EACA,CACA,CCnBA,SAAAC,GAAAlB,CAAA,CAAAmB,CAAA,EACA,+BAAAnB,EAAAlU,OAAA,mBAAAkU,EAAAlU,OAAA,6BACA,IAAAsV,EAAApB,EAAAlU,OAAA,4BACAuV,EAAA,IAAArL,QACA,QAAAW,KAA6B7L,EAAkBsW,GAC/CC,EAAAhJ,MAAA,cAAA1B,GAIA,QAAAA,KAAAqD,IAFoC/F,EAAAqC,eAAe,CAAA+K,GAEnD7K,MAAA,GACA2K,EAAA3L,GAAA,CAAAmB,EAEA,CACA,CACO,IAAA2K,GAAA,CASPxH,KAAAyH,CAAA,EAAuBvB,IAAAA,CAAA,CAAAnB,IAAAA,CAAA,CAAA2C,WAAAA,CAAA,CAAsB,CAAAC,CAAA,MAC7C1B,EAKA,SAAA2B,EAAA1V,CAAA,EACA6S,GACAA,EAAA8C,SAAA,cAAA3V,EAEA,CARAwV,GAAA,iBAAAA,GAEAzB,CAAAA,EAAAyB,EAAAzB,YAAA,EAOA,IAAAzL,EAAA,GACAsN,EAAA,CACA,IAAA9V,SAAA,CAMA,OALAwI,EAAAxI,OAAA,EAGAwI,CAAAA,EAAAxI,OAAA,CAAA+V,SAvDA/V,CAAA,EACA,IAAAgW,EAAoBjK,GAAcO,IAAA,CAAAtM,GAClC,QAAAiW,KAAwBvK,EACxBsK,EAAAtJ,MAAA,CAAAuJ,EAAA9P,QAAA,GAAA9F,WAAA,IAEA,OAAW0L,GAAcK,IAAA,CAAA4J,EACzB,EAiDA9B,EAAAlU,OAAA,GAEAwI,EAAAxI,OAAA,EAEA,IAAAE,SAAA,CACA,IAAAsI,EAAAtI,OAAA,EAGA,IAAAgW,EAAA,IAA+C/N,EAAAC,cAAc,CAAC2D,GAAcO,IAAA,CAAA4H,EAAAlU,OAAA,GAC5EoV,GAAAlB,EAAAgC,GAGA1N,EAAAtI,OAAA,CAAoC2N,GAAqBzB,IAAA,CAAA8J,EACzD,CACA,OAAA1N,EAAAtI,OAAA,EAEA,IAAAiU,gBAAA,CACA,IAAA3L,EAAA2L,cAAA,EACA,IAAAA,EAAAgC,SAlEAnW,CAAA,CAAAiO,CAAA,EACA,IAAA/N,EAAA,IAAwBiI,EAAAC,cAAc,CAAC2D,GAAcO,IAAA,CAAAtM,IACrD,OAAW+N,GAA4BC,IAAA,CAAA9N,EAAA+N,EACvC,EA+DAiG,EAAAlU,OAAA,EAAA0V,MAAAA,EAAA,OAAAA,EAAAzH,eAAA,GAAA8E,CAAAA,EAAA6C,EAAA/S,KAAAA,CAAA,GACAuS,GAAAlB,EAAAC,GACA3L,EAAA2L,cAAA,CAAAA,CACA,CACA,OAAA3L,EAAA2L,cAAA,EAEA,IAAAiC,WAAA,CAIA,OAHA5N,EAAA4N,SAAA,EACA5N,CAAAA,EAAA4N,SAAA,KAA0CpC,GAAiBC,EAAAC,EAAA,KAAAhU,OAAA,MAAAiU,cAAA,GAE3D3L,EAAA4N,SAAA,EAEAC,sBAAA,CAAAX,MAAAA,EAAA,OAAAA,EAAAW,qBAAA,MACAC,YAAA,CAAAZ,MAAAA,EAAA,OAAAA,EAAAY,WAAA,KACA,EACA,OAAAb,EAAApI,GAAA,CAAAyI,EAAAH,EAAAG,EACA,CACA,EC7FaS,GACX7I,KEAS,SAAA8I,KACX,OACAjC,cAA4D5X,QAAAG,GAAA,CAAA2Z,sBAAA,CAC5DC,sBAAA/Z,QAAAG,GAAA,CAAA6Z,+BAAA,KACAC,yBAAAja,QAAAG,GAAA,CAAA+Z,kCAAA,IACA,CACA,CCOO,MAAAC,WAA8B/O,EACrC9J,YAAA8D,CAAA,EACA,MAAAA,EAAAqC,KAAA,CAAArC,EAAAkG,IAAA,EACA,KAAAhG,UAAA,CAAAF,EAAA7D,IAAA,CAEA,IAAA8D,SAAA,CACA,UAAkBjE,EAAkB,CACpCG,KAAA,KAAA+D,UAAA,EAEA,CACAV,aAAA,CACA,UAAkBxD,EAAkB,CACpCG,KAAA,KAAA+D,UAAA,EAEA,CACAL,WAAA,CACA,UAAkB7D,EAAkB,CACpCG,KAAA,KAAA+D,UAAA,EAEA,CACA,CACA,IAAA8U,GAAA,CACA5M,KAAA,GAAAlE,MAAAqG,IAAA,CAAAtM,EAAAmK,IAAA,IACA9M,IAAA,CAAA2C,EAAAG,IAAAH,EAAA3C,GAAA,CAAA8C,IAAA0C,KAAAA,CACA,EACAmU,GAAA,CAAAhV,EAAAkP,IAEAgC,KAAAlC,qBAAA,CAAAhP,EAAAhC,OAAA,CAAAkR,EAAA6F,IAEAE,GAAA,GAWO,eAAAC,GAAAnV,CAAA,MAiGPP,EACA2V,GAjGAC,WAVA,IAAAH,KACAA,GAAA,GACAta,SAAAA,QAAAG,GAAA,CAAAua,uBAAA,GACA,IAAoBC,kBAAAA,CAAA,CAAAC,mBAAAA,CAAA,EAA0C3a,EAAQ,KACtE0a,IACAN,GAAAO,EAAAP,GACA,CAEA,IAGA,MAAUva,IAEV,IAAA+a,EAAA,SAAAC,KAAAC,gBAAA,CACA3V,EAAAC,OAAA,CAAAzB,GAAA,CdJSA,EcI+ByB,OAAA,CAAAzB,GAAA,CdJ3B6B,OAAO,CAChB,cAEA,McEJ,IAAAuV,EAAA,IAA2BxT,EAAOpC,EAAAC,OAAA,CAAAzB,GAAA,EAClCP,QAAA+B,EAAAC,OAAA,CAAAhC,OAAA,CACAoF,WAAArD,EAAAC,OAAA,CAAAoD,UAAA,GAOA,QAAAjF,IAHA,IACAwX,EAAAvQ,YAAA,CAAA+C,IAAA,GACA,CACA,CACA,IAAAlN,EAAA0a,EAAAvQ,YAAA,CAAAsD,MAAA,CAAAvK,IACQyX,SpCsDGzX,CAAA,CAAA0X,CAAA,EAKX,QAAA5U,IAJA,CDjIO,OACA,OCmIP,CAEA9C,IAAA8C,GAAA9C,EAAA+C,UAAA,CAAAD,IAEA4U,EADA1X,EAAAL,SAAA,CAAAmD,EAAAvD,MAAA,EAIA,EoCjE+BS,EAAA,IAE/B,QAAA2X,KADAH,EAAAvQ,YAAA,CAAAsF,MAAA,CAAAqL,GACA9a,GACA0a,EAAAvQ,YAAA,CAAAmF,MAAA,CAAAwL,EAAAD,GAEAH,EAAAvQ,YAAA,CAAAsF,MAAA,CAAAvM,EACA,EACA,CAEA,IAAAuF,EAAAiS,EAAAjS,OAAA,CACAiS,EAAAjS,OAAA,IACA,IAAAsS,EAAAjW,EAAAC,OAAA,CAAAhC,OAAA,kBACAgY,GAAAL,WAAAA,EAAAhV,QAAA,EACAgV,CAAAA,EAAAhV,QAAA,MAEA,IAAAsV,EAA2BC,SpChFhBjY,CAAA,EACX,IAAAD,EAAA,IAAAkK,QACA,QAAA/J,EAAAlD,EAAA,GAAAF,OAAAqD,OAAA,CAAAH,GAIA,QAAAkY,KAHAlS,MAAAC,OAAA,CAAAjJ,GAAAA,EAAA,CACAA,EACA,CAEA,SAAAkb,IACA,iBAAAA,GACAA,CAAAA,EAAAA,EAAAhS,QAAA,IAEAnG,EAAAuM,MAAA,CAAApM,EAAAgY,IAGA,OAAAnY,CACA,EoCiEsD+B,EAAAC,OAAA,CAAAhC,OAAA,EACtDoY,EAAA,IAAAhI,IAEA,IAAAoH,EACA,QAAAvB,KAA4BvK,EAAiB,CAC7C,IAAAvL,EAAA8V,EAAA9P,QAAA,GAAA9F,WAAA,GACA4X,EAAA5a,GAAA,CAAA8C,KAEAiY,EAAA1O,GAAA,CAAAvJ,EAAA8X,EAAA5a,GAAA,CAAA8C,IACA8X,EAAAvL,MAAA,CAAAvM,GAEA,CAGA,IAAA6B,EAAA,IAAA8U,GAAA,CACA5Y,KAAA6D,EAAA7D,IAAA,CAEAkG,MAAeiU,CfzFR,SAAA9X,CAAA,CAAA+X,CAAA,EACP,IAAAC,EAAA,iBAAAhY,EACAiY,EAAAD,EAAA,IAAA9X,IAAAF,GAAAA,EACA,QAAAiM,KAAAb,EACA6M,EAAApR,YAAA,CAAAsF,MAAA,CAAAF,GAEA,GAAA8L,EACA,QAAA9L,KAAAZ,GACA4M,EAAApR,YAAA,CAAAsF,MAAA,CAAAF,GAGA,OAAA+L,EAAAC,EAAArS,QAAA,GAAAqS,CACA,GeyEqGb,EAI7D,IAAAxR,QAAA,GACxC8B,KAAA,CACAqC,KAAAvI,EAAAC,OAAA,CAAAsI,IAAA,CACAjC,IAAAtG,EAAAC,OAAA,CAAAqG,GAAA,CACArI,QAAAiY,EACA3P,GAAAvG,EAAAC,OAAA,CAAAsG,EAAA,CACAQ,OAAA/G,EAAAC,OAAA,CAAA8G,MAAA,CACA1D,WAAArD,EAAAC,OAAA,CAAAoD,UAAA,CACA+D,OAAApH,EAAAC,OAAA,CAAAmH,MAAA,CAEA,GAKA6O,GACAjb,OAAAC,cAAA,CAAAgF,EAAA,YACAnE,WAAA,GACAZ,MAAA,EACA,GAKA,CAAAd,WAAAsc,wBAAA,EAAA1W,EAAA2W,gBAAA,EACAvc,CAAAA,WAAAwc,kBAAA,KAAA5W,EAAA2W,gBAAA,EACAE,OAAA,GACAC,WAAA,GACAC,YAAyB,GACzBC,oBAAiC,GACjCC,IAAiB,GACjBf,eAAAlW,EAAAC,OAAA,CAAAhC,OAAA,CACAiZ,gBAAA,QACAC,qBAAA,IACA,EACAC,QAAA,GACAC,OAAA,GACAC,cAAA,GACAC,eAAA,GACAC,QAA6B/C,IAC7B,EAEA,EAAS,EAET,IAAAgD,EAAA,IAAsB1X,EAAc,CACpCE,QAAAA,EACA9D,KAAA6D,EAAA7D,IAAA,GA4BA,GAAAsD,CAxBAA,EAAA,MAAAwV,GAAAhV,EAAA,IAGA,gBADAD,EAAA7D,IAAA,EAAA6D,oBAAAA,EAAA7D,IAAA,CAEmB4V,KAAS3E,KAAA,CAASnT,EAAcyd,OAAA,EACnD7H,SAAA,cAAwC5P,EAAA8G,MAAA,EAAgB,EAAE9G,EAAAkG,OAAA,CAAAvF,QAAA,CAAyB,EACnFyP,WAAA,CACA,cAAApQ,EAAAkG,OAAA,CAAAvF,QAAA,CACA,cAAAX,EAAA8G,MAAA,CAEA,EAAa,IAAM0M,GAA0BxH,IAAA,CAAM0L,GAAmB,CACtExF,IAAAlS,EACA0T,WAAA,CACAzH,gBAAA,IACAkJ,EAAAjX,CACA,EAEA+T,aAAsCuC,IACtC,CACA,EAAiB,IAAAzU,EAAA4X,OAAA,CAAA3X,EAAAwX,KAEjBzX,EAAA4X,OAAA,CAAA3X,EAAAwX,GACK,GAEL,CAAAhY,CAAAA,aAAA6I,QAAA,EACA,mEAEA7I,GAAA2V,GACA3V,EAAAxB,OAAA,CAAA0J,GAAA,cAAAyN,GAOA,IAAA9L,EAAA7J,MAAAA,EAAA,OAAAA,EAAAxB,OAAA,CAAA3C,GAAA,yBACA,GAAAmE,GAAA6J,GAAA,CAAAmM,EAAA,CACA,IAAAoC,EAAA,IAA+BzV,EAAOkH,EAAA,CACtCrE,YAAA,GACAhH,QAAA+B,EAAAC,OAAA,CAAAhC,OAAA,CACAoF,WAAArD,EAAAC,OAAA,CAAAoD,UAAA,EAGAwU,CAAAA,EAAA5T,IAAA,GAAAhE,EAAAkG,OAAA,CAAAlC,IAAA,GACA4T,EAAAlU,OAAA,CAAAA,GAAAkU,EAAAlU,OAAA,CACAlE,EAAAxB,OAAA,CAAA0J,GAAA,wBAAAlJ,OAAAoZ,KAOA,IAAAC,EAAmCtO,EAAa/K,OAAAoZ,GAAApZ,OAAAmX,IAChDK,GAIAxW,EAAAxB,OAAA,CAAA0J,GAAA,oBAAAmQ,EAEA,CAKA,IAAA7Q,EAAAxH,MAAAA,EAAA,OAAAA,EAAAxB,OAAA,CAAA3C,GAAA,aACA,GAAAmE,GAAAwH,GAAA,CAAAwO,EAAA,CACA,IAAAsC,EAAA,IAAgC3V,EAAO6E,EAAA,CACvChC,YAAA,GACAhH,QAAA+B,EAAAC,OAAA,CAAAhC,OAAA,CACAoF,WAAArD,EAAAC,OAAA,CAAAoD,UAAA,GAKA5D,EAAA,IAAA6I,SAAA7I,EAAA8I,IAAA,CAAA9I,GAEAsY,EAAA9T,IAAA,GAAAhE,EAAAkG,OAAA,CAAAlC,IAAA,GACA8T,EAAApU,OAAA,CAAAA,GAAAoU,EAAApU,OAAA,CACAlE,EAAAxB,OAAA,CAAA0J,GAAA,YAAAlJ,OAAAsZ,KAOA9B,IACAxW,EAAAxB,OAAA,CAAA0M,MAAA,aACAlL,EAAAxB,OAAA,CAAA0J,GAAA,qBAAsD6B,EAAa/K,OAAAsZ,GAAAtZ,OAAAmX,KAEnE,CACA,IAAAoC,EAAAvY,GAAgD4I,EAAYkB,IAAA,GAE5D0O,EAAAD,EAAA/Z,OAAA,CAAA3C,GAAA,kCACA4c,EAAA,GACA,GAAAD,EAAA,CACA,QAAA7Z,EAAAlD,EAAA,GAAAmb,EACA2B,EAAA/Z,OAAA,CAAA0J,GAAA,yBAA8DvJ,EAAI,EAAAlD,GAClEgd,EAAApa,IAAA,CAAAM,EAEA8Z,CAAAA,EAAAva,MAAA,IACAqa,EAAA/Z,OAAA,CAAA0J,GAAA,iCAAAsQ,EAAA,IAAAC,EAAAnW,IAAA,MAEA,CACA,OACAtC,SAAAuY,EACAnY,UAAAH,QAAAyY,GAAA,CAAAV,CAAA,CAAqCpY,EAAe,EACpD+Y,aAAAnY,EAAAmY,YAAA,CAEA,QEvQA,oBAAAC,YAAAA,WGQA,IAAMC,GAAkB,CACtB,aACA,WACA,YACA,SACD,CAGKC,GAAa,CACjB,SACA,UACA,cACA,iBACD,CAGKC,GAAe,CACnB,IACA,WACA,SACA,WACA,kBACA,mBACD,CAEM,SAAS7b,GAAWsD,CAAoB,EAC7C,GAAM,CAAEW,SAAAA,CAAQ,CAAE,CAAGX,EAAQkG,OAAO,CAGpC,GAAIvF,EAASO,UAAU,CAAC,UAKFqX,GAAa5W,IAAI,CAAC,GACtChB,IAAaR,GAASQ,EAASO,UAAU,CAACf,EAAQ,MALlD,OAAOiI,EAAakB,IAAI,GAc1B,IAAMkP,EAAkB,CAAC,CADJxY,EAAQ9B,OAAO,CAAC7C,GAAG,CAAC,6BAInCod,EAAmBJ,GAAgB1W,IAAI,CAAC,GAC5ChB,EAASO,UAAU,CAACf,IAIhBuY,EAAcJ,GAAW3W,IAAI,CAAC,GAClChB,EAASO,UAAU,CAACf,IAItB,GAAIsY,GAAoB,CAACD,EAAiB,CACxC,IAAMG,EAAW,IAAIla,IAAI,SAAUuB,EAAQzB,GAAG,EAE9C,OADAoa,EAASvT,YAAY,CAACsC,GAAG,CAAC,WAAY/G,GAC/ByH,EAAapB,QAAQ,CAAC2R,EAC/B,QAGA,GAAmBH,EACVpQ,EAAapB,QAAQ,CAAC,IAAIvI,IAAI,aAAcuB,EAAQzB,GAAG,GAGzD6J,EAAakB,IAAI,EAC1B,CAEO,IAAMsP,GAAS,CACpBC,QAAS,CAQP,uDACD,ECtFHC,GAAA,CACA,GAAOC,CAAI,EAEXpB,GAAAmB,GAAApc,UAAA,EAAAoc,GAAAE,OAAA,CACA9c,GAAA,kBACA,sBAAAyb,GACA,+BAAuCzb,GAAK,2DAE7B,SAAA+c,GAAA3W,CAAA,EACf,OAAW4S,GAAO,CAClB,GAAA5S,CAAA,CACApG,KAAAA,GACAyb,QAAAA,EACA,EACA,wBCjBA,IAAAuB,EAAAne,OAAAC,cAAA,CACAme,EAAApe,OAAAqe,wBAAA,CACAC,EAAAte,OAAAue,mBAAA,CACAC,EAAAxe,OAAAye,SAAA,CAAAC,cAAA,CAgBAC,EAAA,GAWA,SAAA9Q,EAAA8D,CAAA,EACA,IAAAiN,EACA,IAAAC,EAAA,CACA,SAAAlN,GAAAA,EAAApM,IAAA,UAAqCoM,EAAApM,IAAA,CAAO,EAC5C,YAAAoM,GAAAA,CAAAA,EAAAwG,OAAA,EAAAxG,IAAAA,EAAAwG,OAAA,cAAmE,kBAAAxG,EAAAwG,OAAA,KAAAC,KAAAzG,EAAAwG,OAAA,EAAAxG,EAAAwG,OAAA,EAAA2G,WAAA,GAAgF,EACnJ,WAAAnN,GAAA,iBAAAA,EAAAoN,MAAA,aAAgEpN,EAAAoN,MAAA,CAAS,EACzE,WAAApN,GAAAA,EAAAjI,MAAA,YAA2CiI,EAAAjI,MAAA,CAAS,EACpD,WAAAiI,GAAAA,EAAAuG,MAAA,WACA,aAAAvG,GAAAA,EAAAqG,QAAA,aACA,aAAArG,GAAAA,EAAAsG,QAAA,cAAiDtG,EAAAsG,QAAA,CAAW,EAC5D,gBAAAtG,GAAAA,EAAAqN,WAAA,gBACA,aAAArN,GAAAA,EAAAsN,QAAA,cAAiDtN,EAAAsN,QAAA,CAAW,EAC5D,CAAAvN,MAAA,CAAAkG,SACAsH,EAAA,GAAyBvN,EAAAlC,IAAA,CAAO,GAAG0P,mBAAA,MAAAP,CAAAA,EAAAjN,EAAAzR,KAAA,EAAA0e,EAAA,IAAqD,EACxF,OAAAC,IAAAA,EAAAlc,MAAA,CAAAuc,EAAA,GAA+CA,EAAA,EAAc,EAAEL,EAAA9X,IAAA,OAAiB,EAEhF,SAAAqY,EAAAtR,CAAA,EACA,IAAAF,EAAA,IAAAyF,IACA,QAAAgM,KAAAvR,EAAAnH,KAAA,QAAqC,CACrC,IAAA0Y,EACA,SACA,IAAAC,EAAAD,EAAA5Z,OAAA,MACA,GAAA6Z,KAAAA,EAAA,CACA1R,EAAAjB,GAAA,CAAA0S,EAAA,QACA,QACA,CACA,IAAAjc,EAAAlD,EAAA,EAAAmf,EAAArZ,KAAA,GAAAsZ,GAAAD,EAAArZ,KAAA,CAAAsZ,EAAA,IACA,IACA1R,EAAAjB,GAAA,CAAAvJ,EAAAmc,mBAAArf,MAAAA,EAAAA,EAAA,QACA,CAAM,MACN,CACA,CACA,OAAA0N,CACA,CACA,SAAA4R,EAAAC,CAAA,MA2CAC,EAKAA,EA/CA,IAAAD,EACA,OAEA,KAAAhQ,EAAAvP,EAAA,IAAAmV,EAAA,CAAA+J,EAAAK,GACA,CACA/V,OAAAA,CAAA,CACAyO,QAAAA,CAAA,CACAwH,SAAAA,CAAA,CACAC,OAAAA,CAAA,CACAra,KAAAA,CAAA,CACAsa,SAAAA,CAAA,CACA3H,OAAAA,CAAA,CACA8G,YAAAA,CAAA,CACAC,SAAAA,CAAA,CACA,CAAIjf,OAAA4L,WAAA,CACJyJ,EAAAzH,GAAA,GAAAxK,EAAA0c,EAAA,IAAA1c,EAAAE,WAAA,GAAAwc,EAAA,GAeA,OAAAC,SAEAC,CAAA,EACA,IAAAC,EAAA,GACA,QAAA7c,KAAA4c,EACAA,CAAA,CAAA5c,EAAA,EACA6c,CAAAA,CAAA,CAAA7c,EAAA,CAAA4c,CAAA,CAAA5c,EAAA,EAGA,OAAA6c,CACA,EAvBA,CACAxQ,KAAAA,EACAvP,MAAAqf,mBAAArf,GACAwJ,OAAAA,EACA,GAAAyO,GAAA,CAAoBA,QAAA,IAAAC,KAAAD,EAAA,CAA4B,CAChD,GAAAwH,GAAA,CAAqB3H,SAAA,GAAgB,CACrC,oBAAA4H,GAAA,CAAuCb,OAAAmB,OAAAN,EAAA,CAAwB,CAC/Dra,KAAAA,EACA,GAAAsa,GAAA,CAAqB5H,SAmBrBkI,EAAA/V,QAAA,CADAsV,EAAAA,CADAA,EAjBqBG,GAkBrBvc,WAAA,IACAoc,EAAA,MAnBqB,CAAmC,CACxD,GAAAxH,GAAA,CAAmBA,OAAA,GAAc,CACjC,GAAA+G,GAAA,CAAqBA,SAsBrBmB,EAAAhW,QAAA,CADAsV,EAAAA,CADAA,EApBqBT,GAqBrB3b,WAAA,IACAoc,EAAA,MAtBqB,CAAmC,CACxD,GAAAV,GAAA,CAAwBA,YAAA,KAGxB,CA5EAqB,CAhBA,CAAA9T,EAAA4Q,KACA,QAAA1N,KAAA0N,EACAgB,EAAA5R,EAAAkD,EAAA,CAA8BnP,IAAA6c,CAAA,CAAA1N,EAAA,CAAA3O,WAAA,IAC9B,GAaA6d,EAAA,CACAtT,eAAA,IAAAA,EACAoC,gBAAA,IAAAA,EACA2R,YAAA,IAAAA,EACAI,eAAA,IAAAA,EACA3R,gBAAA,IAAAA,CACA,GACA3P,EAAAC,OAAA,CAXAmiB,CARA,CAAAC,EAAAhR,EAAAiR,EAAAC,KACA,GAAAlR,GAAA,iBAAAA,GAAA,mBAAAA,EACA,QAAAnM,KAAAkb,EAAA/O,GACAiP,EAAAzO,IAAA,CAAAwQ,EAAAnd,IAAAA,IAAAod,GACArC,EAAAoC,EAAAnd,EAAA,CAA6B9C,IAAA,IAAAiP,CAAA,CAAAnM,EAAA,CAAAtC,WAAA,CAAA2f,CAAAA,EAAArC,EAAA7O,EAAAnM,EAAA,GAAAqd,EAAA3f,UAAA,GAE7B,OAAAyf,CACA,GACApC,EAAA,GAAoD,cAAkBje,MAAA,KAWtEye,GA+EA,IAAAwB,EAAA,wBAKAC,EAAA,wBA0DA/U,EAAA,MACAnK,YAAAga,CAAA,EAEA,KAAAwF,OAAA,KAAArN,IACA,KAAAsN,QAAA,CAAAzF,EACA,IAAA0F,EAAA1F,EAAA5a,GAAA,WACA,GAAAsgB,EAEA,QAAAnR,EAAAvP,EAAA,GADAkf,EAAAwB,GAEA,KAAAF,OAAA,CAAA/T,GAAA,CAAA8C,EAAA,CAAiCA,KAAAA,EAAAvP,MAAAA,CAAA,EAGjC,CACA,CAAAiE,OAAA8L,QAAA,IACA,YAAAyQ,OAAA,CAAAvc,OAAA8L,QAAA,GACA,CAIA,IAAA4Q,MAAA,CACA,YAAAH,OAAA,CAAAG,IAAA,CAEAvgB,IAAA,GAAAO,CAAA,EACA,IAAA4O,EAAA,iBAAA5O,CAAA,IAAAA,CAAA,IAAAA,CAAA,IAAA4O,IAAA,CACA,YAAAiR,OAAA,CAAApgB,GAAA,CAAAmP,EACA,CACA9B,OAAA,GAAA9M,CAAA,EACA,IAAA+d,EACA,IAAAzB,EAAAjU,MAAAqG,IAAA,MAAAmR,OAAA,EACA,IAAA7f,EAAA8B,MAAA,CACA,OAAAwa,EAAAvP,GAAA,GAAAkT,EAAA5gB,EAAA,GAAAA,GAEA,IAAAuP,EAAA,iBAAA5O,CAAA,IAAAA,CAAA,UAAA+d,CAAAA,EAAA/d,CAAA,YAAA+d,EAAAnP,IAAA,CACA,OAAA0N,EAAAzL,MAAA,GAAAqP,EAAA,GAAAA,IAAAtR,GAAA7B,GAAA,GAAAkT,EAAA5gB,EAAA,GAAAA,EACA,CACA0M,IAAA6C,CAAA,EACA,YAAAiR,OAAA,CAAA9T,GAAA,CAAA6C,EACA,CACA9C,IAAA,GAAA9L,CAAA,EACA,IAAA4O,EAAAvP,EAAA,CAAAW,IAAAA,EAAA8B,MAAA,EAAA9B,CAAA,IAAA4O,IAAA,CAAA5O,CAAA,IAAAX,KAAA,EAAAW,EACA+M,EAAA,KAAA8S,OAAA,CAMA,OALA9S,EAAAjB,GAAA,CAAA8C,EAAA,CAAoBA,KAAAA,EAAAvP,MAAAA,CAAA,GACpB,KAAAygB,QAAA,CAAAhU,GAAA,CACA,SACAzD,MAAAqG,IAAA,CAAA3B,GAAAA,GAAA,GAAAkT,EAAAhB,EAAA,GAAAjS,EAAAiS,IAAA/Y,IAAA,QAEA,KAKA4I,OAAAqR,CAAA,EACA,IAAApT,EAAA,KAAA8S,OAAA,CACAxY,EAAA,MAAAiB,OAAA,CAAA6X,GAAAA,EAAApT,GAAA,IAAAA,EAAA+B,MAAA,CAAAF,IAAA7B,EAAA+B,MAAA,CAAAqR,GAKA,OAJA,KAAAL,QAAA,CAAAhU,GAAA,CACA,SACAzD,MAAAqG,IAAA,CAAA3B,GAAAA,GAAA,GAAAkT,EAAA5gB,EAAA,GAAA2N,EAAA3N,IAAA6G,IAAA,QAEAmB,CACA,CAIA+Y,OAAA,CAEA,OADA,KAAAtR,MAAA,CAAAzG,MAAAqG,IAAA,MAAAmR,OAAA,CAAAtT,IAAA,KACA,KAKA,CAAAjJ,OAAA0G,GAAA,mCACA,wBAA6BqW,KAAAC,SAAA,CAAAnhB,OAAA4L,WAAA,MAAA8U,OAAA,GAAiD,EAE9EtX,UAAA,CACA,eAAAsX,OAAA,CAAA1Q,MAAA,IAAApC,GAAA,OAAoDwN,EAAA3L,IAAA,CAAO,GAAG0P,mBAAA/D,EAAAlb,KAAA,EAA4B,GAAA6G,IAAA,MAC1F,CACA,EAGA0G,EAAA,MACAvM,YAAAsX,CAAA,MAGAoG,EAAAwC,EAAAC,CADA,MAAAX,OAAA,KAAArN,IAEA,KAAAsN,QAAA,CAAAnI,EACA,IAAAiH,EAAA,MAAA4B,CAAAA,EAAA,MAAAD,CAAAA,EAAA,MAAAxC,CAAAA,EAAApG,EAAA8I,YAAA,SAAA1C,EAAA7O,IAAA,CAAAyI,EAAA,EAAA4I,EAAA5I,EAAAlY,GAAA,gBAAA+gB,EAAA,GAEA,QAAAE,KADArY,MAAAC,OAAA,CAAAsW,GAAAA,EAAAxd,SA3IAC,CAAA,EACA,IAAAA,EACA,SACA,IAEAC,EACAC,EACAC,EACAC,EACAC,EANAC,EAAA,GACAC,EAAA,EAMA,SAAAC,IACA,KAAAD,EAAAP,EAAAS,MAAA,OAAAC,IAAA,CAAAV,EAAAW,MAAA,CAAAJ,KACAA,GAAA,EAEA,OAAAA,EAAAP,EAAAS,MAAA,CAMA,KAAAF,EAAAP,EAAAS,MAAA,GAGA,IAFAR,EAAAM,EACAF,EAAA,GACAG,KAEA,GAAAN,MADAA,CAAAA,EAAAF,EAAAW,MAAA,CAAAJ,EAAA,EACA,CAKA,IAJAJ,EAAAI,EACAA,GAAA,EACAC,IACAJ,EAAAG,EACAA,EAAAP,EAAAS,MAAA,EAZAP,MADAA,CAAAA,EAAAF,EAAAW,MAAA,CAAAJ,EAAA,GACAL,MAAAA,GAAkCA,MAAAA,GAalCK,GAAA,CAEAA,CAAAA,EAAAP,EAAAS,MAAA,EAAAT,MAAAA,EAAAW,MAAA,CAAAJ,IACAF,EAAA,GACAE,EAAAH,EACAE,EAAAM,IAAA,CAAAZ,EAAAa,SAAA,CAAAZ,EAAAE,IACAF,EAAAM,GAEAA,EAAAJ,EAAA,CAEA,MACAI,GAAA,EAGA,EAAAF,GAAAE,GAAAP,EAAAS,MAAA,GACAH,EAAAM,IAAA,CAAAZ,EAAAa,SAAA,CAAAZ,EAAAD,EAAAS,MAAA,EAEA,CACA,OAAAH,CACA,EAyFAid,GACA,CACA,IAAAzW,EAAAwW,EAAA+B,GACAvY,GACA,KAAA0X,OAAA,CAAA/T,GAAA,CAAA3D,EAAAyG,IAAA,CAAAzG,EACA,CACA,CAIA1I,IAAA,GAAAO,CAAA,EACA,IAAAuC,EAAA,iBAAAvC,CAAA,IAAAA,CAAA,IAAAA,CAAA,IAAA4O,IAAA,CACA,YAAAiR,OAAA,CAAApgB,GAAA,CAAA8C,EACA,CAIAuK,OAAA,GAAA9M,CAAA,EACA,IAAA+d,EACA,IAAAzB,EAAAjU,MAAAqG,IAAA,MAAAmR,OAAA,CAAA1Q,MAAA,IACA,IAAAnP,EAAA8B,MAAA,CACA,OAAAwa,EAEA,IAAA/Z,EAAA,iBAAAvC,CAAA,IAAAA,CAAA,UAAA+d,CAAAA,EAAA/d,CAAA,YAAA+d,EAAAnP,IAAA,CACA,OAAA0N,EAAAzL,MAAA,IAAAC,EAAAlC,IAAA,GAAArM,EACA,CACAwJ,IAAA6C,CAAA,EACA,YAAAiR,OAAA,CAAA9T,GAAA,CAAA6C,EACA,CAIA9C,IAAA,GAAA9L,CAAA,EACA,IAAA4O,EAAAvP,EAAA4N,EAAA,CAAAjN,IAAAA,EAAA8B,MAAA,EAAA9B,CAAA,IAAA4O,IAAA,CAAA5O,CAAA,IAAAX,KAAA,CAAAW,CAAA,KAAAA,EACA+M,EAAA,KAAA8S,OAAA,CAGA,OAFA9S,EAAAjB,GAAA,CAAA8C,EAAA+R,SAyBA1T,EAAA,CAAoC2B,KAAA,GAAAvP,MAAA,GAAqB,EAUzD,MATA,iBAAA4N,EAAAqK,OAAA,EACArK,CAAAA,EAAAqK,OAAA,KAAAC,KAAAtK,EAAAqK,OAAA,GAEArK,EAAAiR,MAAA,EACAjR,CAAAA,EAAAqK,OAAA,KAAAC,KAAAA,KAAA1C,GAAA,GAAA5H,IAAAA,EAAAiR,MAAA,GAEAjR,CAAAA,OAAAA,EAAAvI,IAAA,EAAAuI,KAAA,IAAAA,EAAAvI,IAAA,GACAuI,CAAAA,EAAAvI,IAAA,MAEAuI,CACA,EApCA,CAAoC2B,KAAAA,EAAAvP,MAAAA,EAAA,GAAA4N,CAAA,IACpCzI,SAiBAoc,CAAA,CAAAxe,CAAA,EAEA,SAAA/C,EAAA,GADA+C,EAAA0M,MAAA,eACA8R,GAAA,CACA,IAAAC,EAAA7T,EAAA3N,GACA+C,EAAAuM,MAAA,cAAAkS,EACA,CACA,EAvBA9T,EAAA,KAAA+S,QAAA,EACA,KAKAhR,OAAA,GAAA9O,CAAA,EACA,IAAA4O,EAAAlK,EAAAmE,EAAA,kBAAA7I,CAAA,KAAAA,CAAA,MAAAA,CAAA,IAAA4O,IAAA,CAAA5O,CAAA,IAAA0E,IAAA,CAAA1E,CAAA,IAAA6I,MAAA,EACA,YAAAiD,GAAA,EAAsB8C,KAAAA,EAAAlK,KAAAA,EAAAmE,OAAAA,EAAAxJ,MAAA,GAAAiY,QAAA,IAAAC,KAAA,IACtB,CACA,CAAAjU,OAAA0G,GAAA,mCACA,yBAA8BqW,KAAAC,SAAA,CAAAnhB,OAAA4L,WAAA,MAAA8U,OAAA,GAAiD,EAE/EtX,UAAA,CACA,eAAAsX,OAAA,CAAA1Q,MAAA,IAAApC,GAAA,CAAAC,GAAA9G,IAAA,MACA,CACA,iBCpTA,MAAM,aAAa,IAAA4a,EAAA,CAAO,KAAAA,EAAA3B,EAAA4B,KAAc5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA6B,UAAA,QAAoB,IAAAd,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAA,UAAkBpQ,EAAA,IAAAoP,EAAAiB,kBAAA,OAAiCH,EAAiB3gB,aAAA,EAAe,OAAA+gB,aAAA,CAAuE,OAAlD,KAAAC,SAAA,EAAoB,MAAAA,SAAA,KAAAL,CAAA,EAA8B,KAAAK,SAAA,CAAsBC,wBAAAR,CAAA,EAA2B,SAAAG,EAAAM,cAAA,EAAAL,EAAAJ,EAAAvS,EAAAiT,OAAA,CAAA5G,QAAA,IAAqDzH,QAAA,CAAS,YAAAsO,kBAAA,GAAAtO,MAAA,GAA0CS,KAAAkN,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,IAAAb,CAAA,EAAiB,YAAAuB,kBAAA,GAAA7N,IAAA,CAAAkN,EAAA3B,EAAA4B,KAAAb,EAAA,CAAkDrU,KAAAiV,CAAA,CAAA3B,CAAA,EAAU,YAAAsC,kBAAA,GAAA5V,IAAA,CAAAiV,EAAA3B,EAAA,CAA2CsC,oBAAA,CAAqB,SAAAR,EAAAS,SAAA,EAAAR,IAAApQ,CAAA,CAA4BvB,SAAA,CAAU,KAAAkS,kBAAA,GAAAlS,OAAA,GAAoC,GAAA0R,EAAAU,gBAAA,EAAAT,EAAA3S,EAAAiT,OAAA,CAAA5G,QAAA,KAAgDuE,EAAA6B,UAAA,CAAAA,CAAA,EAAwB,KAAAF,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAqC,OAAA,QAAiB,IAAAtB,EAAAa,EAAA,IAAcE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAAH,EAAA,IAA8B,OAAAS,EAAcnhB,aAAA,CAAc,SAAAuhB,EAAAd,CAAA,EAAsB,mBAAA3B,CAAA,EAAsB,IAAA4B,EAAA,GAAAG,EAAAQ,SAAA,UAAgC,GAAAX,EAAa,OAAAA,CAAA,CAAAD,EAAA,IAAA3B,EAAA,EAAmB,IAAA2B,EAAA,KAA8vBA,EAAAe,SAAA,CAAjvB,CAAA1C,EAAA4B,EAAA,CAAsBe,SAAAvT,EAAAwT,YAAA,CAAAC,IAAA,CAA6B,IAAI,IAAA9B,EAAApP,EAAAmR,EAAU,GAAA9C,IAAA2B,EAAA,CAAU,IAAA3B,EAAA,4IAA4M,OAApD2B,EAAAhe,KAAA,QAAAod,CAAAA,EAAAf,EAAA+C,KAAA,GAAAhC,KAAA,IAAAA,EAAAA,EAAAf,EAAAxgB,OAAA,EAAoD,GAAa,iBAAAoiB,GAAwBA,CAAAA,EAAA,CAAGe,SAAAf,CAAA,GAAY,IAAAoB,EAAA,GAAAjB,EAAAQ,SAAA,UAAgCU,EAAA,GAAAnB,EAAAoB,wBAAA,SAAAvR,CAAAA,EAAAiQ,EAAAe,QAAA,GAAAhR,KAAA,IAAAA,EAAAA,EAAAvC,EAAAwT,YAAA,CAAAC,IAAA,CAAA7C,GAAkG,GAAAgD,GAAA,CAAApB,EAAAuB,uBAAA,EAAkC,IAAAxB,EAAA,OAAAmB,CAAAA,EAAA,QAAAC,KAAA,GAAAD,KAAA,IAAAA,EAAAA,EAAA,kCAAqFE,EAAAI,IAAA,4CAAkDzB,EAAE,GAAGsB,EAAAG,IAAA,8DAAoEzB,EAAE,GAAG,SAAAI,EAAAK,cAAA,SAAAa,EAAAtB,EAAA,KAAmEA,EAAAvR,OAAA,MAAe,GAAA2R,EAAAS,gBAAA,EAA17B,OAA07Bb,EAAA,EAA6BA,EAAA0B,qBAAA,CAAA1B,GAAA,IAAAZ,EAAAuC,mBAAA,CAAA3B,GAAwDA,EAAA4B,OAAA,CAAAd,EAAA,WAA+Bd,EAAA6B,KAAA,CAAAf,EAAA,SAA2Bd,EAAA3Z,IAAA,CAAAya,EAAA,QAAyBd,EAAAyB,IAAA,CAAAX,EAAA,QAAyBd,EAAAhe,KAAA,CAAA8e,EAAA,SAA2B,OAAAhH,UAAA,CAAiE,OAA/C,KAAAyG,SAAA,EAAoB,MAAAA,SAAA,KAAAG,CAAA,EAA2B,KAAAH,SAAA,EAAuBlC,EAAAqC,OAAA,CAAAA,CAAA,EAAkB,KAAAV,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAyD,UAAA,QAAoB,IAAA1C,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAA,SAAkB,OAAA0B,EAAiBviB,aAAA,EAAe,OAAA+gB,aAAA,CAAuE,OAAlD,KAAAC,SAAA,EAAoB,MAAAA,SAAA,KAAAuB,CAAA,EAA8B,KAAAvB,SAAA,CAAsBwB,uBAAA/B,CAAA,EAA0B,SAAAG,EAAAM,cAAA,EAAAL,EAAAJ,EAAAvS,EAAAiT,OAAA,CAAA5G,QAAA,IAAqDkI,kBAAA,CAAmB,SAAA7B,EAAAS,SAAA,EAAAR,IAAAhB,EAAA6C,mBAAA,CAAgDC,SAAAlC,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAgB,YAAA+B,gBAAA,GAAAE,QAAA,CAAAlC,EAAA3B,EAAA4B,EAAA,CAA+CxR,SAAA,CAAU,GAAA0R,EAAAU,gBAAA,EAAAT,EAAA3S,EAAAiT,OAAA,CAAA5G,QAAA,KAAgDuE,EAAAyD,UAAA,CAAAA,CAAA,EAAwB,KAAA9B,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA8D,cAAA,QAAwB,IAAA/C,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAAH,EAAA,KAAejQ,EAAAiQ,EAAA,KAAekB,EAAAlB,EAAA,KAAeoB,EAAA,cAAsBC,EAAA,IAAAnB,EAAAiC,qBAAA,OAAoCD,EAAqB5iB,aAAA,CAAc,KAAA8iB,aAAA,CAAArS,EAAAqS,aAAA,CAAmC,KAAAC,UAAA,CAAAlC,EAAAkC,UAAA,CAA6B,KAAAC,gBAAA,CAAAnC,EAAAmC,gBAAA,CAAyC,KAAAC,UAAA,CAAApC,EAAAoC,UAAA,CAA6B,KAAAC,aAAA,CAAArC,EAAAqC,aAAA,CAAmC,OAAAnC,aAAA,CAA2E,OAAtD,KAAAC,SAAA,EAAoB,MAAAA,SAAA,KAAA4B,CAAA,EAAkC,KAAA5B,SAAA,CAAsBmC,oBAAA1C,CAAA,EAAuB,SAAAZ,EAAAqB,cAAA,EAAAY,EAAArB,EAAAmB,EAAAT,OAAA,CAAA5G,QAAA,IAAqD6I,OAAA3C,CAAA,CAAA3B,CAAA,CAAA4B,EAAAxS,EAAAmV,oBAAA,EAAqC,YAAAC,oBAAA,GAAAF,MAAA,CAAA3C,EAAA3B,EAAA4B,EAAA,CAAiDpN,QAAAmN,CAAA,CAAA3B,CAAA,CAAA4B,EAAAxS,EAAAqV,oBAAA,EAAsC,YAAAD,oBAAA,GAAAhQ,OAAA,CAAAmN,EAAA3B,EAAA4B,EAAA,CAAkD8C,QAAA,CAAS,YAAAF,oBAAA,GAAAE,MAAA,GAA4CtU,SAAA,CAAU,GAAA2Q,EAAAyB,gBAAA,EAAAQ,EAAAF,EAAAT,OAAA,CAAA5G,QAAA,IAA+C+I,sBAAA,CAAuB,SAAAzD,EAAAwB,SAAA,EAAAS,IAAAC,CAAA,EAA6BjD,EAAA8D,cAAA,CAAAA,CAAA,EAAgC,KAAAnC,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA2E,QAAA,QAAkB,IAAA5D,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAAH,EAAA,KAAejQ,EAAAiQ,EAAA,KAAekB,EAAA,OAAgB,OAAA6B,EAAezjB,aAAA,CAAc,KAAA0jB,oBAAA,KAAA9C,EAAA+C,mBAAA,CAAoD,KAAAC,eAAA,CAAA1V,EAAA0V,eAAA,CAAuC,KAAAC,kBAAA,CAAA3V,EAAA2V,kBAAA,CAA6C,KAAAC,UAAA,CAAAjD,EAAAiD,UAAA,CAA6B,KAAAjR,OAAA,CAAAgO,EAAAhO,OAAA,CAAuB,KAAAkR,aAAA,CAAAlD,EAAAkD,aAAA,CAAmC,KAAA3Q,cAAA,CAAAyN,EAAAzN,cAAA,CAAqC,KAAAsC,OAAA,CAAAmL,EAAAnL,OAAA,CAAuB,KAAAsO,cAAA,CAAAnD,EAAAmD,cAAA,CAAqC,OAAAjD,aAAA,CAAqE,OAAhD,KAAAC,SAAA,EAAoB,MAAAA,SAAA,KAAAyC,CAAA,EAA4B,KAAAzC,SAAA,CAAsBiD,wBAAAxD,CAAA,EAA2B,IAAA3B,EAAA,GAAAe,EAAAqB,cAAA,EAAAU,EAAA,KAAA8B,oBAAA,CAAAjT,EAAA0Q,OAAA,CAAA5G,QAAA,IAA8H,OAA/CuE,GAAM,KAAA4E,oBAAA,CAAAQ,WAAA,CAAAzD,GAAyC3B,CAAA,CAASqF,mBAAA,CAAoB,SAAAtE,EAAAwB,SAAA,EAAAO,IAAA,KAAA8B,oBAAA,CAAoDhR,UAAA+N,CAAA,CAAA3B,CAAA,EAAe,YAAAqF,iBAAA,GAAAzR,SAAA,CAAA+N,EAAA3B,EAAA,CAA+C5P,SAAA,CAAU,GAAA2Q,EAAAyB,gBAAA,EAAAM,EAAAnR,EAAA0Q,OAAA,CAAA5G,QAAA,IAA+C,KAAAmJ,oBAAA,KAAA9C,EAAA+C,mBAAA,EAAqD7E,EAAA2E,QAAA,CAAAA,CAAA,EAAoB,KAAAhD,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAoE,aAAA,CAAApE,EAAAmE,UAAA,CAAAnE,EAAAkE,gBAAA,CAAAlE,EAAAiE,UAAA,QAAoE,IAAAlD,EAAAa,EAAA,KAA8BxS,EAAA,GAAA0S,EAAf,KAAevO,gBAAA,+BAA4D,SAAA0Q,EAAAtC,CAAA,EAAuB,OAAAA,EAAA7K,QAAA,CAAA1H,IAAAtJ,KAAAA,CAAA,CAAgCka,EAAAiE,UAAA,CAAAA,EAA2GjE,EAAAkE,gBAAA,CAAnF,WAA4B,OAAAD,EAAAlD,EAAAc,UAAA,CAAAI,WAAA,GAAAjO,MAAA,KAA2IgM,EAAAmE,UAAA,CAAhD,SAAAxC,CAAA,CAAA3B,CAAA,EAAyB,OAAA2B,EAAArM,QAAA,CAAAlG,EAAA4Q,EAAA,EAAiGA,EAAAoE,aAAA,CAAlD,SAAAzC,CAAA,EAA0B,OAAAA,EAAA2D,WAAA,CAAAlW,EAAA,CAAwB,EAA8B,KAAAuS,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAuF,WAAA,OAAqB,OAAAA,EAAkBrkB,YAAAygB,CAAA,EAAe,KAAA6D,QAAA,CAAA7D,EAAA,IAAAtO,IAAAsO,GAAA,IAAAtO,GAAA,CAAmCoS,SAAA9D,CAAA,EAAY,IAAA3B,EAAA,KAAAwF,QAAA,CAAAllB,GAAA,CAAAqhB,GAA6B,GAAA3B,EAAwB,OAAAhgB,OAAA0lB,MAAA,IAAuB1F,EAAA,CAAI2F,eAAA,CAAgB,OAAAzc,MAAAqG,IAAA,MAAAiW,QAAA,CAAAniB,OAAA,IAAAuK,GAAA,GAAA+T,EAAA3B,EAAA,IAAA2B,EAAA3B,EAAA,EAAiE4F,SAAAjE,CAAA,CAAA3B,CAAA,EAAc,IAAA4B,EAAA,IAAA2D,EAAA,KAAAC,QAAA,EAA2D,OAApB5D,EAAA4D,QAAA,CAAA7Y,GAAA,CAAAgV,EAAA3B,GAAoB4B,CAAA,CAASiE,YAAAlE,CAAA,EAAe,IAAA3B,EAAA,IAAAuF,EAAA,KAAAC,QAAA,EAA4D,OAArBxF,EAAAwF,QAAA,CAAA7V,MAAA,CAAAgS,GAAqB3B,CAAA,CAAS8F,cAAA,GAAAnE,CAAA,EAAoB,IAAA3B,EAAA,IAAAuF,EAAA,KAAAC,QAAA,EAAuC,QAAA5D,KAAAD,EAAkB3B,EAAAwF,QAAA,CAAA7V,MAAA,CAAAiS,GAAqB,OAAA5B,CAAA,CAASiB,OAAA,CAAQ,WAAAsE,CAAA,EAAwBvF,EAAAuF,WAAA,CAAAA,CAAA,EAA0B,KAAA5D,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA+F,0BAAA,QAAoC/F,EAAA+F,0BAAA,CAAA5hB,OAAA,yBAA4D,KAAAwd,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAgG,8BAAA,CAAAhG,EAAAgE,aAAA,QAAwD,IAAAjD,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAAhB,EAAAsB,OAAA,CAAA5G,QAAA,EAA+GuE,CAAAA,EAAAgE,aAAA,CAAlF,SAAArC,EAAA,EAA2B,EAAE,WAAAG,EAAAyD,WAAA,KAAAlS,IAAArT,OAAAqD,OAAA,CAAAse,IAAA,EAAuS3B,EAAAgG,8BAAA,CAApN,SAAArE,CAAA,EAAiJ,MAAtG,iBAAAA,IAAwBI,EAAApe,KAAA,sDAA6D,OAAAge,EAAS,GAAGA,EAAA,IAAK,CAAOsE,SAAA7W,EAAA2W,0BAAA,CAAA3c,SAAAA,IAAiDuY,CAAA,EAAW,EAAgE,IAAAA,EAAA3B,EAAA4B,KAAc5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA9N,OAAA,QAAiB,IAAA6O,EAAAa,EAAA,IAAe5B,CAAAA,EAAA9N,OAAA,CAAA6O,EAAAc,UAAA,CAAAI,WAAA,IAAqC,KAAAN,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAgC,kBAAA,QAA4B,IAAAjB,EAAAa,EAAA,IAAe,OAAAI,EAAyBhO,QAAA,CAAS,OAAA+M,EAAAxO,YAAA,CAAsBkC,KAAAkN,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,IAAAb,CAAA,EAAiB,OAAAf,EAAAjQ,IAAA,CAAA6R,KAAAb,EAAA,CAAsBrU,KAAAiV,CAAA,CAAA3B,CAAA,EAAU,OAAAA,CAAA,CAASjI,QAAA,CAAS,YAAY3H,SAAA,CAAU,aAAa4P,EAAAgC,kBAAA,CAAAA,CAAA,EAAwC,KAAAL,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAzN,YAAA,CAAAyN,EAAAzM,gBAAA,QAA2FyM,EAAAzM,gBAAA,CAAlD,SAAAoO,CAAA,EAA6B,OAAAxd,OAAA0G,GAAA,CAAA8W,EAAA,CAAyD,OAAAuE,EAAkBhlB,YAAAygB,CAAA,EAAe,IAAA3B,EAAA,KAAaA,EAAAmG,eAAA,CAAAxE,EAAA,IAAAtO,IAAAsO,GAAA,IAAAtO,IAAuC2M,EAAAlJ,QAAA,CAAA6K,GAAA3B,EAAAmG,eAAA,CAAA7lB,GAAA,CAAAqhB,GAAuC3B,EAAA1K,QAAA,EAAAqM,EAAAC,KAAmB,IAAAb,EAAA,IAAAmF,EAAAlG,EAAAmG,eAAA,EAAsE,OAA3BpF,EAAAoF,eAAA,CAAAxZ,GAAA,CAAAgV,EAAAC,GAA2Bb,CAAA,EAAUf,EAAAsF,WAAA,CAAA3D,IAAkB,IAAAC,EAAA,IAAAsE,EAAAlG,EAAAmG,eAAA,EAAuE,OAA5BvE,EAAAuE,eAAA,CAAAxW,MAAA,CAAAgS,GAA4BC,CAAA,GAAW5B,EAAAzN,YAAA,KAAA2T,CAAA,EAA+B,KAAAvE,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAoG,IAAA,QAAc,IAAArF,EAAAa,EAAA,IAAe5B,CAAAA,EAAAoG,IAAA,CAAArF,EAAAsB,OAAA,CAAA5G,QAAA,IAA4B,IAAAkG,EAAA3B,EAAA4B,KAAc5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAsD,mBAAA,QAA6B,IAAAvC,EAAAa,EAAA,IAAe,OAAA0B,EAA0BpiB,YAAAygB,CAAA,EAAe,KAAA0E,UAAA,CAAA1E,EAAA2E,SAAA,wBAAmD9C,MAAA,GAAA7B,CAAA,EAAY,OAAA4E,EAAA,aAAAF,UAAA,CAAA1E,EAAA,CAA2Che,MAAA,GAAAge,CAAA,EAAY,OAAA4E,EAAA,aAAAF,UAAA,CAAA1E,EAAA,CAA2C3Z,KAAA,GAAA2Z,CAAA,EAAW,OAAA4E,EAAA,YAAAF,UAAA,CAAA1E,EAAA,CAA0CyB,KAAA,GAAAzB,CAAA,EAAW,OAAA4E,EAAA,YAAAF,UAAA,CAAA1E,EAAA,CAA0C4B,QAAA,GAAA5B,CAAA,EAAc,OAAA4E,EAAA,eAAAF,UAAA,CAAA1E,EAAA,EAAwF,SAAA4E,EAAA5E,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAyB,IAAAE,EAAA,GAAAf,EAAAwB,SAAA,UAAgC,GAAAT,EAA2B,OAAbF,EAAA4E,OAAA,CAAAxG,GAAa8B,CAAA,CAAAH,EAAA,IAAAC,EAAA,CAA9H5B,EAAAsD,mBAAA,CAAAA,CAA8H,EAAmB,KAAA3B,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAyG,iBAAA,QAA2B,IAAA7E,EAAA,EAAUb,EAAA,QAAApP,EAAA,SAAoB,CAAEoP,EAAA,OAAApP,EAAA,QAAkB,CAAEoP,EAAA,OAAApP,EAAA,QAAkB,CAAEoP,EAAA,QAAApP,EAAA,SAAoB,CAAEoP,EAAA,UAAApP,EAAA,SAAsB,OAAE8U,EAAwBvlB,aAAA,CAAyL,QAAAygB,EAAA,EAAYA,EAAAC,EAAAjf,MAAA,CAAWgf,IAAK,KAAAC,CAAA,CAAAD,EAAA,CAAAZ,CAAA,EAAA2F,SAAvM/E,CAAA,EAAyB,mBAAA3B,CAAA,EAAsB,GAAA2G,QAAA,CAAY,IAAA/E,EAAA+E,OAAA,CAAAhF,EAAA,CAAyD,GAAxC,mBAAAC,GAA0BA,CAAAA,EAAA+E,QAAAC,GAAA,EAAc,mBAAAhF,EAA0B,OAAAA,EAAAlhB,KAAA,CAAAimB,QAAA3G,EAAA,IAAyD4B,CAAA,CAAAD,EAAA,CAAAhQ,CAAA,GAAoCqO,EAAAyG,iBAAA,CAAAA,CAAA,EAAsC,KAAA9E,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAkD,wBAAA,QAAkC,IAAAnC,EAAAa,EAAA,IAAqgB5B,CAAAA,EAAAkD,wBAAA,CAAtf,SAAAvB,CAAA,CAAA3B,CAAA,EAAkJ,SAAA6G,EAAAjF,CAAA,CAAAb,CAAA,EAA0B,IAAAe,EAAA9B,CAAA,CAAA4B,EAAA,OAAa,mBAAAE,GAAAH,GAAAZ,EAAgCe,EAAApV,IAAA,CAAAsT,GAAiB,aAAoB,OAAvN2B,EAAAZ,EAAA6B,YAAA,CAAAkE,IAAA,CAA0BnF,EAAAZ,EAAA6B,YAAA,CAAAkE,IAAA,CAAsBnF,EAAAZ,EAAA6B,YAAA,CAAAmE,GAAA,EAA8BpF,CAAAA,EAAAZ,EAAA6B,YAAA,CAAAmE,GAAA,EAAqB/G,EAAAA,GAAA,GAAoH,CAAOrc,MAAAkjB,EAAA,QAAA9F,EAAA6B,YAAA,CAAA1P,KAAA,EAAAkQ,KAAAyD,EAAA,OAAA9F,EAAA6B,YAAA,CAAAoE,IAAA,EAAAhf,KAAA6e,EAAA,OAAA9F,EAAA6B,YAAA,CAAAC,IAAA,EAAAW,MAAAqD,EAAA,QAAA9F,EAAA6B,YAAA,CAAAqE,KAAA,EAAA1D,QAAAsD,EAAA,UAAA9F,EAAA6B,YAAA,CAAAsE,OAAA,GAAiP,EAAoD,KAAAvF,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA4C,YAAA,QAA4B,SAAAjB,CAAA,EAAaA,CAAA,CAAAA,EAAA,eAAsBA,CAAA,CAAAA,EAAA,kBAAyBA,CAAA,CAAAA,EAAA,gBAAuBA,CAAA,CAAAA,EAAA,gBAAuBA,CAAA,CAAAA,EAAA,kBAAyBA,CAAA,CAAAA,EAAA,sBAA6BA,CAAA,CAAAA,EAAA,iBAAuB3B,EAAA4C,YAAA,EAAA5C,CAAAA,EAAA4C,YAAA,KAAsC,EAAG,KAAAjB,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAwC,gBAAA,CAAAxC,EAAAuC,SAAA,CAAAvC,EAAAoC,cAAA,QAAuD,IAAArB,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAAD,EAAAqF,OAAA,CAAAxgB,KAAA,SAAgCgL,EAAAxN,OAAA0G,GAAA,yBAA2CkX,EAAE,GAAGe,EAAA/B,EAAAqG,WAAA,CAA+jBpH,EAAAoC,cAAA,CAAziB,SAAAT,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,CAAAb,EAAA,IAAuC,IAAA3R,EAAM,IAAA2S,EAAAe,CAAA,CAAAnR,EAAA,QAAAvC,CAAAA,EAAA0T,CAAA,CAAAnR,EAAA,GAAAvC,KAAA,IAAAA,EAAAA,EAAA,CAA4CgN,QAAA0F,EAAAqF,OAAA,EAAmB,IAAApG,GAAAgB,CAAA,CAAAJ,EAAA,EAAa,IAAA3B,EAAA,sEAAkF2B,EAAE,GAA+B,OAA5BC,EAAAje,KAAA,CAAAqc,EAAA+C,KAAA,EAAA/C,EAAAxgB,OAAA,EAA4B,GAAa,GAAAuiB,EAAA3F,OAAA,GAAA0F,EAAAqF,OAAA,EAA0B,IAAAnH,EAAA,sDAAkE+B,EAAA3F,OAAA,MAAW,EAAMuF,EAAA,2CAAG,EAA4CG,EAAAqF,OAAA,CAAU,GAA+B,OAA5BvF,EAAAje,KAAA,CAAAqc,EAAA+C,KAAA,EAAA/C,EAAAxgB,OAAA,EAA4B,GAA+F,OAAlFuiB,CAAA,CAAAJ,EAAA,CAAA3B,EAAO4B,EAAA4B,KAAA,gDAAuD7B,EAAA,EAAG,EAAGG,EAAAqF,OAAA,CAAU,IAAI,IAAmNnH,EAAAuC,SAAA,CAAvK,SAAAZ,CAAA,EAAsB,IAAA3B,EAAA4B,EAAQ,IAAAb,EAAA,OAAAf,CAAAA,EAAA8C,CAAA,CAAAnR,EAAA,GAAAqO,KAAA,IAAAA,EAAA,OAAAA,EAAA5D,OAAA,CAAqD,SAAAhN,EAAAiY,YAAA,EAAAtG,GAAsC,cAAAa,CAAAA,EAAAkB,CAAA,CAAAnR,EAAA,GAAAiQ,KAAA,IAAAA,EAAA,OAAAA,CAAA,CAAAD,EAAA,EAAiN3B,EAAAwC,gBAAA,CAA7I,SAAAb,CAAA,CAAA3B,CAAA,EAA+BA,EAAAwD,KAAA,mDAA0D7B,EAAA,EAAG,EAAGG,EAAAqF,OAAA,CAAU,IAAI,IAAAvF,EAAAkB,CAAA,CAAAnR,EAAA,CAAaiQ,GAAM,OAAAA,CAAA,CAAAD,EAAA,CAAa,EAAoC,KAAAA,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAqH,YAAA,CAAArH,EAAAsH,uBAAA,QAAgD,IAAAvG,EAAAa,EAAA,KAAeE,EAAA,gCAAwC,SAAAwF,EAAA3F,CAAA,EAAoC,IAAA3B,EAAA,IAAAhT,IAAA,CAAA2U,EAAA,EAAqBC,EAAA,IAAA5U,IAAgB+T,EAAAY,EAAA5L,KAAA,CAAA+L,GAAmB,IAAAf,EAAO,aAAgB,IAAA3R,EAAA,CAASmY,MAAA,CAAAxG,CAAA,IAAAyG,MAAA,CAAAzG,CAAA,IAAA0G,MAAA,CAAA1G,CAAA,IAAA2G,WAAA3G,CAAA,KAAqD,GAAA3R,MAAAA,EAAAsY,UAAA,CAAuB,gBAAA1H,CAAA,EAAgC,OAAAA,IAAA2B,CAAA,EAAc,SAAAgG,EAAAhG,CAAA,EAA6B,OAATC,EAAA9P,GAAA,CAAA6P,GAAS,GAAsD,gBAAAA,CAAA,EAAgC,GAAA3B,EAAApT,GAAA,CAAA+U,GAAa,SAAY,GAAAC,EAAAhV,GAAA,CAAA+U,GAAa,SAAa,IAAAZ,EAAAY,EAAA5L,KAAA,CAAA+L,GAAmB,IAAAf,EAAO,OAAA4G,EAAAhG,GAAkB,IAAAI,EAAA,CAASwF,MAAA,CAAAxG,CAAA,IAAAyG,MAAA,CAAAzG,CAAA,IAAA0G,MAAA,CAAA1G,CAAA,IAAA2G,WAAA3G,CAAA,YAAqD,MAAAgB,EAAA2F,UAAA,EAAyCtY,EAAAmY,KAAA,GAAAxF,EAAAwF,KAAA,CAAlBI,EAAAhG,GAA0DvS,IAAAA,EAAAmY,KAAA,CAAgB,EAAAC,KAAA,GAAAzF,EAAAyF,KAAA,EAAApY,EAAAqY,KAAA,EAAA1F,EAAA0F,KAAA,EAAnTzH,EAAAlO,GAAA,CAA2V6P,GAAlV,IAAoWgG,EAAAhG,GAAkB,EAAA6F,KAAA,EAAAzF,EAAAyF,KAAA,EAA/XxH,EAAAlO,GAAA,CAAoZ6P,GAA3Y,IAA6ZgG,EAAAhG,EAAA,EAAmB3B,EAAAsH,uBAAA,CAAAA,EAAkDtH,EAAAqH,YAAA,CAAAC,EAAAvG,EAAAoG,OAAA,GAAkD,KAAAxF,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA4H,OAAA,QAAiB,IAAA7G,EAAAa,EAAA,IAAe5B,CAAAA,EAAA4H,OAAA,CAAA7G,EAAA0C,UAAA,CAAAxB,WAAA,IAAqC,KAAAN,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA6H,SAAA,QAAyB,SAAAlG,CAAA,EAAaA,CAAA,CAAAA,EAAA,aAAoBA,CAAA,CAAAA,EAAA,oBAA0B3B,EAAA6H,SAAA,EAAA7H,CAAAA,EAAA6H,SAAA,KAAgC,EAAG,KAAAlG,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA8H,eAAA,CAAA9H,EAAA+H,sCAAA,CAAA/H,EAAAgI,4BAAA,CAAAhI,EAAAiI,8BAAA,CAAAjI,EAAAkI,2BAAA,CAAAlI,EAAAmI,qBAAA,CAAAnI,EAAAoI,mBAAA,CAAApI,EAAAqI,UAAA,CAAArI,EAAAsI,iCAAA,CAAAtI,EAAAuI,yBAAA,CAAAvI,EAAAwI,2BAAA,CAAAxI,EAAAyI,oBAAA,CAAAzI,EAAA0I,mBAAA,CAAA1I,EAAA2I,uBAAA,CAAA3I,EAAA4I,iBAAA,CAAA5I,EAAA6I,UAAA,CAAA7I,EAAA8I,SAAA,OAA6a,OAAAA,EAAgB5nB,aAAA,EAAe6nB,gBAAApH,CAAA,CAAAC,CAAA,EAAqB,OAAA5B,EAAAmI,qBAAA,CAA+Ba,cAAArH,CAAA,CAAAC,CAAA,EAAmB,OAAA5B,EAAAoI,mBAAA,CAA6Ba,oBAAAtH,CAAA,CAAAC,CAAA,EAAyB,OAAA5B,EAAAkI,2BAAA,CAAqCgB,sBAAAvH,CAAA,CAAAC,CAAA,EAA2B,OAAA5B,EAAAgI,4BAAA,CAAsCmB,wBAAAxH,CAAA,CAAAC,CAAA,EAA6B,OAAA5B,EAAAiI,8BAAA,CAAwCmB,8BAAAzH,CAAA,CAAAC,CAAA,EAAmC,OAAA5B,EAAA+H,sCAAA,CAAgDsB,2BAAA1H,CAAA,CAAA3B,CAAA,GAAiCsJ,8BAAA3H,CAAA,IAAmC3B,EAAA8I,SAAA,CAAAA,CAAsB,OAAAD,EAAA,CAAkB7I,EAAA6I,UAAA,CAAAA,CAAwB,OAAAD,UAAAC,EAA2C/W,IAAA6P,CAAA,CAAA3B,CAAA,IAAWA,EAAA4I,iBAAA,CAAAA,CAAsC,OAAAD,UAAAE,EAAiD/W,IAAA6P,CAAA,CAAA3B,CAAA,IAAWA,EAAA2I,uBAAA,CAAAA,CAAkD,OAAAD,UAAAG,EAA6CU,OAAA5H,CAAA,CAAA3B,CAAA,IAAcA,EAAA0I,mBAAA,CAAAA,CAA0C,OAAAD,EAA2Be,YAAA7H,CAAA,GAAgB8H,eAAA9H,CAAA,IAAoB3B,EAAAyI,oBAAA,CAAAA,CAA4C,OAAAD,UAAAC,EAAA,CAAgEzI,EAAAwI,2BAAA,CAAAA,CAA0D,OAAAD,UAAAE,EAAA,CAA8DzI,EAAAuI,yBAAA,CAAAA,CAAsD,OAAAD,UAAAG,EAAA,CAAsEzI,EAAAsI,iCAAA,CAAAA,EAAsEtI,EAAAqI,UAAA,KAAAS,EAA2B9I,EAAAoI,mBAAA,KAAAQ,EAA4C5I,EAAAmI,qBAAA,KAAAO,EAAgD1I,EAAAkI,2BAAA,KAAAS,EAA0D3I,EAAAiI,8BAAA,KAAAO,EAAiExI,EAAAgI,4BAAA,KAAAO,EAA6DvI,EAAA+H,sCAAA,KAAAO,EAA8HtI,EAAA8H,eAAA,CAA/C,WAA2B,OAAA9H,EAAAqI,UAAA,CAAoB,EAAkC,KAAA1G,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA4D,mBAAA,CAAA5D,EAAA0J,iBAAA,QAAiD,IAAA3I,EAAAa,EAAA,IAAe,OAAA8H,EAAwB7F,SAAAlC,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAgB,OAAAb,EAAAsH,UAAA,EAAqBrI,EAAA0J,iBAAA,CAAAA,EAAsC1J,EAAA4D,mBAAA,KAAA8F,CAAA,EAA4C,aAAA/H,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAqB,IAAAb,EAAA,WAAA4I,eAAA,EAAA3pB,CAAAA,OAAA4pB,MAAA,UAAAjI,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,CAAAb,CAAA,EAAmEjb,KAAAA,IAAAib,GAAAA,CAAAA,EAAAa,CAAAA,EAAqB5hB,OAAAC,cAAA,CAAA0hB,EAAAZ,EAAA,CAA2BjgB,WAAA,GAAAR,IAAA,WAA+B,OAAA0f,CAAA,CAAA4B,EAAA,GAAa,EAAE,SAAAD,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,CAAAb,CAAA,EAAmBjb,KAAAA,IAAAib,GAAAA,CAAAA,EAAAa,CAAAA,EAAqBD,CAAA,CAAAZ,EAAA,CAAAf,CAAA,CAAA4B,EAAA,GAAYE,EAAA,WAAA+H,YAAA,WAAAlI,CAAA,CAAA3B,CAAA,EAA6C,QAAA4B,KAAAD,EAAA,YAAAC,GAAA5hB,OAAAye,SAAA,CAAAC,cAAA,CAAA3O,IAAA,CAAAiQ,EAAA4B,IAAAb,EAAAf,EAAA2B,EAAAC,EAAA,EAAsF5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa4hB,EAAAF,EAAA,IAAA5B,EAAA,EAAW,KAAA2B,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAoH,WAAA,QAAqBpH,EAAAoH,WAAA,kBAAAhoB,WAAAA,WAAsDS,EAAAC,CAAM,EAAC,YAAA6hB,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAoB,IAAAb,EAAA,WAAA4I,eAAA,EAAA3pB,CAAAA,OAAA4pB,MAAA,UAAAjI,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,CAAAb,CAAA,EAAmEjb,KAAAA,IAAAib,GAAAA,CAAAA,EAAAa,CAAAA,EAAqB5hB,OAAAC,cAAA,CAAA0hB,EAAAZ,EAAA,CAA2BjgB,WAAA,GAAAR,IAAA,WAA+B,OAAA0f,CAAA,CAAA4B,EAAA,GAAa,EAAE,SAAAD,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,CAAAb,CAAA,EAAmBjb,KAAAA,IAAAib,GAAAA,CAAAA,EAAAa,CAAAA,EAAqBD,CAAA,CAAAZ,EAAA,CAAAf,CAAA,CAAA4B,EAAA,GAAYE,EAAA,WAAA+H,YAAA,WAAAlI,CAAA,CAAA3B,CAAA,EAA6C,QAAA4B,KAAAD,EAAA,YAAAC,GAAA5hB,OAAAye,SAAA,CAAAC,cAAA,CAAA3O,IAAA,CAAAiQ,EAAA4B,IAAAb,EAAAf,EAAA2B,EAAAC,EAAA,EAAsF5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa4hB,EAAAF,EAAA,KAAA5B,EAAA,EAAY,KAAA2B,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA7N,WAAA,QAAqB,IAAA4O,EAAAa,EAAA,IAAe5B,CAAAA,EAAA7N,WAAA,CAAA4O,EAAA+C,cAAA,CAAA7B,WAAA,IAA6C,KAAAN,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA+D,qBAAA,OAA+B,OAAAA,EAA4BO,OAAA3C,CAAA,CAAA3B,CAAA,GAAaxL,QAAAmN,CAAA,CAAA3B,CAAA,EAAa,OAAA2B,CAAA,CAAS+C,QAAA,CAAS,UAAU1E,EAAA+D,qBAAA,CAAAA,CAAA,EAA8C,KAAApC,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAuE,oBAAA,CAAAvE,EAAAyE,oBAAA,QAAqDzE,EAAAyE,oBAAA,EAAwBnkB,IAAAqhB,CAAA,CAAA3B,CAAA,EAAS,GAAA2B,MAAAA,EAA6B,OAAAA,CAAA,CAAA3B,EAAA,EAAY5S,KAAAA,GAAS,MAAAuU,EAAY,GAAS3hB,OAAAoN,IAAA,CAAAuU,EAAA,EAAwB3B,EAAAuE,oBAAA,EAAwB5X,IAAAgV,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAW,MAAAD,GAAmBA,CAAAA,CAAA,CAAA3B,EAAA,CAAA4B,CAAAA,CAAA,IAAS,KAAAD,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA5N,KAAA,QAAe,IAAA2O,EAAAa,EAAA,IAAe5B,CAAAA,EAAA5N,KAAA,CAAA2O,EAAA4D,QAAA,CAAA1C,WAAA,IAAiC,KAAAN,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA8J,gBAAA,QAA0B,IAAA/I,EAAAa,EAAA,IAAe,OAAAkI,EAAuB5oB,YAAAygB,EAAAZ,EAAAgJ,oBAAA,EAAsC,KAAAC,YAAA,CAAArI,CAAA,CAAoB3M,aAAA,CAAc,YAAAgV,YAAA,CAAyBlX,aAAA6O,CAAA,CAAA3B,CAAA,EAAkB,YAAYiK,cAAAtI,CAAA,EAAiB,YAAYuI,SAAAvI,CAAA,CAAA3B,CAAA,EAAc,YAAYhN,UAAA2O,CAAA,EAAa,YAAYwI,WAAAxI,CAAA,EAAc,YAAYxO,IAAAwO,CAAA,GAAQyI,aAAA,CAAc,SAAarX,gBAAA4O,CAAA,CAAA3B,CAAA,IAAuBA,EAAA8J,gBAAA,CAAAA,CAAA,EAAoC,KAAAnI,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAqK,UAAA,QAAoB,IAAAtJ,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAAH,EAAA,KAAejQ,EAAAoP,EAAAc,UAAA,CAAAI,WAAA,EAAmC,OAAAoI,EAAiB1T,UAAAgL,CAAA,CAAA3B,CAAA,CAAA4B,EAAAjQ,EAAAqC,MAAA,IAAgF,GAApDgM,MAAAA,EAAA,OAAAA,EAAAsK,IAAA,CAA0D,WAAAlb,EAAA0a,gBAAA,CAA8B,IAAAhH,EAAAlB,GAAA,GAAAE,EAAAxN,cAAA,EAAAsN,SAAmC,UAA8c,OAA9ckB,GAA8c,iBAAAnB,EAAA,yBAAAA,EAAA,0BAAAA,EAAA,YAA9c,GAAAI,EAAAgD,kBAAA,EAAAjC,GAAkD,IAAA1T,EAAA0a,gBAAA,CAAAhH,GAAsC,IAAA1T,EAAA0a,gBAAA,CAA+BvU,gBAAAoM,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,CAAAb,CAAA,MAAyB3R,EAAM2S,EAAMe,EAAM,GAAAzM,UAAA1T,MAAA,GAAuB,MAAO0T,CAAA,GAAAA,UAAA1T,MAAA,CAA8BmgB,EAAA9C,EAAI3J,GAAAA,UAAA1T,MAAA,EAA8ByM,EAAA4Q,EAAI8C,EAAAlB,IAASxS,EAAA4Q,EAAI+B,EAAAH,EAAIkB,EAAA/B,GAAI,IAAAiC,EAAAjB,MAAAA,EAAAA,EAAApQ,EAAAqC,MAAA,GAA0CiP,EAAA,KAAAtM,SAAA,CAAAgL,EAAAvS,EAAA4T,GAA8BljB,EAAA,GAAAgiB,EAAAlL,OAAA,EAAAoM,EAAAC,GAA2B,OAAAtR,EAAA8C,IAAA,CAAA3U,EAAAgjB,EAAAhd,KAAAA,EAAAmd,EAAA,EAAgCjD,EAAAqK,UAAA,CAAAA,CAAkD,EAA8H,KAAA1I,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAuK,kBAAA,QAA4B,IAAAxJ,EAAAa,EAAA,IAAe,OAAA2I,EAAyB3W,UAAA+N,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAiB,WAAAb,EAAAsJ,UAAA,EAAyBrK,EAAAuK,kBAAA,CAAAA,CAAA,EAAwC,KAAA5I,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAwK,WAAA,QAAoC,IAAA1I,EAAA,GAAAf,CAAfa,EAAA,MAAeyI,UAAA,OAAyBG,EAAkBtpB,YAAAygB,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,CAAAb,CAAA,EAAqB,KAAA0J,SAAA,CAAA9I,EAAiB,KAAAlS,IAAA,CAAAuQ,EAAY,KAAA5D,OAAA,CAAAwF,EAAe,KAAApa,OAAA,CAAAuZ,CAAA,CAAepK,UAAAgL,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAiB,YAAA8I,UAAA,GAAA/T,SAAA,CAAAgL,EAAA3B,EAAA4B,EAAA,CAA0CrM,gBAAAoM,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,CAAAb,CAAA,EAAyB,IAAAe,EAAA,KAAA4I,UAAA,GAA0B,OAAAje,QAAA/L,KAAA,CAAAohB,EAAAvM,eAAA,CAAAuM,EAAAzL,UAAA,CAAoDqU,YAAA,CAAa,QAAAC,SAAA,CAAmB,YAAAA,SAAA,CAAsB,IAAAhJ,EAAA,KAAA8I,SAAA,CAAAG,iBAAA,MAAAnb,IAAA,MAAA2M,OAAA,MAAA5U,OAAA,SAA8E,GAAgB,KAAAmjB,SAAA,CAAAhJ,EAAiB,KAAAgJ,SAAA,EAA1B7I,CAA0B,EAAuB9B,EAAAwK,WAAA,CAAAA,CAAA,EAA0B,KAAA7I,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA6E,mBAAA,QAA6B,IAAA9D,EAAAa,EAAA,KAA8BxS,EAAA,GAAA0S,CAAfF,EAAA,MAAe2I,kBAAA,OAAiC1F,EAA0BjR,UAAA+N,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAiB,IAAAE,EAAM,cAAAA,CAAAA,EAAA,KAAA8I,iBAAA,CAAAjJ,EAAA3B,EAAA4B,EAAA,GAAAE,KAAA,IAAAA,EAAAA,EAAA,IAAAf,EAAAyJ,WAAA,MAAA7I,EAAA3B,EAAA4B,EAAA,CAA2FiJ,aAAA,CAAc,IAAAlJ,EAAM,cAAAA,CAAAA,EAAA,KAAAgJ,SAAA,GAAAhJ,KAAA,IAAAA,EAAAA,EAAAvS,CAAA,CAAgDgW,YAAAzD,CAAA,EAAe,KAAAgJ,SAAA,CAAAhJ,CAAA,CAAiBiJ,kBAAAjJ,CAAA,CAAA3B,CAAA,CAAA4B,CAAA,EAAyB,IAAAb,EAAM,cAAAA,CAAAA,EAAA,KAAA4J,SAAA,GAAA5J,KAAA,IAAAA,EAAA,OAAAA,EAAAnN,SAAA,CAAA+N,EAAA3B,EAAA4B,EAAA,EAAuE5B,EAAA6E,mBAAA,CAAAA,CAAA,EAA0C,KAAAlD,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA8K,gBAAA,QAAgC,SAAAnJ,CAAA,EAAaA,CAAA,CAAAA,EAAA,2BAAkCA,CAAA,CAAAA,EAAA,mBAA0BA,CAAA,CAAAA,EAAA,4CAAkD3B,EAAA8K,gBAAA,EAAA9K,CAAAA,EAAA8K,gBAAA,KAA8C,EAAG,KAAAnJ,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA1L,cAAA,CAAA0L,EAAAkF,cAAA,CAAAlF,EAAAgF,UAAA,CAAAhF,EAAApJ,OAAA,CAAAoJ,EAAAiF,aAAA,CAAAjF,EAAAjM,OAAA,QAA0F,IAAAgN,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAAwS,EAAA,KAAeG,EAAA,GAAAhB,EAAAxN,gBAAA,oCAAiE,SAAAQ,EAAA4N,CAAA,EAAoB,OAAAA,EAAA7K,QAAA,CAAAiL,IAAAjc,KAAAA,CAAA,CAA6J,SAAA8Q,EAAA+K,CAAA,CAAA3B,CAAA,EAAsB,OAAA2B,EAAArM,QAAA,CAAAyM,EAAA/B,EAAA,CAAnJA,EAAAjM,OAAA,CAAAA,EAA+FiM,EAAAiF,aAAA,CAA7E,WAAyB,OAAAlR,EAAA3E,EAAAyS,UAAA,CAAAI,WAAA,GAAAjO,MAAA,KAA+HgM,EAAApJ,OAAA,CAAAA,EAAiEoJ,EAAAgF,UAAA,CAA/C,SAAArD,CAAA,EAAuB,OAAAA,EAAA2D,WAAA,CAAAvD,EAAA,EAAyH/B,EAAAkF,cAAA,CAAzE,SAAAvD,CAAA,CAAA3B,CAAA,EAA6B,OAAApJ,EAAA+K,EAAA,IAAAG,EAAAgI,gBAAA,CAAA9J,GAAA,EAA4KA,EAAA1L,cAAA,CAAhG,SAAAqN,CAAA,EAA2B,IAAA3B,EAAM,cAAAA,CAAAA,EAAAjM,EAAA4N,EAAA,GAAA3B,KAAA,IAAAA,EAAA,OAAAA,EAAAhL,WAAA,GAA+D,EAAgC,KAAA2M,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA+K,cAAA,QAAwB,IAAAhK,EAAAa,EAAA,IAA8D,OAAAmJ,EAAqB7pB,YAAAygB,CAAA,EAAe,KAAAqJ,cAAA,KAAA3X,IAA4BsO,GAAA,KAAAsJ,MAAA,CAAAtJ,EAAA,CAAoBhV,IAAAgV,CAAA,CAAA3B,CAAA,EAAS,IAAA4B,EAAA,KAAAsJ,MAAA,GAAuG,OAAjFtJ,EAAAoJ,cAAA,CAAApe,GAAA,CAAA+U,IAA4BC,EAAAoJ,cAAA,CAAArb,MAAA,CAAAgS,GAA2BC,EAAAoJ,cAAA,CAAAre,GAAA,CAAAgV,EAAA3B,GAA0B4B,CAAA,CAASuJ,MAAAxJ,CAAA,EAAS,IAAA3B,EAAA,KAAAkL,MAAA,GAAiD,OAA3BlL,EAAAgL,cAAA,CAAArb,MAAA,CAAAgS,GAA2B3B,CAAA,CAAS1f,IAAAqhB,CAAA,EAAO,YAAAqJ,cAAA,CAAA1qB,GAAA,CAAAqhB,EAAA,CAAkCyJ,WAAA,CAAY,YAAAC,KAAA,GAAAC,MAAA,EAAA3J,EAAA3B,KAAoC2B,EAAA7e,IAAA,CAAAkd,EAArX,IAAqX,KAAA1f,GAAA,CAAA0f,IAAwB2B,GAAS,IAAA5a,IAAA,CAAla,IAAka,CAAckkB,OAAAtJ,CAAA,GAAUA,CAAAA,EAAAhf,MAAA,CAAtc,GAAscyM,IAAqB,KAAA4b,cAAA,CAAArJ,EAAAhb,KAAA,CAA/c,KAA+c4kB,OAAA,GAAAD,MAAA,EAAA3J,EAAA3B,KAAyD,IAAA4B,EAAA5B,EAAAwL,IAAA,GAAiB1J,EAAAF,EAAAnc,OAAA,CAA7gB,KAAkiB,GAAAqc,KAAAA,EAAA,CAAW,IAAA1S,EAAAwS,EAAA5b,KAAA,GAAA8b,GAAqBC,EAAAH,EAAA5b,KAAA,CAAA8b,EAAA,EAAA9B,EAAArd,MAAA,EAA8B,GAAAoe,EAAA0K,WAAA,EAAArc,IAAA,GAAA2R,EAAA2K,aAAA,EAAA3J,IAAiDJ,EAAAhV,GAAA,CAAAyC,EAAA2S,EAAW,CAAO,OAAAJ,CAAA,EAAS,IAAAtO,KAAW,KAAA2X,cAAA,CAAAnK,IAAA,CAA1tB,IAAyvB,MAAAmK,cAAA,KAAA3X,IAAAnK,MAAAqG,IAAA,MAAAyb,cAAA,CAAA3nB,OAAA,IAAAkoB,OAAA,GAAAvlB,KAAA,GAAzvB,IAAyvB,GAA6FqlB,OAAA,CAAQ,OAAAniB,MAAAqG,IAAA,MAAAyb,cAAA,CAAA5d,IAAA,IAAAme,OAAA,GAAwDL,QAAA,CAAS,IAAAvJ,EAAA,IAAAoJ,EAAyE,OAA9CpJ,EAAAqJ,cAAA,KAAA3X,IAAA,KAAA2X,cAAA,EAA8CrJ,CAAA,EAAU3B,EAAA+K,cAAA,CAAAA,CAAA,EAAgC,KAAApJ,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA0L,aAAA,CAAA1L,EAAAyL,WAAA,QAAqC,IAAA7J,EAAA,eAAuBb,EAAA,QAAgBa,EAAA,OAAS,EAAEE,EAAA,WAAmBF,EAAA,aAAS,EAAQA,EAAA,MAAQ,EAAExS,EAAA,cAA0B2R,EAAE,GAAGe,EAAE,KAAKC,EAAA,sBAA8BpQ,EAAA,KAAuDqO,CAAAA,EAAAyL,WAAA,CAAzC,SAAA9J,CAAA,EAAwB,OAAAvS,EAAAxM,IAAA,CAAA+e,EAAA,EAAkG3B,EAAA0L,aAAA,CAAvD,SAAA/J,CAAA,EAA0B,OAAAI,EAAAnf,IAAA,CAAA+e,IAAA,CAAAhQ,EAAA/O,IAAA,CAAA+e,EAAA,CAA6B,EAA8B,IAAAA,EAAA3B,EAAA4B,KAAc5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA2L,gBAAA,QAA0B,IAAA5K,EAAAa,EAAA,IAA2E5B,CAAAA,EAAA2L,gBAAA,CAA5D,SAAAhK,CAAA,EAA6B,WAAAZ,EAAAgK,cAAA,CAAApJ,EAAA,CAA+B,EAAoC,KAAAA,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA+J,oBAAA,CAAA/J,EAAA4L,eAAA,CAAA5L,EAAA6L,cAAA,QAAiE,IAAA9K,EAAAa,EAAA,IAAe5B,CAAAA,EAAA6L,cAAA,oBAAoC7L,EAAA4L,eAAA,oCAAqD5L,EAAA+J,oBAAA,EAAwB+B,QAAA9L,EAAA4L,eAAA,CAAAxW,OAAA4K,EAAA6L,cAAA,CAAAE,WAAAhL,EAAAiL,UAAA,CAAAlF,IAAA,GAAgF,KAAAnF,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA1N,QAAA,QAAwB,SAAAqP,CAAA,EAAaA,CAAA,CAAAA,EAAA,uBAA8BA,CAAA,CAAAA,EAAA,mBAA0BA,CAAA,CAAAA,EAAA,mBAA0BA,CAAA,CAAAA,EAAA,uBAA8BA,CAAA,CAAAA,EAAA,wBAA8B3B,EAAA1N,QAAA,EAAA0N,CAAAA,EAAA1N,QAAA,KAA8B,EAAG,KAAAqP,EAAA3B,EAAA4B,KAAe5hB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA8E,eAAA,CAAA9E,EAAA+E,kBAAA,CAAA/E,EAAAiM,aAAA,CAAAjM,EAAAkM,cAAA,QAA+E,IAAAnL,EAAAa,EAAA,KAAeE,EAAAF,EAAA,KAAexS,EAAA,oBAA4B2S,EAAA,kBAA0B,SAAAmK,EAAAvK,CAAA,EAA2B,OAAAvS,EAAAxM,IAAA,CAAA+e,IAAAA,IAAAZ,EAAA6K,eAAA,CAAwE,SAAAK,EAAAtK,CAAA,EAA0B,OAAAI,EAAAnf,IAAA,CAAA+e,IAAAA,IAAAZ,EAAA8K,cAAA,CAA1D7L,EAAAkM,cAAA,CAAAA,EAAiGlM,EAAAiM,aAAA,CAAAA,EAAuHjM,EAAA+E,kBAAA,CAAzF,SAAApD,CAAA,EAA+B,OAAAuK,EAAAvK,EAAAmK,OAAA,GAAAG,EAAAtK,EAAAvM,MAAA,GAA+J4K,EAAA8E,eAAA,CAA7D,SAAAnD,CAAA,EAA4B,WAAAG,EAAAgI,gBAAA,CAAAnI,EAAA,CAAiC,EAAkC,KAAAA,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAA3N,cAAA,QAA8B,SAAAsP,CAAA,EAAaA,CAAA,CAAAA,EAAA,iBAAwBA,CAAA,CAAAA,EAAA,WAAkBA,CAAA,CAAAA,EAAA,kBAAwB3B,EAAA3N,cAAA,EAAA2N,CAAAA,EAAA3N,cAAA,KAA0C,EAAG,KAAAsP,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAgM,UAAA,QAA0B,SAAArK,CAAA,EAAaA,CAAA,CAAAA,EAAA,eAAsBA,CAAA,CAAAA,EAAA,sBAA4B3B,EAAAgM,UAAA,EAAAhM,CAAAA,EAAAgM,UAAA,KAAkC,EAAG,KAAArK,EAAA3B,KAAahgB,OAAAC,cAAA,CAAA+f,EAAA,cAAsC9f,MAAA,KAAa8f,EAAAmH,OAAA,QAAiBnH,EAAAmH,OAAA,WAAoBnH,EAAA,GAAS,SAAAmM,EAAAvK,CAAA,EAAgC,IAAAb,EAAAf,CAAA,CAAA4B,EAAA,CAAW,GAAAb,KAAAjb,IAAAib,EAAkB,OAAAA,EAAA5iB,OAAA,CAAiB,IAAA2jB,EAAA9B,CAAA,CAAA4B,EAAA,EAAYzjB,QAAA,IAAYiR,EAAA,GAAW,IAAIuS,CAAA,CAAAC,EAAA,CAAA7R,IAAA,CAAA+R,EAAA3jB,OAAA,CAAA2jB,EAAAA,EAAA3jB,OAAA,CAAAguB,GAAqD/c,EAAA,UAAQ,CAAQA,GAAA,OAAA4Q,CAAA,CAAA4B,EAAA,CAAiB,OAAAE,EAAA3jB,OAAA,CAAiBguB,EAAAC,EAAA,CAAmEC,KAAc,IAAAzK,EAAA,GAAS,MAAc5hB,OAAAC,cAAA,CAAR2hB,EAAQ,cAAsC1hB,MAAA,KAAayhB,EAAAvP,KAAA,CAAAuP,EAAAxP,WAAA,CAAAwP,EAAAiG,OAAA,CAAAjG,EAAAyE,IAAA,CAAAzE,EAAAzP,OAAA,CAAAyP,EAAAoI,oBAAA,CAAApI,EAAAiK,eAAA,CAAAjK,EAAAkK,cAAA,CAAAlK,EAAAsK,aAAA,CAAAtK,EAAAuK,cAAA,CAAAvK,EAAAoD,kBAAA,CAAApD,EAAAgK,gBAAA,CAAAhK,EAAAqK,UAAA,CAAArK,EAAAtP,cAAA,CAAAsP,EAAArP,QAAA,CAAAqP,EAAAmJ,gBAAA,CAAAnJ,EAAAkD,mBAAA,CAAAlD,EAAA6I,WAAA,CAAA7I,EAAA4C,oBAAA,CAAA5C,EAAA8C,oBAAA,CAAA9C,EAAAkG,SAAA,CAAAlG,EAAAmG,eAAA,CAAAnG,EAAAiB,YAAA,CAAAjB,EAAA8E,iBAAA,CAAA9E,EAAApP,YAAA,CAAAoP,EAAApO,gBAAA,CAAAoO,EAAAqE,8BAAA,QAA6c,IAAAhG,EAAAmM,EAAA,KAA+BnsB,OAAAC,cAAA,CAAviB2hB,EAAuiB,kCAA0D9gB,WAAA,GAAAR,IAAA,WAA+B,OAAA0f,EAAAgG,8BAAA,IAA2C,IAAAjF,EAAAoL,EAAA,KAA+BnsB,OAAAC,cAAA,CAA1sB2hB,EAA0sB,oBAA4C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAygB,EAAAxN,gBAAA,IAA6BvT,OAAAC,cAAA,CAAlzB2hB,EAAkzB,gBAAwC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAygB,EAAAxO,YAAA,IAAyB,IAAAuP,EAAAqK,EAAA,KAA+BnsB,OAAAC,cAAA,CAAj7B2hB,EAAi7B,qBAA6C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAwhB,EAAA2E,iBAAA,IAA8B,IAAArX,EAAA+c,EAAA,KAA+BnsB,OAAAC,cAAA,CAA1jC2hB,EAA0jC,gBAAwC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAA8O,EAAAwT,YAAA,IAAyB,IAAAb,EAAAoK,EAAA,KAA+BnsB,OAAAC,cAAA,CAAzrC2hB,EAAyrC,mBAA2C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAyhB,EAAA+F,eAAA,IAA4B,IAAAnW,EAAAwa,EAAA,KAA+BnsB,OAAAC,cAAA,CAA9zC2hB,EAA8zC,aAAqC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAqR,EAAAkW,SAAA,IAAsB,IAAA/E,EAAAqJ,EAAA,KAA+BnsB,OAAAC,cAAA,CAAv7C2hB,EAAu7C,wBAAgD9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAwiB,EAAA2B,oBAAA,IAAiCzkB,OAAAC,cAAA,CAAviD2hB,EAAuiD,wBAAgD9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAwiB,EAAAyB,oBAAA,IAAiC,IAAAvB,EAAAmJ,EAAA,KAA+BnsB,OAAAC,cAAA,CAAtrD2hB,EAAsrD,eAAuC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAA0iB,EAAAwH,WAAA,IAAwB,IAAAvH,EAAAkJ,EAAA,KAA+BnsB,OAAAC,cAAA,CAAnzD2hB,EAAmzD,uBAA+C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAA2iB,EAAA4B,mBAAA,IAAgC,IAAA/kB,EAAAqsB,EAAA,KAA+BnsB,OAAAC,cAAA,CAAh8D2hB,EAAg8D,oBAA4C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAR,EAAAgrB,gBAAA,IAA6B,IAAArY,EAAA0Z,EAAA,KAA+BnsB,OAAAC,cAAA,CAAvkE2hB,EAAukE,YAAoC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAmS,EAAAH,QAAA,IAAqB,IAAAga,EAAAH,EAAA,KAA+BnsB,OAAAC,cAAA,CAA9rE2hB,EAA8rE,kBAA0C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAgsB,EAAAja,cAAA,IAA2B,IAAAyO,EAAAqL,EAAA,KAA+BnsB,OAAAC,cAAA,CAAj0E2hB,EAAi0E,cAAsC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAwgB,EAAAkL,UAAA,IAAuB,IAAAO,EAAAJ,EAAA,IAA8BnsB,OAAAC,cAAA,CAA37E2hB,EAA27E,oBAA4C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAisB,EAAAZ,gBAAA,IAA6B,IAAAa,EAAAL,EAAA,KAA+BnsB,OAAAC,cAAA,CAAlkF2hB,EAAkkF,sBAA8C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAksB,EAAAzH,kBAAA,IAA+B/kB,OAAAC,cAAA,CAA9qF2hB,EAA8qF,kBAA0C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAksB,EAAAN,cAAA,IAA2BlsB,OAAAC,cAAA,CAAlxF2hB,EAAkxF,iBAAyC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAksB,EAAAP,aAAA,IAA0B,IAAA7Q,EAAA+Q,EAAA,KAA+BnsB,OAAAC,cAAA,CAAn5F2hB,EAAm5F,kBAA0C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAA8a,EAAAyQ,cAAA,IAA2B7rB,OAAAC,cAAA,CAAv/F2hB,EAAu/F,mBAA2C9gB,WAAA,GAAAR,IAAA,WAA+B,OAAA8a,EAAAwQ,eAAA,IAA4B5rB,OAAAC,cAAA,CAA7lG2hB,EAA6lG,wBAAgD9gB,WAAA,GAAAR,IAAA,WAA+B,OAAA8a,EAAA2O,oBAAA,IAAiC,IAAA0C,EAAAN,EAAA,IAAgCnsB,OAAAC,cAAA,CAA7uG2hB,EAA6uG,WAAmC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAmsB,EAAAva,OAAA,IAAoB,IAAAwa,EAAAP,EAAA,KAAiCnsB,OAAAC,cAAA,CAAp2G2hB,EAAo2G,QAAgC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAosB,EAAAtG,IAAA,IAAiB,IAAAuG,EAAAR,EAAA,KAAiCnsB,OAAAC,cAAA,CAAr9G2hB,EAAq9G,WAAmC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAqsB,EAAA/E,OAAA,IAAoB,IAAAgF,EAAAT,EAAA,KAAiCnsB,OAAAC,cAAA,CAA5kH2hB,EAA4kH,eAAuC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAssB,EAAAza,WAAA,IAAwB,IAAA0a,EAAAV,EAAA,KAAiCnsB,OAAAC,cAAA,CAA3sH2hB,EAA2sH,SAAiC9gB,WAAA,GAAAR,IAAA,WAA+B,OAAAusB,EAAAza,KAAA,IAAkBuP,EAAA,SAAczP,QAAAua,EAAAva,OAAA,CAAAkU,KAAAsG,EAAAtG,IAAA,CAAAwB,QAAA+E,EAAA/E,OAAA,CAAAzV,YAAAya,EAAAza,WAAA,CAAAC,MAAAya,EAAAza,KAAA,MAA6FlU,EAAAC,OAAA,CAAAyjB,CAAA,cCAh63B,MAAM,YAAa,qBAAAuK,qBAAAA,CAAAA,oBAAAC,EAAA,CAAmEC,IAAS,EAAK,IAAA1K,EAAA,GAAS,MAM7GC,EAAAkL,KAAA,CAAmJ,SAAAnL,CAAA,CAAAC,CAAA,EAAoB,oBAAAD,EAAwB,iDAA6G,QAAxD3B,EAAA,GAAqB5Q,EAAAuS,EAAAhb,KAAA,CAAAmb,GAAiBgB,EAAA/B,CAA7Ba,GAAA,IAA6BmL,MAAA,EAAAhL,EAAkBtP,EAAA,EAAYA,EAAArD,EAAAzM,MAAA,CAAW8P,IAAA,CAAK,IAAA8Z,EAAAnd,CAAA,CAAAqD,EAAA,CAAWuQ,EAAAuJ,EAAA9mB,OAAA,MAAqB,IAAAud,CAAAA,EAAA,IAAiB,IAAA5H,EAAAmR,EAAAS,MAAA,GAAAhK,GAAAwI,IAAA,GAA2B7Z,EAAA4a,EAAAS,MAAA,GAAAhK,EAAAuJ,EAAA5pB,MAAA,EAAA6oB,IAAA,EAAoC,MAAA7Z,CAAA,KAAcA,CAAAA,EAAAA,EAAA3L,KAAA,QAAgBF,KAAAA,GAAAka,CAAA,CAAA5E,EAAA,EAAoB4E,CAAAA,CAAA,CAAA5E,EAAA,CAAA6R,SAAgqCtL,CAAA,CAAAC,CAAA,EAAwB,IAAI,OAAAA,EAAAD,EAAA,CAAY,MAAAC,EAAA,CAAS,OAAAD,CAAA,GAAjtChQ,EAAAmR,EAAA,GAAqB,OAAA9C,CAAA,EAA9e4B,EAAAwJ,SAAA,CAAuf,SAAAzJ,CAAA,CAAAC,CAAA,CAAAG,CAAA,EAA0B,IAAAD,EAAAC,GAAA,GAAY3S,EAAA0S,EAAAoL,MAAA,EAAAlN,EAAkB,sBAAA5Q,EAA0B,4CAAgD,IAAA2R,EAAAne,IAAA,CAAA+e,GAAe,4CAAgD,IAAAmB,EAAA1T,EAAAwS,GAAW,GAAAkB,GAAA,CAAA/B,EAAAne,IAAA,CAAAkgB,GAAkB,2CAA+C,IAAArQ,EAAAkP,EAAA,IAAAmB,EAAc,SAAAhB,EAAA/C,MAAA,EAAmB,IAAAwN,EAAAzK,EAAA/C,MAAA,GAAiB,GAAAoO,MAAAZ,IAAA,CAAAa,SAAAb,GAA2B,4CAAgD9Z,GAAA,aAAM4a,KAAAC,KAAA,CAAAf,EAAA,CAAwB,GAAAzK,EAAApY,MAAA,EAAa,IAAAqX,EAAAne,IAAA,CAAAkf,EAAApY,MAAA,EAAsB,4CAAgD+I,GAAA,YAAMqP,EAAApY,MAAA,CAAkB,GAAAoY,EAAAvc,IAAA,EAAW,IAAAwb,EAAAne,IAAA,CAAAkf,EAAAvc,IAAA,EAAoB,0CAA8CkN,GAAA,UAAMqP,EAAAvc,IAAA,CAAc,GAAAuc,EAAA3J,OAAA,EAAc,sBAAA2J,EAAA3J,OAAA,CAAA2G,WAAA,CAA8C,6CAAiDrM,GAAA,aAAMqP,EAAA3J,OAAA,CAAA2G,WAAA,GAA4F,GAA1DgD,EAAA9J,QAAA,EAAevF,CAAAA,GAAA,YAAM,EAAUqP,EAAA5J,MAAA,EAAazF,CAAAA,GAAA,UAAM,EAAQqP,EAAA7J,QAAA,CAAsF,OAAvE,iBAAA6J,EAAA7J,QAAA,CAAA6J,EAAA7J,QAAA,CAAA3U,WAAA,GAAAwe,EAAA7J,QAAA,EAAiF,OAA2E,aAA3ExF,GAAA,oBAAiC,KAAM,WAAAA,GAAA,iBAA8B,KAAgD,YAAAA,GAAA,kBAAgC,KAAM,uDAA2D,OAAAA,CAAA,EAA1lD,IAAAsP,EAAAxC,mBAAyBS,EAAAb,mBAAyB2C,EAAA,MAAYf,EAAA,uCAAslD,KAAe7iB,EAAAC,OAAA,CAAAwjB,CAAA,wBCN1sD4L,EAAA,MAAM,IAAAxL,EAAA,CAAO,aAAAA,CAAA,CAAAJ,CAAA,GAAkB,SAAAvS,CAAA,CAAA0S,CAAA,EAAe,aAAa,IAAAgB,EAAA,WAAA0J,EAAA,YAAAgB,EAAA,SAAAvK,EAAA,SAAAqJ,EAAA,QAAA3a,EAAA,QAAAqR,EAAA,OAAAvQ,EAAA,OAAAgb,EAAA,SAAAlB,EAAA,UAAAmB,EAAA,eAAAtS,EAAA,UAAAtb,EAAA,SAAA6tB,EAAA,SAAAC,EAAA,UAAA9M,EAAA,WAAA+M,EAAA,WAAuOC,EAAA,SAAAlB,EAAA,QAAAmB,EAAA,OAAApB,EAAA,aAAAqB,EAAA,UAAAnB,EAAA,SAAAJ,EAAA,UAAAwB,EAAA,SAAAC,EAAA,SAAAC,EAAA,YAAAC,EAAA,WAAAC,EAAA,QAAAC,EAAA,UAAAC,EAAA,QAAAC,EAAA,OAAAC,EAAA,SAAAC,EAAA,QAAAC,EAAA,WAAAC,EAAA,cAAAC,EAAA,SAAqQC,EAAA,SAAA/M,CAAA,CAAAJ,CAAA,EAAyB,IAAAvS,EAAA,GAAS,QAAA0S,KAAAC,EAAgBJ,CAAA,CAAAG,EAAA,EAAAH,CAAA,CAAAG,EAAA,CAAAnf,MAAA,MAA4ByM,CAAA,CAAA0S,EAAA,CAAAH,CAAA,CAAAG,EAAA,CAAAiN,MAAA,CAAAhN,CAAA,CAAAD,EAAA,EAA4B1S,CAAA,CAAA0S,EAAA,CAAAC,CAAA,CAAAD,EAAA,CAAW,OAAA1S,CAAA,EAAS4f,EAAA,SAAAjN,CAAA,EAAgC,QAATJ,EAAA,GAASvS,EAAA,EAAYA,EAAA2S,EAAApf,MAAA,CAAWyM,IAAKuS,CAAA,CAAAI,CAAA,CAAA3S,EAAA,CAAA6f,WAAA,IAAAlN,CAAA,CAAA3S,EAAA,CAA2B,OAAAuS,CAAA,EAAS/U,EAAA,SAAAmV,CAAA,CAAAJ,CAAA,EAAmB,cAAAI,IAAAkB,GAAAiM,KAAAA,EAAAvN,GAAAlc,OAAA,CAAAypB,EAAAnN,GAAA,EAAgEmN,EAAA,SAAAnN,CAAA,EAAsB,OAAAA,EAAAze,WAAA,IAAyGkoB,EAAA,SAAAzJ,CAAA,CAAAJ,CAAA,EAAoB,UAAAI,IAAAkB,EAAyC,OAAxBlB,EAAAA,EAAA1c,OAAA,UAAj8B,IAAy9B,OAAAsc,IAAA6K,EAAAzK,EAAAA,EAAAhf,SAAA,GAAz9B,IAAy9B,EAAyCosB,EAAA,SAAApN,CAAA,CAAAJ,CAAA,EAAgD,IAApB,IAAAC,EAAA5B,EAAAe,EAAAyL,EAAAvJ,EAAAqJ,EAAAld,EAAA,EAAoBA,EAAAuS,EAAAhf,MAAA,GAAAsgB,GAAA,CAAsB,IAAAtR,EAAAgQ,CAAA,CAAAvS,EAAA,CAAA4T,EAAArB,CAAA,CAAAvS,EAAA,GAA0B,IAANwS,EAAA5B,EAAA,EAA4B,EAAtBrO,EAAAhP,MAAA,GAAAsgB,GAAsBtR,CAAA,CAAAiQ,EAAA,EAAiC,GAAjBqB,EAAAtR,CAAA,CAAAiQ,IAAA,CAAAwN,IAAA,CAAArN,GAAyB,IAAAhB,EAAA,EAAQA,EAAAiC,EAAArgB,MAAA,CAAWoe,IAAKuL,EAAArJ,CAAA,GAAAjD,EAAA,CAAgB,MAAPwM,CAAAA,EAAAxJ,CAAA,CAAAjC,EAAA,IAAOyM,GAAAhB,EAAA7pB,MAAA,GAA6B6pB,IAAAA,EAAA7pB,MAAA,CAAiB,OAAA6pB,CAAA,KAAA1J,EAAmB,KAAA0J,CAAA,KAAAA,CAAA,IAAAzc,IAAA,MAAAuc,GAAkC,KAAAE,CAAA,KAAAA,CAAA,IAAiBA,IAAAA,EAAA7pB,MAAA,CAAsB,OAAA6pB,CAAA,MAAA1J,GAAA0J,CAAA,IAAA4C,IAAA,EAAA5C,CAAA,IAAA5pB,IAAA,CAAwF,KAAA4pB,CAAA,KAAAF,EAAAA,EAAAjnB,OAAA,CAAAmnB,CAAA,IAAAA,CAAA,KAAv8C1K,KAAAA,EAA45C,KAAA0K,CAAA,KAAAF,EAAAE,CAAA,IAAAzc,IAAA,MAAAuc,EAAAE,CAAA,KAA55C1K,KAAAA,EAA4+C,IAAA0K,EAAA7pB,MAAA,EAAsB,MAAA6pB,CAAA,KAAAF,EAAAE,CAAA,IAAAzc,IAAA,MAAAuc,EAAAjnB,OAAA,CAAAmnB,CAAA,IAAAA,CAAA,MAAlgD1K,KAAAA,CAAkgDA,EAA0D,KAAA0K,EAAA,CAAAF,GAAAxK,EAAiB1S,GAAA,IAAMigB,EAAA,SAAAtN,CAAA,CAAAJ,CAAA,EAAyB,QAAAvS,KAAAuS,EAAgB,UAAAA,CAAA,CAAAvS,EAAA,GAAAoe,GAAA7L,CAAA,CAAAvS,EAAA,CAAAzM,MAAA,GAAmC,SAAAif,EAAA,EAAYA,EAAAD,CAAA,CAAAvS,EAAA,CAAAzM,MAAA,CAAcif,IAAK,GAAAhV,EAAA+U,CAAA,CAAAvS,EAAA,CAAAwS,EAAA,CAAAG,GAAmB,MAAA3S,MAAAA,EAAA0S,EAAA1S,CAAA,MAAmB,GAAAxC,EAAA+U,CAAA,CAAAvS,EAAA,CAAA2S,GAAqB,MAAA3S,MAAAA,EAAA0S,EAAA1S,EAAkB,OAAA2S,CAAA,EAAgHuN,EAAA,CAAIC,GAAA,wDAAAC,GAAA,oBAAAC,MAAA,oEAAAC,GAAA,OAAsKC,EAAA,CAAOC,QAAA,mCAAArD,EAAA,CAAAvJ,EAAA,4CAAAuJ,EAAA,CAAAvJ,EAAA,yFAA+J,4CAAAA,EAAAuJ,EAAA,4BAAAA,EAAA,CAAAvJ,EAAAqL,EAAA,iCAAA9B,EAAA,CAAAvJ,EAAAqL,EAAA,mcAAArL,EAAAuJ,EAAA,wDAAAA,EAAA,CAAAvJ,EAAA,KAAAgL,EAAA,mEAAAzB,EAAA,CAAAvJ,EAAA,wDAAAuJ,EAAA,CAAAvJ,EAAA,sCAAAuJ,EAAA,CAAAvJ,EAAA,6DAA43B,EAAAuJ,EAAA,CAAAvJ,EAAA,6CAAAuJ,EAAA,CAAAvJ,EAAA,yCAAAA,EAAA,oBAAAgL,EAAA,CAAAzB,EAAA,0BAAAA,EAAA,CAAAvJ,EAAAyJ,EAAA,kCAAAF,EAAA,CAAAvJ,EAAAqL,EAAA,uCAAA9B,EAAA,CAAAvJ,EAAA,oCAAAuJ,EAAA,CAAAvJ,EAAA,mCAAAuJ,EAAA,CAAAvJ,EAAAqL,EAAA,wCAAA9B,EAAA,CAAAvJ,EAAA,QAAAgL,EAAA,0BAAAzB,EAAA,CAAAvJ,EAAAyJ,EAAA,sCAAAzJ,EAAA,OAAAgL,EAAA,4DAAAhL,EAAA,aAAAgL,EAAA,CAAAzB,EAAA,mCAAAvJ,EAAA,UAAAuJ,EAAA,8IAAAvJ,EAAAuJ,EAAA,mEAAAvJ,EAAA,gEAAq3B,GAAAA,EAAA2L,EAAA,CAAApC,EAAA,4KAAAvJ,EAAAuJ,EAAA,mCAAAA,EAAA,CAAAvJ,EAAA,wDAAAuJ,EAAA,CAAAvJ,EAAA,iDAAAuJ,EAAA,CAAAvJ,EAAA6J,EAAA,gDAAA7J,EAAA6J,EAAA,YAAAN,EAAA,8DAAAA,EAAA,CAAAvJ,EAAA,WAAAgL,EAAA,iEAAqhB,EAAAhL,EAAAuJ,EAAA,mDAAAA,EAAA,CAAAvJ,EAAA,0EAAAuJ,EAAAvJ,EAAA,mDAAAA,EAAA,CAAAuJ,EAAA8C,EAA5rF,CAAO,gGAAqrF,kCAAArM,EAAAuJ,EAAA,4CAAAvJ,EAAA,YAAAuJ,EAAA,wCAAyV,EAAAA,EAAA,CAAAvJ,EAAAyJ,EAAA,keAA2f,EAAAzJ,EAAAuJ,EAAA,2BAAAvJ,EAAA,CAAAuJ,EAAA,qBAAAsD,IAAA,kDAAqH,GAAAnC,EAAA,0BAAgC,GAAAA,EAAAwB,EAAA,4BAAyC,GAAAxB,EAAA,gDAAAA,EAAA,gDAAAA,EAAA,wCAAoJ,GAAAA,EAAA,kDAAmD,GAAAA,EAAA,OAA9oL,GAA8oLwB,EAAA,oBAA4C,GAAAxB,EAAA,qIAAmF,GAAAA,EAAAwB,EAAA,GAAAY,OAAA,oFAAgJ,EAAAne,EAAA,CAAA8b,EAAAa,EAAA,EAAA7b,EAAAkb,EAAA,qGAAAhc,EAAA,CAAA8b,EAAAa,EAAA,EAAA7b,EAAA3S,EAAA,8CAAoM,EAAA6R,EAAA,CAAA8b,EAAAb,EAAA,EAAAna,EAAA3S,EAAA,gCAAyC,qEAAoE,EAAA6R,EAAA,CAAA8b,EAAAb,EAAA,EAAAna,EAAAkb,EAAA,mBAA0C,EAAAhc,EAAA,CAAA8b,EAAAb,EAAA,qCAAAjb,EAAA,CAAA8b,EAAAc,EAAA,EAAA9b,EAAA3S,EAAA,iEAA+G,EAAA6R,EAAA,CAAA8b,EAAAS,EAAA,EAAAzb,EAAAkb,EAAA,qCAA8D,qEAA0B,EAAAhc,EAAA,CAAA8b,EAAAS,EAAA,EAAAzb,EAAA3S,EAAA,yDAAqG,mMAAA6R,EAAA,WAAA8b,EAAAgB,EAAA,EAAAhc,EAAA3S,EAAA,mDAAA6R,EAAA,WAAA8b,EAAAgB,EAAA,EAAAhc,EAAAkb,EAAA,yBAA8T,kEAAmC,EAAAhc,EAAA,CAAA8b,EAAA,SAAAhb,EAAA3S,EAAA,+DAAiI,EAAA6R,EAAA,CAAA8b,EAAA,SAAAhb,EAAA3S,EAAA,oCAAqD,EAAA6R,EAAA,CAAA8b,EAAA,WAAAhb,EAAA3S,EAAA,qKAA0K,EAAA6R,EAAA,CAAA8b,EAAAW,EAAA,EAAA3b,EAAA3S,EAAA,uCAAkE,EAAA6R,EAAA,CAAA8b,EAAAW,EAAA,EAAA3b,EAAAkb,EAAA,mEAA0F,EAAAhc,EAAA,CAAA8b,EAA1pO,KAA0pO,EAAAhb,EAAAkb,EAAA,6GAAqF,yBAAAhc,EAAA,CAAA8b,EAA/uO,KAA+uO,EAAAhb,EAAA3S,EAAA,2FAAwK,EAAA6R,EAAA,CAAA8b,EAAA,WAAAhb,EAAAkb,EAAA,oEAAAhc,EAAA,WAAA8b,EAAA,UAAAhb,EAAA3S,EAAA,oBAAA6R,EAAA,CAAA8b,EAAAQ,EAAA,EAAAxb,EAAAkb,EAAA,+CAA4L,EAAAhc,EAAA,CAAA8b,EAAAQ,EAAA,EAAAxb,EAAA3S,EAAA,4GAAiI,EAAA6R,EAAA,CAAA8b,EAAAe,EAAA,EAAA/b,EAAA3S,EAAA,0DAAA6R,EAAA,kBAAA8b,EAAAe,EAAA,EAAA/b,EAAAkb,EAAA,oFAAAhc,EAAA,CAAA8b,EAAA,YAAAhb,EAAA3S,EAAA,yDAAqQ,iCAAA6R,EAAA,CAAA8b,EAAAK,EAAA,EAAArb,EAAAkb,EAAA,sDAAAhc,EAAA,0BAAA8b,EAAAK,EAAA,EAAArb,EAAA3S,EAAA,kCAA+K,EAAA6R,EAAA8b,EAAA,CAAAhb,EAAAkb,EAAA,oDAAiE,EAAAhc,EAAA,CAAA8b,EAAAd,EAAA,EAAAla,EAAA3S,EAAA,uFAA8D,EAAA6R,EAAA,CAAA8b,EAAAM,EAAA,EAAAtb,EAAAkb,EAAA,qDAAAhc,EAAA,CAAA8b,EAAAM,EAAA,EAAAtb,EAAA3S,EAAA,kBAAA6R,EAAA,CAAA8b,EAAA,QAAAhb,EAAAkb,EAAA,8CAAwL,oHAA0G,EAAAF,EAAA,CAAA9b,EAAA,WAAAc,EAAA3S,EAAA,yCAAuE,EAAA6R,EAAA,CAAA8b,EAAA,SAAAhb,EAAAkb,EAAA,iCAA6D,oBAAoC,EAAAhc,EAAA,CAAA8b,EAAA,UAAAhb,EAAA3S,EAAA,uKAAgL,+DAAA2tB,EAAA9b,EAAA,CAAAc,EAAA3S,EAAA,mNAAmS,8BAA8B,gCAAgC,oCAAA2tB,EAAA9b,EAAA,CAAAc,EAAAkb,EAAA,sBAAAhc,EAAA,CAAA8b,EAAAU,EAAA,EAAA1b,EAAAkb,EAAA,uCAA2G,EAAAhc,EAAA,CAAA8b,EAAA,cAAAhb,EAAA3S,EAAA,iBAAA6R,EAAA,CAAA8b,EAAA,SAAAhb,EAAA3S,EAAA,oBAAA6R,EAAA,CAAA8b,EAAA,YAAAhb,EAAA3S,EAAA,qBAAA6R,EAAA,CAAA8b,EAAA,QAAAhb,EAAAkb,EAAA,4BAAqL,EAAAhc,EAAA,CAAA8b,EAAA,SAAAhb,EAAAkb,EAAA,4BAAAhc,EAAA,CAAA8b,EAAA,YAAAhb,EAAAkb,EAAA,mDAAAhc,EAAA,CAAA8b,EAAA,mBAAAhb,EAAAkb,EAAA,uBAAwK,EAAAhc,EAAA,CAAA8b,EAAA,aAAAhb,EAAAkb,EAAA,kBAAAhc,EAAA,CAAA8b,EAAA,QAAAhb,EAAAkb,EAAA,qBAAkF,EAAAhc,EAAA,CAAA8b,EAAA,QAAAhb,EAAA3S,EAAA,0BAAyC,EAAA6R,EAAA,CAAA8b,EAAA,UAAAhb,EAAA3S,EAAA,qBAA+C,EAAA6R,EAAA,CAAA8b,EAAA,UAAAhb,EAAAkb,EAAA,4BAAAhc,EAAA,CAAA8b,EAAA,SAAAhb,EAAAkb,EAAA,sBAAyF,qCAAqC,GAAAF,EAAA,gBAAA9b,EAAA,CAAAc,EAAAkb,EAAA,wBAAoD,EAAAhc,EAAA,CAAA8b,EAAA,aAAAhb,EAAAkb,EAAA,gCAAwD,EAAAhc,EAAA,CAAA8b,EAAA,aAAAhb,EAAAkb,EAAA,yDAAAF,EAAA,SAAA9b,EAAA,CAAAc,EAAA3S,EAAA,gCAAA2tB,EAAA,SAAA9b,EAAA,CAAAc,EAAA3S,EAAA,kBAAA6R,EAAA,CAAA8b,EAAA,cAAAhb,EAAA3S,EAAA,2CAAA6R,EAAA,CAAA8b,EAAA,YAAAhb,EAAAkb,EAAA,4BAAAhc,EAAA,CAAA8b,EAAA,cAAAhb,EAAAkb,EAAA,sBAAAhc,EAAA,CAAA8b,EAAA,UAAAhb,EAAAkb,EAAA,yBAAAhc,EAAA,CAAA8b,EAAA,WAAAhb,EAAAkb,EAAA,uBAAAF,EAAA9b,EAAA,CAAAc,EAAA3S,EAAA,wBAAic,GAAA6R,EAAA,YAAA8b,EAAAU,EAAA,EAAA1b,EAAA3S,EAAA,2DAA4C,EAAA6R,EAAA,CAAA8b,EAAAiB,EAAA,EAAAjc,EAAAkb,EAAA,2CAA0E,EAAAhc,EAAA,CAAA8b,EAAAiB,EAAA,EAAAjc,EAAA3S,EAAA,4BAAA2tB,EAAA,CAAAhb,EAAAmb,EAAA,yBAAiG,GAAAjc,EAAA,gBAAA8b,EAAAa,EAAA,EAAA7b,EAAAmb,EAAA,gEAAiD,GAAAH,EAAvwV,KAAuwV,EAAAhb,EAAAmb,EAAA,oBAAAH,EAAA,CAAA9b,EAAAib,EAAA,QAAAna,EAAAmb,EAAA,eAAAjc,EAAAkb,EAAA,SAAAY,EAAAQ,EAAA,EAAAxb,EAAAmb,EAAA,gCAAAjc,EAAA,CAAA8b,EAAAK,EAAA,EAAArb,EAAAmb,EAAA,0BAA0M,wBAAAjc,EAAA,CAAA8b,EAAAc,EAAA,EAAA9b,EAAAmb,EAAA,gCAAAjc,EAAA,CAAA8b,EAAAe,EAAA,EAAA/b,EAAAmb,EAAA,uBAA8G,EAAAjc,EAAA,CAAA8b,EAAAgB,EAAA,EAAAhc,EAAAmb,EAAA,+BAAmD,EAAAH,EAAA9b,EAAA,CAAAc,EAAAmb,EAAA,yGAAiH,GAAAH,EAAAjC,EAAA,EAAA7Z,EAAA6Z,EAAA,EAAA/Y,EAAAmb,EAAA,qDAA2E,GAAAnb,EAAAmb,EAAA,4CAAAH,EAAA9b,EAAA,CAAAc,EAAA2I,EAAA,4BAAkF,EAAAzJ,EAAA,CAAA8b,EAAA,WAAAhb,EAAA2I,EAAA,uCAAAzJ,EAAA,CAAA8b,EAAAe,EAAA,EAAA/b,EAAA2I,EAAA,wCAA6H,EAAAzJ,EAAA,CAAA8b,EAAAU,EAAA,EAAA1b,EAAA2I,EAAA,sBAAAqS,EAAA9b,EAAA,CAAAc,EAAAqO,EAAA,4CAAAnP,EAAA,CAAA8b,EAAAb,EAAA,EAAAna,EAAAqO,EAAA,0BAAwH,EAAAnP,EAAA,CAAA8b,EAAAQ,EAAA,EAAAxb,EAAAqO,EAAA,+BAAqD,EAAAnP,EAAA,CAAA8b,EAAAiB,EAAA,EAAAjc,EAAAqO,EAAA,0BAAAnP,EAAA,CAAA8b,EAAAkB,EAAA,EAAAlc,EAAAqO,EAAA,4CAAA2M,EAAA,CAAAhb,EAAAob,EAAA,kBAAAlc,EAAA,CAAA8b,EAAAK,EAAA,EAAArb,EAAAob,EAAA,6DAAiK,EAAAlc,EAAA,CAAAc,EAAA3S,EAAA,iEAAsE,EAAA6R,EAAA,CAAAc,EAAAkb,EAAA,kDAA4E,GAAAlb,EAAAkb,EAAA,oEAA0D,GAAAlb,EAAA3S,EAAA,oCAAgF,EAAA6R,EAAA,CAAA8b,EAAA,aAAAsC,OAAA,iCAAAxD,EAAA,CAAAvJ,EAAAgN,WAAA,iDAAAzD,EAAA,CAAAvJ,EAAA,yNAAAA,EAAAuJ,EAAA,kCAAyX,EAAAA,EAAAvJ,EAAA,EAAAiN,GAAA,sCAAAjN,EAAAuJ,EAAA,8BAA0F,uGAAAvJ,EAAA,CAAAuJ,EAAA8C,EAAAC,EAAA,2CAAAtM,EAAA,YAAAuJ,EAAA8C,EAAAC,EAAA,yDAAuP,uBAAc,0BAAA/C,EAAA,WAAAvJ,EAAA,8EAAAA,EAAA6L,EAAA,EAAAtC,EAAA,+DAAAA,EAAAvJ,EAAA,+JAAgX,EAAAA,EAAAuJ,EAAA,eAAqB,EAAAA,EAAA,CAAAvJ,EAAA2J,EAAA,+DAA6C,EAAAJ,EAAA,CAAAvJ,EAAA,+FAA2G,EAAAuJ,EAAA,CAAAvJ,EAAAyJ,EAAA,2BAAkD,yCAAAF,EAAA,CAAAvJ,EAAA,oDAAAuJ,EAAA,CAAAvJ,EAAA,mCAAAuJ,EAAA,CAAAvJ,EAAA6J,EAAA,gDAAA7J,EAAA4L,EAAA,CAAArC,EAAA,uBAAgO,0HAA8H,6FAA+F,0aAA+Z,mBAAAvJ,EAAAuJ,EAAA,6BAAAvJ,EAAA,WAAAuJ,EAAA,oKAAAvJ,EAAAuJ,EAAA,GAA6P2D,GAAA,SAAAnO,CAAA,CAAAJ,CAAA,EAAoD,GAAzB,OAAAI,IAAAyL,IAAiB7L,EAAAI,EAAIA,EAAAD,GAAI,kBAAAoO,EAAA,EAAgC,WAAAA,GAAAnO,EAAAJ,GAAAwO,SAAA,GAAqC,IAAAvO,EAAA,OAAAxS,IAAAod,GAAApd,EAAAghB,SAAA,CAAAhhB,EAAAghB,SAAA,CAAAtO,EAA8Cf,EAAAgB,GAAAH,CAAAA,GAAAA,EAAAyO,SAAA,CAAAzO,EAAAyO,SAAA,CAAr3d,EAAq3drQ,EAAwC5E,EAAAwG,GAAAA,EAAA0O,aAAA,CAAA1O,EAAA0O,aAAA,CAAAxO,EAA2C8L,EAAAjM,EAAAmN,EAAAa,EAAAhO,GAAAgO,EAAsB7O,EAAAc,GAAAA,EAAAyO,SAAA,EAAAtP,EAA4hC,OAApgC,KAAAwP,UAAA,YAA2B,IAAvscxO,EAAuscA,EAAA,GAAmI,OAA1HA,CAAA,CAAAiB,EAAA,CAAAlB,EAAOC,CAAA,CAAAwK,EAAA,CAAAzK,EAAOqN,EAAApf,IAAA,CAAAgS,EAAAhB,EAAA6M,EAAAgC,OAAA,EAA8B7N,CAAA,CAAAuK,EAAA,CAAtuc,OAAtBvK,EAA4vcA,CAAA,CAAAwK,EAAA,IAAtuctJ,EAAAlB,EAAA1c,OAAA,YAAh2B,IAAg2BsB,KAAA,SAAAmb,EAA0vchB,GAAAc,GAAAA,EAAA4O,KAAA,SAAA5O,EAAA4O,KAAA,CAAAC,OAAA,EAAA3N,GAA6Cf,CAAAA,CAAA,CAAAiB,EAAA,UAAajB,CAAA,EAAU,KAAA2O,MAAA,YAAuB,IAAA3O,EAAA,GAA0C,OAAjCA,CAAA,CAAA2L,EAAA,CAAA5L,EAAOqN,EAAApf,IAAA,CAAAgS,EAAAhB,EAAA6M,EAAAiC,GAAA,EAA0B9N,CAAA,EAAU,KAAA4O,SAAA,YAA0B,IAAA5O,EAAA,GAA0M,OAAjMA,CAAA,CAAA0L,EAAA,CAAA3L,EAAOC,CAAA,CAAApQ,EAAA,CAAAmQ,EAAOC,CAAA,CAAAtP,EAAA,CAAAqP,EAAOqN,EAAApf,IAAA,CAAAgS,EAAAhB,EAAA6M,EAAAkC,MAAA,EAA6BhP,GAAA,CAAAiB,CAAA,CAAAtP,EAAA,EAAA2I,GAAAA,EAAAwV,MAAA,EAA0B7O,CAAAA,CAAA,CAAAtP,EAAA,CAAA3S,CAAAA,EAAOghB,GAAAiB,aAAAA,CAAA,CAAApQ,EAAA,EAAAiQ,GAAA,OAAAA,EAAAiP,UAAA,GAAArE,GAAA5K,EAAAkP,cAAA,EAAAlP,EAAAkP,cAAA,KAA2F/O,CAAA,CAAApQ,EAAA,QAAYoQ,CAAA,CAAAtP,EAAA,CAAAkb,GAAO5L,CAAA,EAAU,KAAAgP,SAAA,YAA0B,IAAAhP,EAAA,GAAoD,OAA3CA,CAAA,CAAAiB,EAAA,CAAAlB,EAAOC,CAAA,CAAAwK,EAAA,CAAAzK,EAAOqN,EAAApf,IAAA,CAAAgS,EAAAhB,EAAA6M,EAAAmC,MAAA,EAA6BhO,CAAA,EAAU,KAAAiP,KAAA,YAAsB,IAAAjP,EAAA,GAAmJ,OAA1IA,CAAA,CAAAiB,EAAA,CAAAlB,EAAOC,CAAA,CAAAwK,EAAA,CAAAzK,EAAOqN,EAAApf,IAAA,CAAAgS,EAAAhB,EAAA6M,EAAAqC,EAAA,EAAyBnP,GAAA,CAAAiB,CAAA,CAAAiB,EAAA,EAAA5H,GAAAA,WAAAA,EAAA6V,QAAA,EAAuClP,CAAAA,CAAA,CAAAiB,EAAA,CAAA5H,EAAA6V,QAAA,CAAA5rB,OAAA,cAAAupB,GAAAvpB,OAAA,UAAAwpB,EAAA,EAA4D9M,CAAA,EAAU,KAAAoO,SAAA,YAA0B,OAAO9jB,GAAA,KAAA6kB,KAAA,GAAAtB,QAAA,KAAAW,UAAA,GAAAR,OAAA,KAAAgB,SAAA,GAAAd,GAAA,KAAAe,KAAA,GAAAlB,OAAA,KAAAa,SAAA,GAAAd,IAAA,KAAAa,MAAA,KAA8H,KAAAQ,KAAA,YAAsB,OAAAnQ,CAAA,EAAU,KAAAoQ,KAAA,UAAApP,CAAA,EAA8D,OAAvChB,EAAA,OAAAgB,IAAAkB,GAAAlB,EAAApf,MAAA,CAAx7f,IAAw7f6oB,EAAAzJ,EAAx7f,KAAw7fA,EAAuC,MAAa,KAAAoP,KAAA,CAAApQ,GAAc,KAAamP,CAAAA,GAAA/I,OAAA,CAAvggB,SAA0hgB+I,GAAAkB,OAAA,CAAApC,EAAA,CAAAhM,EAAAuJ,EAAAD,EAAA,EAAoC4D,GAAAmB,GAAA,CAAArC,EAAA,CAAAtB,EAAA,EAA4BwC,GAAAoB,MAAA,CAAAtC,EAAA,CAAArd,EAAA8b,EAAAhb,EAAA2I,EAAAtb,EAAA8tB,EAAAD,EAAA7M,EAAA+M,EAAA,EAA+CqC,GAAAqB,MAAA,CAAArB,GAAAsB,EAAA,CAAAxC,EAAA,CAAAhM,EAAAuJ,EAAA,EAA6C,OAAA5K,IAAA6K,GAAiBzK,EAAA5jB,OAAA,EAA4BwjB,CAAAA,EAAAI,EAAA5jB,OAAA,CAAA+xB,EAAA,EAAqBvO,EAAAuO,QAAA,CAAAA,IAA+CrwB,EAAA4xB,IAAU,CAAqClE,KAAAznB,IAAnCynB,CAAAA,EAAA,CAAQ,WAAW,OAAA2C,EAAA,GAAgBngB,IAAA,CAAA5R,EAAA0B,EAAA1B,EAAAD,EAAA,GAAAA,CAAAA,EAAAC,OAAA,CAAAovB,CAAA,EAAG,OAAAne,IAAAod,GAAsBpd,CAAAA,EAAA8gB,QAAA,CAAAA,EAAA,EAAqB,IAAAwB,GAAA,OAAAtiB,IAAAod,GAAApd,CAAAA,EAAAuiB,MAAA,EAAAviB,EAAAwiB,KAAA,EAAwC,GAAAF,IAAA,CAAAA,GAAArlB,EAAA,EAAa,IAAAwlB,GAAA,IAAA3B,EAAmBwB,CAAAA,GAAArlB,EAAA,CAAAwlB,GAAA1B,SAAA,GAAmBuB,GAAArlB,EAAA,CAAA/L,GAAA,YAAoB,OAAAuxB,GAAAX,KAAA,IAAkBQ,GAAArlB,EAAA,CAAAM,GAAA,UAAAoV,CAAA,EAAqB8P,GAAAV,KAAA,CAAApP,GAAW,IAAAJ,EAAAkQ,GAAA1B,SAAA,GAAoB,QAAA/gB,KAAAuS,EAAgB+P,GAAArlB,EAAA,CAAA+C,EAAA,CAAAuS,CAAA,CAAAvS,EAAA,IAAgB,iBAAA0iB,OAAAA,OAAA,QAA0CnQ,EAAA,GAAS,SAAAwK,EAAA/c,CAAA,EAAgC,IAAA0S,EAAAH,CAAA,CAAAvS,EAAA,CAAW,GAAA0S,KAAAhc,IAAAgc,EAAkB,OAAAA,EAAA3jB,OAAA,CAAiB,IAAAyjB,EAAAD,CAAA,CAAAvS,EAAA,EAAYjR,QAAA,IAAY6hB,EAAA,GAAW,IAAI+B,CAAA,CAAA3S,EAAA,CAAAW,IAAA,CAAA6R,EAAAzjB,OAAA,CAAAyjB,EAAAA,EAAAzjB,OAAA,CAAAguB,GAAqDnM,EAAA,UAAQ,CAAQA,GAAA,OAAA2B,CAAA,CAAAvS,EAAA,CAAiB,OAAAwS,EAAAzjB,OAAA,CAAiBguB,EAAAC,EAAA,CAAmEC,KAAc,IAAAjd,EAAA+c,EAAA,IAA+BjuB,CAAAA,EAAAC,OAAA,CAAAiR,CAAA,iCCCnhiBpP,OAAAC,cAAA,CAAA9B,EAAA,aAA6C,CAC7C+B,MAAA,EACA,GAWA6xB,SANAxlB,CAAA,CAAA4Q,CAAA,EACA,QAAA1N,KAAA0N,EAAAnd,OAAAC,cAAA,CAAAsM,EAAAkD,EAAA,CACA3O,WAAA,GACAR,IAAA6c,CAAA,CAAA1N,EAAA,EAEA,EACAtR,EAAA,CACA6zB,eAAA,WACA,OAAAA,CACA,EACAC,YAAA,WACA,OAAAA,CACA,CACA,GAEA,IAAAC,EAAA,GAAAC,CADyBtyB,EAAQ,GAAkB,EACnD6Q,iBAAA,CACA,SAAA0hB,EAAAjb,CAAA,CAAAkb,CAAA,EACA,IAAAC,EAAAD,EAAAzR,MAAA,CAAAzJ,EAAA,wBACA,GAAAmb,EAMA,OACA9uB,IAJA6uB,EAAA7uB,GAAA,CAAA2T,GAKAob,UAJArS,OAAAoS,GAKAE,SAJAH,EAAAzR,MAAA,CAAAzJ,EAAA,qBAKA,CACA,CACA,SAAA8a,EAAA9a,CAAA,CAAAkb,CAAA,CAAAle,CAAA,EACA,IAAAse,EAAAL,EAAAjb,EAAAkb,UACA,EAGAH,EAAA5hB,GAAA,CAAAmiB,EAAAte,GAFAA,GAGA,CACA,SAAA6d,EAAA7a,CAAA,CAAAkb,CAAA,SAEA,EADAhiB,QAAA,KAIA8G,GAAAkb,EACAD,EAAAjb,EAAAkb,UAGA,kDCrDAryB,OAAAC,cAAA,CAAA9B,EAAA,aAA6C,CAC7C+B,MAAA,EACA,GAYA6xB,SANAxlB,CAAA,CAAA4Q,CAAA,EACA,QAAA1N,KAAA0N,EAAAnd,OAAAC,cAAA,CAAAsM,EAAAkD,EAAA,CACA3O,WAAA,GACAR,IAAA6c,CAAA,CAAA1N,EAAA,EAEA,EACAtR,EAAA,CACAu0B,YAAA,WACA,OAAAA,CACA,EACAC,eAAA,WACA,OAAAA,CACA,EACAN,OAAA,WACA,OAAAA,CACA,CACA,GACA,IAAAO,EAAiB/yB,EAAQ,KACzBwyB,EAAA,CACA7uB,IAAAA,GACA2T,EAAA3T,GAAA,CAEAod,OAAAA,CAAAzJ,EAAA1H,IACA0H,EAAAlU,OAAA,CAAA3C,GAAA,CAAAmP,EAEA,EAkBA,eAAAojB,EAAAL,CAAA,CAAAvtB,CAAA,EACA,IAAYzB,IAAAA,CAAA,CAAAuI,OAAAA,CAAA,CAAA9I,QAAAA,CAAA,CAAAsK,KAAAA,CAAA,CAAA9B,MAAAA,CAAA,CAAAC,YAAAA,CAAA,CAAAG,UAAAA,CAAA,CAAAG,KAAAA,CAAA,CAAAC,SAAAA,CAAA,CAAAC,SAAAA,CAAA,CAAAC,eAAAA,CAAA,EAAsGlH,EAClH,OACAutB,SAAAA,EACAn0B,IAAA,QACA4G,QAAA,CACAzB,IAAAA,EACAuI,OAAAA,EACA9I,QAAA,IACAiG,MAAAqG,IAAA,CAAAtM,GACA,CACA,kBACA6vB,WA5BA,IAAA/P,EAAA,SAAAA,KAAA,MAAApc,KAAA,OAEA,QAAAob,EAAA,EAAmBA,EAAAgB,EAAApgB,MAAA,CAAkBof,IACrC,GAAAgB,CAAA,CAAAhB,EAAA,CAAApf,MAAA,IACAogB,EAAAA,EAAA/c,KAAA,CAAA+b,GACA,KACA,CAQA,MAAAgB,CADAA,EAAAA,CAFAA,EAAAA,CAFAA,EAAAA,EAAArR,MAAA,KAAA6a,EAAAniB,QAAA,kBAEApE,KAAA,OAEA4H,GAAA,IAAAkV,EAAAzd,OAAA,kCAAAmmB,IAAA,KACAzkB,IAAA,QACA,IAcA,CACA,CACAwG,KAAAA,EAAyBwlB,EAAMxjB,IAAA,OAAAtK,EAAA+tB,WAAA,IAAA5pB,QAAA,gBAC/BqC,MAAAA,EACAC,YAAAA,EACAG,UAAAA,EACAG,KAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,eAAAA,CACA,CACA,CACA,CAQA,eAAAumB,EAAAO,CAAA,CAAAhuB,CAAA,EACA,IAAAiuB,EAAA,GAAAN,EAAAZ,cAAA,EAAA/sB,EAAAotB,GACA,IAAAa,EAEA,OAAAD,EAAAhuB,GAEA,IAAYutB,SAAAA,CAAA,CAAAD,UAAAA,CAAA,EAAsBW,EAClCC,EAAA,MAAAN,EAAAL,EAAAvtB,GACAmuB,EAAA,MAAAH,EAAA,oBAAyDV,EAAU,GACnExmB,OAAA,OACAwB,KAAA2T,KAAAC,SAAA,CAAAgS,GACA5kB,KAAA,CAEA8kB,SAAA,EACA,CACA,GACA,IAAAD,EAAArlB,EAAA,CACA,qCAAiDqlB,EAAAnlB,MAAA,CAAY,GAE7D,IAAAqlB,EAAA,MAAAF,EAAAhlB,IAAA,GACA,CAAY/P,IAAAA,CAAA,EAAMi1B,EAClB,OAAAj1B,GACA,eACA,OAAA40B,EAAAhuB,EACA,aACA,gBACA,sCAAsDA,EAAA8G,MAAA,EAAgB,EAAE9G,EAAAzB,GAAA,CAAY,GAGpF,CACA,OAAA+vB,SArCAD,CAAA,EACA,IAAYrlB,OAAAA,CAAA,CAAAhL,QAAAA,CAAA,CAAAsK,KAAAA,CAAA,EAAwB+lB,EAAA7uB,QAAA,CACpC,WAAA6I,SAAAC,EAA+BwlB,EAAMxjB,IAAA,CAAAhC,EAAA,gBACrCU,OAAAA,EACAhL,QAAA,IAAAkK,QAAAlK,EACA,EACA,EA+BAqwB,EACA,CACA,SAAAX,EAAAM,CAAA,EAUA,OATIpzB,EAAAC,CAAM,CAAA0zB,KAAA,UAAAnsB,CAAA,CAAA6D,CAAA,EACV,IAAAuoB,QAGA,CAAAvoB,MAAAA,EAAA,aAAAuoB,CAAAA,EAAAvoB,EAAAqD,IAAA,SAAAklB,EAAAJ,QAAA,EACAJ,EAAA5rB,EAAA6D,GAEAwnB,EAAAO,EAAA,IAAAhoB,QAAA5D,EAAA6D,GACA,EACA,KACQrL,EAAAC,CAAM,CAAA0zB,KAAA,CAAAP,CACd,CACA,8BCjIAjzB,OAAAC,cAAA,CAAA9B,EAAA,aAA6C,CAC7C+B,MAAA,EACA,GAWA6xB,SANAxlB,CAAA,CAAA4Q,CAAA,EACA,QAAA1N,KAAA0N,EAAAnd,OAAAC,cAAA,CAAAsM,EAAAkD,EAAA,CACA3O,WAAA,GACAR,IAAA6c,CAAA,CAAA1N,EAAA,EAEA,EACAtR,EAAA,CACAoc,kBAAA,WACA,OAAAA,CACA,EACAC,mBAAA,WACA,OAAAA,CACA,CACA,GACA,IAAAoY,EAAiB/yB,EAAQ,KACzB6zB,EAAe7zB,EAAQ,KACvB,SAAA0a,IACA,SAAAmZ,EAAAf,cAAA,EAAsC9yB,EAAAC,CAAM,CAAA0zB,KAAA,CAC5C,CACA,SAAAhZ,EAAAoC,CAAA,EACA,OAAAzF,EAAAhD,IAAA,GAAAye,EAAAX,WAAA,EAAA9a,EAAAuc,EAAArB,MAAA,KAAAzV,EAAAzF,EAAAhD,GACA","sources":["webpack://_N_E/external commonjs \"node:async_hooks\"","webpack://_N_E/external commonjs \"node:buffer\"","webpack://_N_E/./node_modules/next/dist/esm/server/web/globals.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/error.js","webpack://_N_E/./node_modules/next/dist/esm/lib/constants.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/utils.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js","webpack://_N_E/../../../src/shared/lib/i18n/detect-domain-locale.ts","webpack://_N_E/../../../src/shared/lib/router/utils/remove-trailing-slash.ts","webpack://_N_E/../../../src/shared/lib/router/utils/parse-path.ts","webpack://_N_E/../../../src/shared/lib/router/utils/add-path-prefix.ts","webpack://_N_E/../../../src/shared/lib/router/utils/add-path-suffix.ts","webpack://_N_E/../../../src/shared/lib/router/utils/path-has-prefix.ts","webpack://_N_E/../../../src/shared/lib/router/utils/add-locale.ts","webpack://_N_E/../../../src/shared/lib/router/utils/format-next-pathname-info.ts","webpack://_N_E/../../../src/shared/lib/get-hostname.ts","webpack://_N_E/../../../src/shared/lib/i18n/normalize-locale-path.ts","webpack://_N_E/../../../src/shared/lib/router/utils/remove-path-prefix.ts","webpack://_N_E/../../../src/shared/lib/router/utils/get-next-pathname-info.ts","webpack://_N_E/./node_modules/next/dist/esm/server/web/next-url.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/request.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/response.js","webpack://_N_E/../../../src/shared/lib/router/utils/relativize-url.ts","webpack://_N_E/../../../src/client/components/app-router-headers.ts","webpack://_N_E/./node_modules/next/dist/esm/server/internal-utils.js","webpack://_N_E/../../../src/shared/lib/router/utils/app-paths.ts","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js","webpack://_N_E/../../../src/client/components/async-local-storage.ts","webpack://_N_E/../../../src/client/components/static-generation-async-storage-instance.ts","webpack://_N_E/../../../src/client/components/static-generation-async-storage.external.ts","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js","webpack://_N_E/./node_modules/next/dist/esm/server/lib/trace/constants.js","webpack://_N_E/./node_modules/next/dist/esm/server/lib/trace/tracer.js","webpack://_N_E/./node_modules/next/dist/esm/server/api-utils/index.js","webpack://_N_E/./node_modules/next/dist/esm/server/async-storage/draft-mode-provider.js","webpack://_N_E/./node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js","webpack://_N_E/../../../src/client/components/request-async-storage-instance.ts","webpack://_N_E/../../../src/client/components/request-async-storage.external.ts","webpack://_N_E/./node_modules/next/dist/esm/server/web/get-edge-preview-props.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/adapter.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/user-agent.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/spec-extension/url-pattern.js","webpack://_N_E/./node_modules/next/dist/esm/server/web/exports/index.js","webpack://_N_E/./node_modules/next/dist/esm/api/server.js","webpack://_N_E/./src/middleware.ts","webpack://_N_E/","webpack://_N_E/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js","webpack://_N_E/./node_modules/next/dist/compiled/@opentelemetry/api/index.js","webpack://_N_E/./node_modules/next/dist/compiled/cookie/index.js","webpack://_N_E/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js","webpack://_N_E/./node_modules/next/dist/experimental/testmode/context.js","webpack://_N_E/./node_modules/next/dist/experimental/testmode/fetch.js","webpack://_N_E/./node_modules/next/dist/experimental/testmode/server-edge.js"],"sourcesContent":["module.exports = require(\"node:async_hooks\");","module.exports = require(\"node:buffer\");","async function registerInstrumentation() {\n const register = \"_ENTRIES\" in globalThis && _ENTRIES.middleware_instrumentation && (await _ENTRIES.middleware_instrumentation).register;\n if (register) {\n try {\n await register();\n } catch (err) {\n err.message = `An error occurred while loading instrumentation hook: ${err.message}`;\n throw err;\n }\n }\n}\nlet registerInstrumentationPromise = null;\nexport function ensureInstrumentationRegistered() {\n if (!registerInstrumentationPromise) {\n registerInstrumentationPromise = registerInstrumentation();\n }\n return registerInstrumentationPromise;\n}\nfunction getUnsupportedModuleErrorMessage(module) {\n // warning: if you change these messages, you must adjust how react-dev-overlay's middleware detects modules not found\n return `The edge runtime does not support Node.js '${module}' module.\nLearn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;\n}\nfunction __import_unsupported(moduleName) {\n const proxy = new Proxy(function() {}, {\n get (_obj, prop) {\n if (prop === \"then\") {\n return {};\n }\n throw new Error(getUnsupportedModuleErrorMessage(moduleName));\n },\n construct () {\n throw new Error(getUnsupportedModuleErrorMessage(moduleName));\n },\n apply (_target, _this, args) {\n if (typeof args[0] === \"function\") {\n return args[0](proxy);\n }\n throw new Error(getUnsupportedModuleErrorMessage(moduleName));\n }\n });\n return new Proxy({}, {\n get: ()=>proxy\n });\n}\nfunction enhanceGlobals() {\n // The condition is true when the \"process\" module is provided\n if (process !== global.process) {\n // prefer local process but global.process has correct \"env\"\n process.env = global.process.env;\n global.process = process;\n }\n // to allow building code that import but does not use node.js modules,\n // webpack will expect this function to exist in global scope\n Object.defineProperty(globalThis, \"__import_unsupported\", {\n value: __import_unsupported,\n enumerable: false,\n configurable: false\n });\n // Eagerly fire instrumentation hook to make the startup faster.\n void ensureInstrumentationRegistered();\n}\nenhanceGlobals();\n\n//# sourceMappingURL=globals.js.map","export class PageSignatureError extends Error {\n constructor({ page }){\n super(`The middleware \"${page}\" accepts an async API directly with the form:\n \n export function middleware(request, event) {\n return NextResponse.redirect('/new-location')\n }\n \n Read more: https://nextjs.org/docs/messages/middleware-new-signature\n `);\n }\n}\nexport class RemovedPageError extends Error {\n constructor(){\n super(`The request.page has been deprecated in favour of \\`URLPattern\\`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n `);\n }\n}\nexport class RemovedUAError extends Error {\n constructor(){\n super(`The request.ua has been removed in favour of \\`userAgent\\` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n `);\n }\n}\n\n//# sourceMappingURL=error.js.map","export const NEXT_QUERY_PARAM_PREFIX = \"nxtP\";\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = \"nxtI\";\nexport const PRERENDER_REVALIDATE_HEADER = \"x-prerender-revalidate\";\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = \"x-prerender-revalidate-if-generated\";\nexport const RSC_PREFETCH_SUFFIX = \".prefetch.rsc\";\nexport const RSC_SUFFIX = \".rsc\";\nexport const ACTION_SUFFIX = \".action\";\nexport const NEXT_DATA_SUFFIX = \".json\";\nexport const NEXT_META_SUFFIX = \".meta\";\nexport const NEXT_BODY_SUFFIX = \".body\";\nexport const NEXT_CACHE_TAGS_HEADER = \"x-next-cache-tags\";\nexport const NEXT_CACHE_SOFT_TAGS_HEADER = \"x-next-cache-soft-tags\";\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = \"x-next-revalidated-tags\";\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = \"x-next-revalidate-tag-token\";\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128;\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256;\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024;\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = \"_N_T_\";\n// in seconds\nexport const CACHE_ONE_YEAR = 31536000;\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = \"middleware\";\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`;\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = \"instrumentation\";\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = \"private-next-pages\";\nexport const DOT_NEXT_ALIAS = \"private-dot-next\";\nexport const ROOT_DIR_ALIAS = \"private-next-root-dir\";\nexport const APP_DIR_ALIAS = \"private-next-app-dir\";\nexport const RSC_MOD_REF_PROXY_ALIAS = \"private-next-rsc-mod-ref-proxy\";\nexport const RSC_ACTION_VALIDATE_ALIAS = \"private-next-rsc-action-validate\";\nexport const RSC_ACTION_PROXY_ALIAS = \"private-next-rsc-server-reference\";\nexport const RSC_ACTION_ENCRYPTION_ALIAS = \"private-next-rsc-action-encryption\";\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS = \"private-next-rsc-action-client-wrapper\";\nexport const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`;\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`;\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`;\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`;\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`;\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`;\nexport const GSP_NO_RETURNED_VALUE = \"Your `getStaticProps` function did not return an object. Did you forget to add a `return`?\";\nexport const GSSP_NO_RETURNED_VALUE = \"Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?\";\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR = \"The `unstable_revalidate` property is available for general use.\\n\" + \"Please use `revalidate` instead.\";\nexport const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`;\nexport const NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`;\nexport const SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`;\nexport const ESLINT_DEFAULT_DIRS = [\n \"app\",\n \"pages\",\n \"components\",\n \"lib\",\n \"src\"\n];\nexport const SERVER_RUNTIME = {\n edge: \"edge\",\n experimentalEdge: \"experimental-edge\",\n nodejs: \"nodejs\"\n};\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */ const WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */ shared: \"shared\",\n /**\n * React Server Components layer (rsc).\n */ reactServerComponents: \"rsc\",\n /**\n * Server Side Rendering layer for app (ssr).\n */ serverSideRendering: \"ssr\",\n /**\n * The browser client bundle layer for actions.\n */ actionBrowser: \"action-browser\",\n /**\n * The layer for the API routes.\n */ api: \"api\",\n /**\n * The layer for the middleware code.\n */ middleware: \"middleware\",\n /**\n * The layer for the instrumentation hooks.\n */ instrument: \"instrument\",\n /**\n * The layer for assets on the edge.\n */ edgeAsset: \"edge-asset\",\n /**\n * The browser client bundle layer for App directory.\n */ appPagesBrowser: \"app-pages-browser\",\n /**\n * The server bundle layer for metadata routes.\n */ appMetadataRoute: \"app-metadata-route\",\n /**\n * The layer for the server bundle for App Route handlers.\n */ appRouteHandler: \"app-route-handler\"\n};\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.appMetadataRoute,\n WEBPACK_LAYERS_NAMES.appRouteHandler,\n WEBPACK_LAYERS_NAMES.instrument\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser\n ],\n nonClientServerTarget: [\n // middleware and pages api\n WEBPACK_LAYERS_NAMES.middleware,\n WEBPACK_LAYERS_NAMES.api\n ],\n app: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.appMetadataRoute,\n WEBPACK_LAYERS_NAMES.appRouteHandler,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument\n ]\n }\n};\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: \"__next_edge_ssr_entry__\",\n metadata: \"__next_metadata__\",\n metadataRoute: \"__next_metadata_route__\",\n metadataImageMeta: \"__next_metadata_image_meta__\"\n};\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES };\n\n//# sourceMappingURL=constants.js.map","import { NEXT_INTERCEPTION_MARKER_PREFIX, NEXT_QUERY_PARAM_PREFIX } from \"../../lib/constants\";\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */ export function fromNodeOutgoingHttpHeaders(nodeHeaders) {\n const headers = new Headers();\n for (let [key, value] of Object.entries(nodeHeaders)){\n const values = Array.isArray(value) ? value : [\n value\n ];\n for (let v of values){\n if (typeof v === \"undefined\") continue;\n if (typeof v === \"number\") {\n v = v.toString();\n }\n headers.append(key, v);\n }\n }\n return headers;\n}\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/ export function splitCookiesString(cookiesString) {\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while(pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))){\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while(pos < cookiesString.length){\n start = pos;\n cookiesSeparatorFound = false;\n while(skipWhitespace()){\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while(pos < cookiesString.length && notSpecialChar()){\n pos += 1;\n }\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */ export function toNodeOutgoingHttpHeaders(headers) {\n const nodeHeaders = {};\n const cookies = [];\n if (headers) {\n for (const [key, value] of headers.entries()){\n if (key.toLowerCase() === \"set-cookie\") {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value));\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies;\n } else {\n nodeHeaders[key] = value;\n }\n }\n }\n return nodeHeaders;\n}\n/**\n * Validate the correctness of a user-provided URL.\n */ export function validateURL(url) {\n try {\n return String(new URL(String(url)));\n } catch (error) {\n throw new Error(`URL is malformed \"${String(url)}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, {\n cause: error\n });\n }\n}\n/**\n * Normalizes `nxtP` and `nxtI` query param values to remove the prefix.\n * This function does not mutate the input key; it calls the provided function\n * with the normalized key.\n */ export function normalizeNextQueryParam(key, onKeyNormalized) {\n const prefixes = [\n NEXT_QUERY_PARAM_PREFIX,\n NEXT_INTERCEPTION_MARKER_PREFIX\n ];\n for (const prefix of prefixes){\n if (key !== prefix && key.startsWith(prefix)) {\n const normalizedKey = key.substring(prefix.length);\n onKeyNormalized(normalizedKey);\n }\n }\n}\n\n//# sourceMappingURL=utils.js.map","import { PageSignatureError } from \"../error\";\nconst responseSymbol = Symbol(\"response\");\nconst passThroughSymbol = Symbol(\"passThrough\");\nexport const waitUntilSymbol = Symbol(\"waitUntil\");\nclass FetchEvent {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(_request){\n this[waitUntilSymbol] = [];\n this[passThroughSymbol] = false;\n }\n respondWith(response) {\n if (!this[responseSymbol]) {\n this[responseSymbol] = Promise.resolve(response);\n }\n }\n passThroughOnException() {\n this[passThroughSymbol] = true;\n }\n waitUntil(promise) {\n this[waitUntilSymbol].push(promise);\n }\n}\nexport class NextFetchEvent extends FetchEvent {\n constructor(params){\n super(params.request);\n this.sourcePage = params.page;\n }\n /**\n * @deprecated The `request` is now the first parameter and the API is now async.\n *\n * Read more: https://nextjs.org/docs/messages/middleware-new-signature\n */ get request() {\n throw new PageSignatureError({\n page: this.sourcePage\n });\n }\n /**\n * @deprecated Using `respondWith` is no longer needed.\n *\n * Read more: https://nextjs.org/docs/messages/middleware-new-signature\n */ respondWith() {\n throw new PageSignatureError({\n page: this.sourcePage\n });\n }\n}\n\n//# sourceMappingURL=fetch-event.js.map",null,null,null,null,null,null,null,null,null,null,null,null,"import { detectDomainLocale } from \"../../shared/lib/i18n/detect-domain-locale\";\nimport { formatNextPathnameInfo } from \"../../shared/lib/router/utils/format-next-pathname-info\";\nimport { getHostname } from \"../../shared/lib/get-hostname\";\nimport { getNextPathnameInfo } from \"../../shared/lib/router/utils/get-next-pathname-info\";\nconst REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\\/\\/)(127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\\[::1\\]|localhost)/;\nfunction parseURL(url, base) {\n return new URL(String(url).replace(REGEX_LOCALHOST_HOSTNAME, \"localhost\"), base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, \"localhost\"));\n}\nconst Internal = Symbol(\"NextURLInternal\");\nexport class NextURL {\n constructor(input, baseOrOpts, opts){\n let base;\n let options;\n if (typeof baseOrOpts === \"object\" && \"pathname\" in baseOrOpts || typeof baseOrOpts === \"string\") {\n base = baseOrOpts;\n options = opts || {};\n } else {\n options = opts || baseOrOpts || {};\n }\n this[Internal] = {\n url: parseURL(input, base ?? options.base),\n options: options,\n basePath: \"\"\n };\n this.analyze();\n }\n analyze() {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig, _this_Internal_domainLocale, _this_Internal_options_nextConfig_i18n1, _this_Internal_options_nextConfig1;\n const info = getNextPathnameInfo(this[Internal].url.pathname, {\n nextConfig: this[Internal].options.nextConfig,\n parseData: !process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE,\n i18nProvider: this[Internal].options.i18nProvider\n });\n const hostname = getHostname(this[Internal].url, this[Internal].options.headers);\n this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : detectDomainLocale((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname);\n const defaultLocale = ((_this_Internal_domainLocale = this[Internal].domainLocale) == null ? void 0 : _this_Internal_domainLocale.defaultLocale) || ((_this_Internal_options_nextConfig1 = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n1 = _this_Internal_options_nextConfig1.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n1.defaultLocale);\n this[Internal].url.pathname = info.pathname;\n this[Internal].defaultLocale = defaultLocale;\n this[Internal].basePath = info.basePath ?? \"\";\n this[Internal].buildId = info.buildId;\n this[Internal].locale = info.locale ?? defaultLocale;\n this[Internal].trailingSlash = info.trailingSlash;\n }\n formatPathname() {\n return formatNextPathnameInfo({\n basePath: this[Internal].basePath,\n buildId: this[Internal].buildId,\n defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined,\n locale: this[Internal].locale,\n pathname: this[Internal].url.pathname,\n trailingSlash: this[Internal].trailingSlash\n });\n }\n formatSearch() {\n return this[Internal].url.search;\n }\n get buildId() {\n return this[Internal].buildId;\n }\n set buildId(buildId) {\n this[Internal].buildId = buildId;\n }\n get locale() {\n return this[Internal].locale ?? \"\";\n }\n set locale(locale) {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig;\n if (!this[Internal].locale || !((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.locales.includes(locale))) {\n throw new TypeError(`The NextURL configuration includes no locale \"${locale}\"`);\n }\n this[Internal].locale = locale;\n }\n get defaultLocale() {\n return this[Internal].defaultLocale;\n }\n get domainLocale() {\n return this[Internal].domainLocale;\n }\n get searchParams() {\n return this[Internal].url.searchParams;\n }\n get host() {\n return this[Internal].url.host;\n }\n set host(value) {\n this[Internal].url.host = value;\n }\n get hostname() {\n return this[Internal].url.hostname;\n }\n set hostname(value) {\n this[Internal].url.hostname = value;\n }\n get port() {\n return this[Internal].url.port;\n }\n set port(value) {\n this[Internal].url.port = value;\n }\n get protocol() {\n return this[Internal].url.protocol;\n }\n set protocol(value) {\n this[Internal].url.protocol = value;\n }\n get href() {\n const pathname = this.formatPathname();\n const search = this.formatSearch();\n return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`;\n }\n set href(url) {\n this[Internal].url = parseURL(url);\n this.analyze();\n }\n get origin() {\n return this[Internal].url.origin;\n }\n get pathname() {\n return this[Internal].url.pathname;\n }\n set pathname(value) {\n this[Internal].url.pathname = value;\n }\n get hash() {\n return this[Internal].url.hash;\n }\n set hash(value) {\n this[Internal].url.hash = value;\n }\n get search() {\n return this[Internal].url.search;\n }\n set search(value) {\n this[Internal].url.search = value;\n }\n get password() {\n return this[Internal].url.password;\n }\n set password(value) {\n this[Internal].url.password = value;\n }\n get username() {\n return this[Internal].url.username;\n }\n set username(value) {\n this[Internal].url.username = value;\n }\n get basePath() {\n return this[Internal].basePath;\n }\n set basePath(value) {\n this[Internal].basePath = value.startsWith(\"/\") ? value : `/${value}`;\n }\n toString() {\n return this.href;\n }\n toJSON() {\n return this.href;\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return {\n href: this.href,\n origin: this.origin,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash\n };\n }\n clone() {\n return new NextURL(String(this), this[Internal].options);\n }\n}\n\n//# sourceMappingURL=next-url.js.map","export { RequestCookies, ResponseCookies, stringifyCookie } from \"next/dist/compiled/@edge-runtime/cookies\";\n\n//# sourceMappingURL=cookies.js.map","import { NextURL } from \"../next-url\";\nimport { toNodeOutgoingHttpHeaders, validateURL } from \"../utils\";\nimport { RemovedUAError, RemovedPageError } from \"../error\";\nimport { RequestCookies } from \"./cookies\";\nexport const INTERNALS = Symbol(\"internal request\");\n/**\n * This class extends the [Web `Request` API](https://developer.mozilla.org/docs/Web/API/Request) with additional convenience methods.\n *\n * Read more: [Next.js Docs: `NextRequest`](https://nextjs.org/docs/app/api-reference/functions/next-request)\n */ export class NextRequest extends Request {\n constructor(input, init = {}){\n const url = typeof input !== \"string\" && \"url\" in input ? input.url : String(input);\n validateURL(url);\n if (input instanceof Request) super(input, init);\n else super(url, init);\n const nextUrl = new NextURL(url, {\n headers: toNodeOutgoingHttpHeaders(this.headers),\n nextConfig: init.nextConfig\n });\n this[INTERNALS] = {\n cookies: new RequestCookies(this.headers),\n geo: init.geo || {},\n ip: init.ip,\n nextUrl,\n url: process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE ? url : nextUrl.toString()\n };\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return {\n cookies: this.cookies,\n geo: this.geo,\n ip: this.ip,\n nextUrl: this.nextUrl,\n url: this.url,\n // rest of props come from Request\n bodyUsed: this.bodyUsed,\n cache: this.cache,\n credentials: this.credentials,\n destination: this.destination,\n headers: Object.fromEntries(this.headers),\n integrity: this.integrity,\n keepalive: this.keepalive,\n method: this.method,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n get geo() {\n return this[INTERNALS].geo;\n }\n get ip() {\n return this[INTERNALS].ip;\n }\n get nextUrl() {\n return this[INTERNALS].nextUrl;\n }\n /**\n * @deprecated\n * `page` has been deprecated in favour of `URLPattern`.\n * Read more: https://nextjs.org/docs/messages/middleware-request-page\n */ get page() {\n throw new RemovedPageError();\n }\n /**\n * @deprecated\n * `ua` has been removed in favour of \\`userAgent\\` function.\n * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n */ get ua() {\n throw new RemovedUAError();\n }\n get url() {\n return this[INTERNALS].url;\n }\n}\n\n//# sourceMappingURL=request.js.map","export class ReflectAdapter {\n static get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n return value;\n }\n static set(target, prop, value, receiver) {\n return Reflect.set(target, prop, value, receiver);\n }\n static has(target, prop) {\n return Reflect.has(target, prop);\n }\n static deleteProperty(target, prop) {\n return Reflect.deleteProperty(target, prop);\n }\n}\n\n//# sourceMappingURL=reflect.js.map","import { stringifyCookie } from \"../../web/spec-extension/cookies\";\nimport { NextURL } from \"../next-url\";\nimport { toNodeOutgoingHttpHeaders, validateURL } from \"../utils\";\nimport { ReflectAdapter } from \"./adapters/reflect\";\nimport { ResponseCookies } from \"./cookies\";\nconst INTERNALS = Symbol(\"internal response\");\nconst REDIRECTS = new Set([\n 301,\n 302,\n 303,\n 307,\n 308\n]);\nfunction handleMiddlewareField(init, headers) {\n var _init_request;\n if (init == null ? void 0 : (_init_request = init.request) == null ? void 0 : _init_request.headers) {\n if (!(init.request.headers instanceof Headers)) {\n throw new Error(\"request.headers must be an instance of Headers\");\n }\n const keys = [];\n for (const [key, value] of init.request.headers){\n headers.set(\"x-middleware-request-\" + key, value);\n keys.push(key);\n }\n headers.set(\"x-middleware-override-headers\", keys.join(\",\"));\n }\n}\n/**\n * This class extends the [Web `Response` API](https://developer.mozilla.org/docs/Web/API/Response) with additional convenience methods.\n *\n * Read more: [Next.js Docs: `NextResponse`](https://nextjs.org/docs/app/api-reference/functions/next-response)\n */ export class NextResponse extends Response {\n constructor(body, init = {}){\n super(body, init);\n const headers = this.headers;\n const cookies = new ResponseCookies(headers);\n const cookiesProxy = new Proxy(cookies, {\n get (target, prop, receiver) {\n switch(prop){\n case \"delete\":\n case \"set\":\n {\n return (...args)=>{\n const result = Reflect.apply(target[prop], target, args);\n const newHeaders = new Headers(headers);\n if (result instanceof ResponseCookies) {\n headers.set(\"x-middleware-set-cookie\", result.getAll().map((cookie)=>stringifyCookie(cookie)).join(\",\"));\n }\n handleMiddlewareField(init, newHeaders);\n return result;\n };\n }\n default:\n return ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n this[INTERNALS] = {\n cookies: cookiesProxy,\n url: init.url ? new NextURL(init.url, {\n headers: toNodeOutgoingHttpHeaders(headers),\n nextConfig: init.nextConfig\n }) : undefined\n };\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return {\n cookies: this.cookies,\n url: this.url,\n // rest of props come from Response\n body: this.body,\n bodyUsed: this.bodyUsed,\n headers: Object.fromEntries(this.headers),\n ok: this.ok,\n redirected: this.redirected,\n status: this.status,\n statusText: this.statusText,\n type: this.type\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n static json(body, init) {\n const response = Response.json(body, init);\n return new NextResponse(response.body, response);\n }\n static redirect(url, init) {\n const status = typeof init === \"number\" ? init : (init == null ? void 0 : init.status) ?? 307;\n if (!REDIRECTS.has(status)) {\n throw new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n }\n const initObj = typeof init === \"object\" ? init : {};\n const headers = new Headers(initObj == null ? void 0 : initObj.headers);\n headers.set(\"Location\", validateURL(url));\n return new NextResponse(null, {\n ...initObj,\n headers,\n status\n });\n }\n static rewrite(destination, init) {\n const headers = new Headers(init == null ? void 0 : init.headers);\n headers.set(\"x-middleware-rewrite\", validateURL(destination));\n handleMiddlewareField(init, headers);\n return new NextResponse(null, {\n ...init,\n headers\n });\n }\n static next(init) {\n const headers = new Headers(init == null ? void 0 : init.headers);\n headers.set(\"x-middleware-next\", \"1\");\n handleMiddlewareField(init, headers);\n return new NextResponse(null, {\n ...init,\n headers\n });\n }\n}\n\n//# sourceMappingURL=response.js.map",null,null,"import { NEXT_RSC_UNION_QUERY } from \"../client/components/app-router-headers\";\nconst INTERNAL_QUERY_NAMES = [\n \"__nextFallback\",\n \"__nextLocale\",\n \"__nextInferredLocaleFromDefault\",\n \"__nextDefaultLocale\",\n \"__nextIsNotFound\",\n NEXT_RSC_UNION_QUERY\n];\nconst EDGE_EXTENDED_INTERNAL_QUERY_NAMES = [\n \"__nextDataReq\"\n];\nexport function stripInternalQueries(query) {\n for (const name of INTERNAL_QUERY_NAMES){\n delete query[name];\n }\n}\nexport function stripInternalSearchParams(url, isEdge) {\n const isStringUrl = typeof url === \"string\";\n const instance = isStringUrl ? new URL(url) : url;\n for (const name of INTERNAL_QUERY_NAMES){\n instance.searchParams.delete(name);\n }\n if (isEdge) {\n for (const name of EDGE_EXTENDED_INTERNAL_QUERY_NAMES){\n instance.searchParams.delete(name);\n }\n }\n return isStringUrl ? instance.toString() : instance;\n}\n\n//# sourceMappingURL=internal-utils.js.map",null,"import { ReflectAdapter } from \"./reflect\";\n/**\n * @internal\n */ export class ReadonlyHeadersError extends Error {\n constructor(){\n super(\"Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers\");\n }\n static callable() {\n throw new ReadonlyHeadersError();\n }\n}\nexport class HeadersAdapter extends Headers {\n constructor(headers){\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super();\n this.headers = new Proxy(headers, {\n get (target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === \"symbol\") {\n return ReflectAdapter.get(target, prop, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return undefined.\n if (typeof original === \"undefined\") return;\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === \"symbol\") {\n return ReflectAdapter.set(target, prop, value, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === \"symbol\") return ReflectAdapter.has(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return false.\n if (typeof original === \"undefined\") return false;\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original);\n },\n deleteProperty (target, prop) {\n if (typeof prop === \"symbol\") return ReflectAdapter.deleteProperty(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return true.\n if (typeof original === \"undefined\") return true;\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original);\n }\n });\n }\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */ static seal(headers) {\n return new Proxy(headers, {\n get (target, prop, receiver) {\n switch(prop){\n case \"append\":\n case \"delete\":\n case \"set\":\n return ReadonlyHeadersError.callable;\n default:\n return ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */ merge(value) {\n if (Array.isArray(value)) return value.join(\", \");\n return value;\n }\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */ static from(headers) {\n if (headers instanceof Headers) return headers;\n return new HeadersAdapter(headers);\n }\n append(name, value) {\n const existing = this.headers[name];\n if (typeof existing === \"string\") {\n this.headers[name] = [\n existing,\n value\n ];\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n this.headers[name] = value;\n }\n }\n delete(name) {\n delete this.headers[name];\n }\n get(name) {\n const value = this.headers[name];\n if (typeof value !== \"undefined\") return this.merge(value);\n return null;\n }\n has(name) {\n return typeof this.headers[name] !== \"undefined\";\n }\n set(name, value) {\n this.headers[name] = value;\n }\n forEach(callbackfn, thisArg) {\n for (const [name, value] of this.entries()){\n callbackfn.call(thisArg, value, name, this);\n }\n }\n *entries() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name);\n yield [\n name,\n value\n ];\n }\n }\n *keys() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n yield name;\n }\n }\n *values() {\n for (const key of Object.keys(this.headers)){\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key);\n yield value;\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n}\n\n//# sourceMappingURL=headers.js.map",null,null,null,"import { ResponseCookies } from \"../cookies\";\nimport { ReflectAdapter } from \"./reflect\";\nimport { staticGenerationAsyncStorage } from \"../../../../client/components/static-generation-async-storage.external\";\n/**\n * @internal\n */ export class ReadonlyRequestCookiesError extends Error {\n constructor(){\n super(\"Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options\");\n }\n static callable() {\n throw new ReadonlyRequestCookiesError();\n }\n}\nexport class RequestCookiesAdapter {\n static seal(cookies) {\n return new Proxy(cookies, {\n get (target, prop, receiver) {\n switch(prop){\n case \"clear\":\n case \"delete\":\n case \"set\":\n return ReadonlyRequestCookiesError.callable;\n default:\n return ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n}\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for(\"next.mutated.cookies\");\nexport function getModifiedCookieValues(cookies) {\n const modified = cookies[SYMBOL_MODIFY_COOKIE_VALUES];\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return [];\n }\n return modified;\n}\nexport function appendMutableCookies(headers, mutableCookies) {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies);\n if (modifiedCookieValues.length === 0) {\n return false;\n }\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new ResponseCookies(headers);\n const returnedCookies = resCookies.getAll();\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues){\n resCookies.set(cookie);\n }\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies){\n resCookies.set(cookie);\n }\n return true;\n}\nexport class MutableRequestCookiesAdapter {\n static wrap(cookies, onUpdateCookies) {\n const responseCookies = new ResponseCookies(new Headers());\n for (const cookie of cookies.getAll()){\n responseCookies.set(cookie);\n }\n let modifiedValues = [];\n const modifiedCookies = new Set();\n const updateResponseCookies = ()=>{\n // TODO-APP: change method of getting staticGenerationAsyncStore\n const staticGenerationAsyncStore = staticGenerationAsyncStorage.getStore();\n if (staticGenerationAsyncStore) {\n staticGenerationAsyncStore.pathWasRevalidated = true;\n }\n const allCookies = responseCookies.getAll();\n modifiedValues = allCookies.filter((c)=>modifiedCookies.has(c.name));\n if (onUpdateCookies) {\n const serializedCookies = [];\n for (const cookie of modifiedValues){\n const tempCookies = new ResponseCookies(new Headers());\n tempCookies.set(cookie);\n serializedCookies.push(tempCookies.toString());\n }\n onUpdateCookies(serializedCookies);\n }\n };\n return new Proxy(responseCookies, {\n get (target, prop, receiver) {\n switch(prop){\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues;\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case \"delete\":\n return function(...args) {\n modifiedCookies.add(typeof args[0] === \"string\" ? args[0] : args[0].name);\n try {\n target.delete(...args);\n } finally{\n updateResponseCookies();\n }\n };\n case \"set\":\n return function(...args) {\n modifiedCookies.add(typeof args[0] === \"string\" ? args[0] : args[0].name);\n try {\n return target.set(...args);\n } finally{\n updateResponseCookies();\n }\n };\n default:\n return ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n}\n\n//# sourceMappingURL=request-cookies.js.map","/**\n * Contains predefined constants for the trace span name in next/server.\n *\n * Currently, next/server/tracer is internal implementation only for tracking\n * next.js's implementation only with known span names defined here.\n **/ // eslint typescript has a bug with TS enums\n/* eslint-disable no-shadow */ var BaseServerSpan;\n(function(BaseServerSpan) {\n BaseServerSpan[\"handleRequest\"] = \"BaseServer.handleRequest\";\n BaseServerSpan[\"run\"] = \"BaseServer.run\";\n BaseServerSpan[\"pipe\"] = \"BaseServer.pipe\";\n BaseServerSpan[\"getStaticHTML\"] = \"BaseServer.getStaticHTML\";\n BaseServerSpan[\"render\"] = \"BaseServer.render\";\n BaseServerSpan[\"renderToResponseWithComponents\"] = \"BaseServer.renderToResponseWithComponents\";\n BaseServerSpan[\"renderToResponse\"] = \"BaseServer.renderToResponse\";\n BaseServerSpan[\"renderToHTML\"] = \"BaseServer.renderToHTML\";\n BaseServerSpan[\"renderError\"] = \"BaseServer.renderError\";\n BaseServerSpan[\"renderErrorToResponse\"] = \"BaseServer.renderErrorToResponse\";\n BaseServerSpan[\"renderErrorToHTML\"] = \"BaseServer.renderErrorToHTML\";\n BaseServerSpan[\"render404\"] = \"BaseServer.render404\";\n})(BaseServerSpan || (BaseServerSpan = {}));\nvar LoadComponentsSpan;\n(function(LoadComponentsSpan) {\n LoadComponentsSpan[\"loadDefaultErrorComponents\"] = \"LoadComponents.loadDefaultErrorComponents\";\n LoadComponentsSpan[\"loadComponents\"] = \"LoadComponents.loadComponents\";\n})(LoadComponentsSpan || (LoadComponentsSpan = {}));\nvar NextServerSpan;\n(function(NextServerSpan) {\n NextServerSpan[\"getRequestHandler\"] = \"NextServer.getRequestHandler\";\n NextServerSpan[\"getServer\"] = \"NextServer.getServer\";\n NextServerSpan[\"getServerRequestHandler\"] = \"NextServer.getServerRequestHandler\";\n NextServerSpan[\"createServer\"] = \"createServer.createServer\";\n})(NextServerSpan || (NextServerSpan = {}));\nvar NextNodeServerSpan;\n(function(NextNodeServerSpan) {\n NextNodeServerSpan[\"compression\"] = \"NextNodeServer.compression\";\n NextNodeServerSpan[\"getBuildId\"] = \"NextNodeServer.getBuildId\";\n NextNodeServerSpan[\"createComponentTree\"] = \"NextNodeServer.createComponentTree\";\n NextNodeServerSpan[\"clientComponentLoading\"] = \"NextNodeServer.clientComponentLoading\";\n NextNodeServerSpan[\"getLayoutOrPageModule\"] = \"NextNodeServer.getLayoutOrPageModule\";\n NextNodeServerSpan[\"generateStaticRoutes\"] = \"NextNodeServer.generateStaticRoutes\";\n NextNodeServerSpan[\"generateFsStaticRoutes\"] = \"NextNodeServer.generateFsStaticRoutes\";\n NextNodeServerSpan[\"generatePublicRoutes\"] = \"NextNodeServer.generatePublicRoutes\";\n NextNodeServerSpan[\"generateImageRoutes\"] = \"NextNodeServer.generateImageRoutes.route\";\n NextNodeServerSpan[\"sendRenderResult\"] = \"NextNodeServer.sendRenderResult\";\n NextNodeServerSpan[\"proxyRequest\"] = \"NextNodeServer.proxyRequest\";\n NextNodeServerSpan[\"runApi\"] = \"NextNodeServer.runApi\";\n NextNodeServerSpan[\"render\"] = \"NextNodeServer.render\";\n NextNodeServerSpan[\"renderHTML\"] = \"NextNodeServer.renderHTML\";\n NextNodeServerSpan[\"imageOptimizer\"] = \"NextNodeServer.imageOptimizer\";\n NextNodeServerSpan[\"getPagePath\"] = \"NextNodeServer.getPagePath\";\n NextNodeServerSpan[\"getRoutesManifest\"] = \"NextNodeServer.getRoutesManifest\";\n NextNodeServerSpan[\"findPageComponents\"] = \"NextNodeServer.findPageComponents\";\n NextNodeServerSpan[\"getFontManifest\"] = \"NextNodeServer.getFontManifest\";\n NextNodeServerSpan[\"getServerComponentManifest\"] = \"NextNodeServer.getServerComponentManifest\";\n NextNodeServerSpan[\"getRequestHandler\"] = \"NextNodeServer.getRequestHandler\";\n NextNodeServerSpan[\"renderToHTML\"] = \"NextNodeServer.renderToHTML\";\n NextNodeServerSpan[\"renderError\"] = \"NextNodeServer.renderError\";\n NextNodeServerSpan[\"renderErrorToHTML\"] = \"NextNodeServer.renderErrorToHTML\";\n NextNodeServerSpan[\"render404\"] = \"NextNodeServer.render404\";\n NextNodeServerSpan[\"startResponse\"] = \"NextNodeServer.startResponse\";\n // nested inner span, does not require parent scope name\n NextNodeServerSpan[\"route\"] = \"route\";\n NextNodeServerSpan[\"onProxyReq\"] = \"onProxyReq\";\n NextNodeServerSpan[\"apiResolver\"] = \"apiResolver\";\n NextNodeServerSpan[\"internalFetch\"] = \"internalFetch\";\n})(NextNodeServerSpan || (NextNodeServerSpan = {}));\nvar StartServerSpan;\n(function(StartServerSpan) {\n StartServerSpan[\"startServer\"] = \"startServer.startServer\";\n})(StartServerSpan || (StartServerSpan = {}));\nvar RenderSpan;\n(function(RenderSpan) {\n RenderSpan[\"getServerSideProps\"] = \"Render.getServerSideProps\";\n RenderSpan[\"getStaticProps\"] = \"Render.getStaticProps\";\n RenderSpan[\"renderToString\"] = \"Render.renderToString\";\n RenderSpan[\"renderDocument\"] = \"Render.renderDocument\";\n RenderSpan[\"createBodyResult\"] = \"Render.createBodyResult\";\n})(RenderSpan || (RenderSpan = {}));\nvar AppRenderSpan;\n(function(AppRenderSpan) {\n AppRenderSpan[\"renderToString\"] = \"AppRender.renderToString\";\n AppRenderSpan[\"renderToReadableStream\"] = \"AppRender.renderToReadableStream\";\n AppRenderSpan[\"getBodyResult\"] = \"AppRender.getBodyResult\";\n AppRenderSpan[\"fetch\"] = \"AppRender.fetch\";\n})(AppRenderSpan || (AppRenderSpan = {}));\nvar RouterSpan;\n(function(RouterSpan) {\n RouterSpan[\"executeRoute\"] = \"Router.executeRoute\";\n})(RouterSpan || (RouterSpan = {}));\nvar NodeSpan;\n(function(NodeSpan) {\n NodeSpan[\"runHandler\"] = \"Node.runHandler\";\n})(NodeSpan || (NodeSpan = {}));\nvar AppRouteRouteHandlersSpan;\n(function(AppRouteRouteHandlersSpan) {\n AppRouteRouteHandlersSpan[\"runHandler\"] = \"AppRouteRouteHandlers.runHandler\";\n})(AppRouteRouteHandlersSpan || (AppRouteRouteHandlersSpan = {}));\nvar ResolveMetadataSpan;\n(function(ResolveMetadataSpan) {\n ResolveMetadataSpan[\"generateMetadata\"] = \"ResolveMetadata.generateMetadata\";\n ResolveMetadataSpan[\"generateViewport\"] = \"ResolveMetadata.generateViewport\";\n})(ResolveMetadataSpan || (ResolveMetadataSpan = {}));\nvar MiddlewareSpan;\n(function(MiddlewareSpan) {\n MiddlewareSpan[\"execute\"] = \"Middleware.execute\";\n})(MiddlewareSpan || (MiddlewareSpan = {}));\n// This list is used to filter out spans that are not relevant to the user\nexport const NextVanillaSpanAllowlist = [\n \"Middleware.execute\",\n \"BaseServer.handleRequest\",\n \"Render.getServerSideProps\",\n \"Render.getStaticProps\",\n \"AppRender.fetch\",\n \"AppRender.getBodyResult\",\n \"Render.renderDocument\",\n \"Node.runHandler\",\n \"AppRouteRouteHandlers.runHandler\",\n \"ResolveMetadata.generateMetadata\",\n \"ResolveMetadata.generateViewport\",\n \"NextNodeServer.createComponentTree\",\n \"NextNodeServer.findPageComponents\",\n \"NextNodeServer.getLayoutOrPageModule\",\n \"NextNodeServer.startResponse\",\n \"NextNodeServer.clientComponentLoading\"\n];\n// These Spans are allowed to be always logged\n// when the otel log prefix env is set\nexport const LogSpanAllowList = [\n \"NextNodeServer.findPageComponents\",\n \"NextNodeServer.createComponentTree\",\n \"NextNodeServer.clientComponentLoading\"\n];\nexport { BaseServerSpan, LoadComponentsSpan, NextServerSpan, NextNodeServerSpan, StartServerSpan, RenderSpan, RouterSpan, AppRenderSpan, NodeSpan, AppRouteRouteHandlersSpan, ResolveMetadataSpan, MiddlewareSpan, };\n\n//# sourceMappingURL=constants.js.map","import { LogSpanAllowList, NextVanillaSpanAllowlist } from \"./constants\";\nlet api;\n// we want to allow users to use their own version of @opentelemetry/api if they\n// want to, so we try to require it first, and if it fails we fall back to the\n// version that is bundled with Next.js\n// this is because @opentelemetry/api has to be synced with the version of\n// @opentelemetry/tracing that is used, and we don't want to force users to use\n// the version that is bundled with Next.js.\n// the API is ~stable, so this should be fine\nif (process.env.NEXT_RUNTIME === \"edge\") {\n api = require(\"@opentelemetry/api\");\n} else {\n try {\n api = require(\"@opentelemetry/api\");\n } catch (err) {\n api = require(\"next/dist/compiled/@opentelemetry/api\");\n }\n}\nconst { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } = api;\nconst isPromise = (p)=>{\n return p !== null && typeof p === \"object\" && typeof p.then === \"function\";\n};\nconst closeSpanWithError = (span, error)=>{\n if ((error == null ? void 0 : error.bubble) === true) {\n span.setAttribute(\"next.bubble\", true);\n } else {\n if (error) {\n span.recordException(error);\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error == null ? void 0 : error.message\n });\n }\n span.end();\n};\n/** we use this map to propagate attributes from nested spans to the top span */ const rootSpanAttributesStore = new Map();\nconst rootSpanIdKey = api.createContextKey(\"next.rootSpanId\");\nlet lastSpanId = 0;\nconst getSpanId = ()=>lastSpanId++;\nclass NextTracerImpl {\n /**\n * Returns an instance to the trace with configured name.\n * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization,\n * This should be lazily evaluated.\n */ getTracerInstance() {\n return trace.getTracer(\"next.js\", \"0.0.1\");\n }\n getContext() {\n return context;\n }\n getActiveScopeSpan() {\n return trace.getSpan(context == null ? void 0 : context.active());\n }\n withPropagatedContext(carrier, fn, getter) {\n const activeContext = context.active();\n if (trace.getSpanContext(activeContext)) {\n // Active span is already set, too late to propagate.\n return fn();\n }\n const remoteContext = propagation.extract(activeContext, carrier, getter);\n return context.with(remoteContext, fn);\n }\n trace(...args) {\n var _trace_getSpanContext;\n const [type, fnOrOptions, fnOrEmpty] = args;\n // coerce options form overload\n const { fn, options } = typeof fnOrOptions === \"function\" ? {\n fn: fnOrOptions,\n options: {}\n } : {\n fn: fnOrEmpty,\n options: {\n ...fnOrOptions\n }\n };\n const spanName = options.spanName ?? type;\n if (!NextVanillaSpanAllowlist.includes(type) && process.env.NEXT_OTEL_VERBOSE !== \"1\" || options.hideSpan) {\n return fn();\n }\n // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.\n let spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());\n let isRootSpan = false;\n if (!spanContext) {\n spanContext = (context == null ? void 0 : context.active()) ?? ROOT_CONTEXT;\n isRootSpan = true;\n } else if ((_trace_getSpanContext = trace.getSpanContext(spanContext)) == null ? void 0 : _trace_getSpanContext.isRemote) {\n isRootSpan = true;\n }\n const spanId = getSpanId();\n options.attributes = {\n \"next.span_name\": spanName,\n \"next.span_type\": type,\n ...options.attributes\n };\n return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{\n const startTime = \"performance\" in globalThis ? globalThis.performance.now() : undefined;\n const onCleanup = ()=>{\n rootSpanAttributesStore.delete(spanId);\n if (startTime && process.env.NEXT_OTEL_PERFORMANCE_PREFIX && LogSpanAllowList.includes(type || \"\")) {\n performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split(\".\").pop() || \"\").replace(/[A-Z]/g, (match)=>\"-\" + match.toLowerCase())}`, {\n start: startTime,\n end: performance.now()\n });\n }\n };\n if (isRootSpan) {\n rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));\n }\n try {\n if (fn.length > 1) {\n return fn(span, (err)=>closeSpanWithError(span, err));\n }\n const result = fn(span);\n if (isPromise(result)) {\n // If there's error make sure it throws\n return result.then((res)=>{\n span.end();\n // Need to pass down the promise result,\n // it could be react stream response with error { error, stream }\n return res;\n }).catch((err)=>{\n closeSpanWithError(span, err);\n throw err;\n }).finally(onCleanup);\n } else {\n span.end();\n onCleanup();\n }\n return result;\n } catch (err) {\n closeSpanWithError(span, err);\n onCleanup();\n throw err;\n }\n }));\n }\n wrap(...args) {\n const tracer = this;\n const [name, options, fn] = args.length === 3 ? args : [\n args[0],\n {},\n args[1]\n ];\n if (!NextVanillaSpanAllowlist.includes(name) && process.env.NEXT_OTEL_VERBOSE !== \"1\") {\n return fn;\n }\n return function() {\n let optionsObj = options;\n if (typeof optionsObj === \"function\" && typeof fn === \"function\") {\n optionsObj = optionsObj.apply(this, arguments);\n }\n const lastArgId = arguments.length - 1;\n const cb = arguments[lastArgId];\n if (typeof cb === \"function\") {\n const scopeBoundCb = tracer.getContext().bind(context.active(), cb);\n return tracer.trace(name, optionsObj, (_span, done)=>{\n arguments[lastArgId] = function(err) {\n done == null ? void 0 : done(err);\n return scopeBoundCb.apply(this, arguments);\n };\n return fn.apply(this, arguments);\n });\n } else {\n return tracer.trace(name, optionsObj, ()=>fn.apply(this, arguments));\n }\n };\n }\n startSpan(...args) {\n const [type, options] = args;\n const spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());\n return this.getTracerInstance().startSpan(type, options, spanContext);\n }\n getSpanContext(parentSpan) {\n const spanContext = parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined;\n return spanContext;\n }\n getRootSpanAttributes() {\n const spanId = context.active().getValue(rootSpanIdKey);\n return rootSpanAttributesStore.get(spanId);\n }\n}\nconst getTracer = (()=>{\n const tracer = new NextTracerImpl();\n return ()=>tracer;\n})();\nexport { getTracer, SpanStatusCode, SpanKind };\n\n//# sourceMappingURL=tracer.js.map","import { HeadersAdapter } from \"../web/spec-extension/adapters/headers\";\nimport { PRERENDER_REVALIDATE_HEADER, PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER } from \"../../lib/constants\";\nimport { getTracer } from \"../lib/trace/tracer\";\nimport { NodeSpan } from \"../lib/trace/constants\";\nexport function wrapApiHandler(page, handler) {\n return (...args)=>{\n var _getTracer_getRootSpanAttributes;\n (_getTracer_getRootSpanAttributes = getTracer().getRootSpanAttributes()) == null ? void 0 : _getTracer_getRootSpanAttributes.set(\"next.route\", page);\n // Call API route method\n return getTracer().trace(NodeSpan.runHandler, {\n spanName: `executing api route (pages) ${page}`\n }, ()=>handler(...args));\n };\n}\n/**\n *\n * @param res response object\n * @param statusCode `HTTP` status code of response\n */ export function sendStatusCode(res, statusCode) {\n res.statusCode = statusCode;\n return res;\n}\n/**\n *\n * @param res response object\n * @param [statusOrUrl] `HTTP` status code of redirect\n * @param url URL of redirect\n */ export function redirect(res, statusOrUrl, url) {\n if (typeof statusOrUrl === \"string\") {\n url = statusOrUrl;\n statusOrUrl = 307;\n }\n if (typeof statusOrUrl !== \"number\" || typeof url !== \"string\") {\n throw new Error(`Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').`);\n }\n res.writeHead(statusOrUrl, {\n Location: url\n });\n res.write(url);\n res.end();\n return res;\n}\nexport function checkIsOnDemandRevalidate(req, previewProps) {\n const headers = HeadersAdapter.from(req.headers);\n const previewModeId = headers.get(PRERENDER_REVALIDATE_HEADER);\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId;\n const revalidateOnlyGenerated = headers.has(PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER);\n return {\n isOnDemandRevalidate,\n revalidateOnlyGenerated\n };\n}\nexport const COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`;\nexport const COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`;\nexport const RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024;\nexport const SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA);\nexport const SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS);\nexport function clearPreviewData(res, options = {}) {\n if (SYMBOL_CLEARED_COOKIES in res) {\n return res;\n }\n const { serialize } = require(\"next/dist/compiled/cookie\");\n const previous = res.getHeader(\"Set-Cookie\");\n res.setHeader(`Set-Cookie`, [\n ...typeof previous === \"string\" ? [\n previous\n ] : Array.isArray(previous) ? previous : [],\n serialize(COOKIE_NAME_PRERENDER_BYPASS, \"\", {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== \"development\" ? \"none\" : \"lax\",\n secure: process.env.NODE_ENV !== \"development\",\n path: \"/\",\n ...options.path !== undefined ? {\n path: options.path\n } : undefined\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, \"\", {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== \"development\" ? \"none\" : \"lax\",\n secure: process.env.NODE_ENV !== \"development\",\n path: \"/\",\n ...options.path !== undefined ? {\n path: options.path\n } : undefined\n })\n ]);\n Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, {\n value: true,\n enumerable: false\n });\n return res;\n}\n/**\n * Custom error class\n */ export class ApiError extends Error {\n constructor(statusCode, message){\n super(message);\n this.statusCode = statusCode;\n }\n}\n/**\n * Sends error in `response`\n * @param res response object\n * @param statusCode of response\n * @param message of response\n */ export function sendError(res, statusCode, message) {\n res.statusCode = statusCode;\n res.statusMessage = message;\n res.end(message);\n}\n/**\n * Execute getter function only if its needed\n * @param LazyProps `req` and `params` for lazyProp\n * @param prop name of property\n * @param getter function to get data\n */ export function setLazyProp({ req }, prop, getter) {\n const opts = {\n configurable: true,\n enumerable: true\n };\n const optsReset = {\n ...opts,\n writable: true\n };\n Object.defineProperty(req, prop, {\n ...opts,\n get: ()=>{\n const value = getter();\n // we set the property on the object to avoid recalculating it\n Object.defineProperty(req, prop, {\n ...optsReset,\n value\n });\n return value;\n },\n set: (value)=>{\n Object.defineProperty(req, prop, {\n ...optsReset,\n value\n });\n }\n });\n}\n\n//# sourceMappingURL=index.js.map","import { COOKIE_NAME_PRERENDER_BYPASS, checkIsOnDemandRevalidate } from \"../api-utils\";\nexport class DraftModeProvider {\n constructor(previewProps, req, cookies, mutableCookies){\n var _cookies_get;\n // The logic for draftMode() is very similar to tryGetPreviewData()\n // but Draft Mode does not have any data associated with it.\n const isOnDemandRevalidate = previewProps && checkIsOnDemandRevalidate(req, previewProps).isOnDemandRevalidate;\n const cookieValue = (_cookies_get = cookies.get(COOKIE_NAME_PRERENDER_BYPASS)) == null ? void 0 : _cookies_get.value;\n this.isEnabled = Boolean(!isOnDemandRevalidate && cookieValue && previewProps && (cookieValue === previewProps.previewModeId || // In dev mode, the cookie can be actual hash value preview id but the preview props can still be `development-id`.\n process.env.NODE_ENV !== \"production\" && previewProps.previewModeId === \"development-id\"));\n this._previewModeId = previewProps == null ? void 0 : previewProps.previewModeId;\n this._mutableCookies = mutableCookies;\n }\n enable() {\n if (!this._previewModeId) {\n throw new Error(\"Invariant: previewProps missing previewModeId this should never happen\");\n }\n this._mutableCookies.set({\n name: COOKIE_NAME_PRERENDER_BYPASS,\n value: this._previewModeId,\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== \"development\" ? \"none\" : \"lax\",\n secure: process.env.NODE_ENV !== \"development\",\n path: \"/\"\n });\n }\n disable() {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n this._mutableCookies.set({\n name: COOKIE_NAME_PRERENDER_BYPASS,\n value: \"\",\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== \"development\" ? \"none\" : \"lax\",\n secure: process.env.NODE_ENV !== \"development\",\n path: \"/\",\n expires: new Date(0)\n });\n }\n}\n\n//# sourceMappingURL=draft-mode-provider.js.map","import { FLIGHT_PARAMETERS } from \"../../client/components/app-router-headers\";\nimport { HeadersAdapter } from \"../web/spec-extension/adapters/headers\";\nimport { MutableRequestCookiesAdapter, RequestCookiesAdapter } from \"../web/spec-extension/adapters/request-cookies\";\nimport { ResponseCookies, RequestCookies } from \"../web/spec-extension/cookies\";\nimport { DraftModeProvider } from \"./draft-mode-provider\";\nimport { splitCookiesString } from \"../web/utils\";\nfunction getHeaders(headers) {\n const cleaned = HeadersAdapter.from(headers);\n for (const param of FLIGHT_PARAMETERS){\n cleaned.delete(param.toString().toLowerCase());\n }\n return HeadersAdapter.seal(cleaned);\n}\nfunction getMutableCookies(headers, onUpdateCookies) {\n const cookies = new RequestCookies(HeadersAdapter.from(headers));\n return MutableRequestCookiesAdapter.wrap(cookies, onUpdateCookies);\n}\n/**\n * If middleware set cookies in this request (indicated by `x-middleware-set-cookie`),\n * then merge those into the existing cookie object, so that when `cookies()` is accessed\n * it's able to read the newly set cookies.\n */ function mergeMiddlewareCookies(req, existingCookies) {\n if (\"x-middleware-set-cookie\" in req.headers && typeof req.headers[\"x-middleware-set-cookie\"] === \"string\") {\n const setCookieValue = req.headers[\"x-middleware-set-cookie\"];\n const responseHeaders = new Headers();\n for (const cookie of splitCookiesString(setCookieValue)){\n responseHeaders.append(\"set-cookie\", cookie);\n }\n const responseCookies = new ResponseCookies(responseHeaders);\n // Transfer cookies from ResponseCookies to RequestCookies\n for (const cookie of responseCookies.getAll()){\n existingCookies.set(cookie);\n }\n }\n}\nexport const RequestAsyncStorageWrapper = {\n /**\n * Wrap the callback with the given store so it can access the underlying\n * store using hooks.\n *\n * @param storage underlying storage object returned by the module\n * @param context context to seed the store\n * @param callback function to call within the scope of the context\n * @returns the result returned by the callback\n */ wrap (storage, { req, res, renderOpts }, callback) {\n let previewProps = undefined;\n if (renderOpts && \"previewProps\" in renderOpts) {\n // TODO: investigate why previewProps isn't on RenderOpts\n previewProps = renderOpts.previewProps;\n }\n function defaultOnUpdateCookies(cookies) {\n if (res) {\n res.setHeader(\"Set-Cookie\", cookies);\n }\n }\n const cache = {};\n const store = {\n get headers () {\n if (!cache.headers) {\n // Seal the headers object that'll freeze out any methods that could\n // mutate the underlying data.\n cache.headers = getHeaders(req.headers);\n }\n return cache.headers;\n },\n get cookies () {\n if (!cache.cookies) {\n // if middleware is setting cookie(s), then include those in\n // the initial cached cookies so they can be read in render\n const requestCookies = new RequestCookies(HeadersAdapter.from(req.headers));\n mergeMiddlewareCookies(req, requestCookies);\n // Seal the cookies object that'll freeze out any methods that could\n // mutate the underlying data.\n cache.cookies = RequestCookiesAdapter.seal(requestCookies);\n }\n return cache.cookies;\n },\n get mutableCookies () {\n if (!cache.mutableCookies) {\n const mutableCookies = getMutableCookies(req.headers, (renderOpts == null ? void 0 : renderOpts.onUpdateCookies) || (res ? defaultOnUpdateCookies : undefined));\n mergeMiddlewareCookies(req, mutableCookies);\n cache.mutableCookies = mutableCookies;\n }\n return cache.mutableCookies;\n },\n get draftMode () {\n if (!cache.draftMode) {\n cache.draftMode = new DraftModeProvider(previewProps, req, this.cookies, this.mutableCookies);\n }\n return cache.draftMode;\n },\n reactLoadableManifest: (renderOpts == null ? void 0 : renderOpts.reactLoadableManifest) || {},\n assetPrefix: (renderOpts == null ? void 0 : renderOpts.assetPrefix) || \"\"\n };\n return storage.run(store, callback, store);\n }\n};\n\n//# sourceMappingURL=request-async-storage-wrapper.js.map",null,null,"/**\n * In edge runtime, these props directly accessed from environment variables.\n * - local: env vars will be injected through edge-runtime as runtime env vars\n * - deployment: env vars will be replaced by edge build pipeline\n */ export function getEdgePreviewProps() {\n return {\n previewModeId: process.env.NODE_ENV === \"production\" ? process.env.__NEXT_PREVIEW_MODE_ID : \"development-id\",\n previewModeSigningKey: process.env.__NEXT_PREVIEW_MODE_SIGNING_KEY || \"\",\n previewModeEncryptionKey: process.env.__NEXT_PREVIEW_MODE_ENCRYPTION_KEY || \"\"\n };\n}\n\n//# sourceMappingURL=get-edge-preview-props.js.map","import { PageSignatureError } from \"./error\";\nimport { fromNodeOutgoingHttpHeaders, normalizeNextQueryParam } from \"./utils\";\nimport { NextFetchEvent } from \"./spec-extension/fetch-event\";\nimport { NextRequest } from \"./spec-extension/request\";\nimport { NextResponse } from \"./spec-extension/response\";\nimport { relativizeURL } from \"../../shared/lib/router/utils/relativize-url\";\nimport { waitUntilSymbol } from \"./spec-extension/fetch-event\";\nimport { NextURL } from \"./next-url\";\nimport { stripInternalSearchParams } from \"../internal-utils\";\nimport { normalizeRscURL } from \"../../shared/lib/router/utils/app-paths\";\nimport { FLIGHT_PARAMETERS } from \"../../client/components/app-router-headers\";\nimport { ensureInstrumentationRegistered } from \"./globals\";\nimport { RequestAsyncStorageWrapper } from \"../async-storage/request-async-storage-wrapper\";\nimport { requestAsyncStorage } from \"../../client/components/request-async-storage.external\";\nimport { getTracer } from \"../lib/trace/tracer\";\nimport { MiddlewareSpan } from \"../lib/trace/constants\";\nimport { getEdgePreviewProps } from \"./get-edge-preview-props\";\nexport class NextRequestHint extends NextRequest {\n constructor(params){\n super(params.input, params.init);\n this.sourcePage = params.page;\n }\n get request() {\n throw new PageSignatureError({\n page: this.sourcePage\n });\n }\n respondWith() {\n throw new PageSignatureError({\n page: this.sourcePage\n });\n }\n waitUntil() {\n throw new PageSignatureError({\n page: this.sourcePage\n });\n }\n}\nconst headersGetter = {\n keys: (headers)=>Array.from(headers.keys()),\n get: (headers, key)=>headers.get(key) ?? undefined\n};\nlet propagator = (request, fn)=>{\n const tracer = getTracer();\n return tracer.withPropagatedContext(request.headers, fn, headersGetter);\n};\nlet testApisIntercepted = false;\nfunction ensureTestApisIntercepted() {\n if (!testApisIntercepted) {\n testApisIntercepted = true;\n if (process.env.NEXT_PRIVATE_TEST_PROXY === \"true\") {\n const { interceptTestApis, wrapRequestHandler } = require(\"next/dist/experimental/testmode/server-edge\");\n interceptTestApis();\n propagator = wrapRequestHandler(propagator);\n }\n }\n}\nexport async function adapter(params) {\n ensureTestApisIntercepted();\n await ensureInstrumentationRegistered();\n // TODO-APP: use explicit marker for this\n const isEdgeRendering = typeof self.__BUILD_MANIFEST !== \"undefined\";\n params.request.url = normalizeRscURL(params.request.url);\n const requestUrl = new NextURL(params.request.url, {\n headers: params.request.headers,\n nextConfig: params.request.nextConfig\n });\n // Iterator uses an index to keep track of the current iteration. Because of deleting and appending below we can't just use the iterator.\n // Instead we use the keys before iteration.\n const keys = [\n ...requestUrl.searchParams.keys()\n ];\n for (const key of keys){\n const value = requestUrl.searchParams.getAll(key);\n normalizeNextQueryParam(key, (normalizedKey)=>{\n requestUrl.searchParams.delete(normalizedKey);\n for (const val of value){\n requestUrl.searchParams.append(normalizedKey, val);\n }\n requestUrl.searchParams.delete(key);\n });\n }\n // Ensure users only see page requests, never data requests.\n const buildId = requestUrl.buildId;\n requestUrl.buildId = \"\";\n const isNextDataRequest = params.request.headers[\"x-nextjs-data\"];\n if (isNextDataRequest && requestUrl.pathname === \"/index\") {\n requestUrl.pathname = \"/\";\n }\n const requestHeaders = fromNodeOutgoingHttpHeaders(params.request.headers);\n const flightHeaders = new Map();\n // Parameters should only be stripped for middleware\n if (!isEdgeRendering) {\n for (const param of FLIGHT_PARAMETERS){\n const key = param.toString().toLowerCase();\n const value = requestHeaders.get(key);\n if (value) {\n flightHeaders.set(key, requestHeaders.get(key));\n requestHeaders.delete(key);\n }\n }\n }\n const normalizeUrl = process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE ? new URL(params.request.url) : requestUrl;\n const request = new NextRequestHint({\n page: params.page,\n // Strip internal query parameters off the request.\n input: stripInternalSearchParams(normalizeUrl, true).toString(),\n init: {\n body: params.request.body,\n geo: params.request.geo,\n headers: requestHeaders,\n ip: params.request.ip,\n method: params.request.method,\n nextConfig: params.request.nextConfig,\n signal: params.request.signal\n }\n });\n /**\n * This allows to identify the request as a data request. The user doesn't\n * need to know about this property neither use it. We add it for testing\n * purposes.\n */ if (isNextDataRequest) {\n Object.defineProperty(request, \"__isData\", {\n enumerable: false,\n value: true\n });\n }\n if (// If we are inside of the next start sandbox\n // leverage the shared instance if not we need\n // to create a fresh cache instance each time\n !globalThis.__incrementalCacheShared && params.IncrementalCache) {\n globalThis.__incrementalCache = new params.IncrementalCache({\n appDir: true,\n fetchCache: true,\n minimalMode: process.env.NODE_ENV !== \"development\",\n fetchCacheKeyPrefix: process.env.__NEXT_FETCH_CACHE_KEY_PREFIX,\n dev: process.env.NODE_ENV === \"development\",\n requestHeaders: params.request.headers,\n requestProtocol: \"https\",\n getPrerenderManifest: ()=>{\n return {\n version: -1,\n routes: {},\n dynamicRoutes: {},\n notFoundRoutes: [],\n preview: getEdgePreviewProps()\n };\n }\n });\n }\n const event = new NextFetchEvent({\n request,\n page: params.page\n });\n let response;\n let cookiesFromResponse;\n response = await propagator(request, ()=>{\n // we only care to make async storage available for middleware\n const isMiddleware = params.page === \"/middleware\" || params.page === \"/src/middleware\";\n if (isMiddleware) {\n return getTracer().trace(MiddlewareSpan.execute, {\n spanName: `middleware ${request.method} ${request.nextUrl.pathname}`,\n attributes: {\n \"http.target\": request.nextUrl.pathname,\n \"http.method\": request.method\n }\n }, ()=>RequestAsyncStorageWrapper.wrap(requestAsyncStorage, {\n req: request,\n renderOpts: {\n onUpdateCookies: (cookies)=>{\n cookiesFromResponse = cookies;\n },\n // @ts-expect-error: TODO: investigate why previewProps isn't on RenderOpts\n previewProps: getEdgePreviewProps()\n }\n }, ()=>params.handler(request, event)));\n }\n return params.handler(request, event);\n });\n // check if response is a Response object\n if (response && !(response instanceof Response)) {\n throw new TypeError(\"Expected an instance of Response to be returned\");\n }\n if (response && cookiesFromResponse) {\n response.headers.set(\"set-cookie\", cookiesFromResponse);\n }\n /**\n * For rewrites we must always include the locale in the final pathname\n * so we re-create the NextURL forcing it to include it when the it is\n * an internal rewrite. Also we make sure the outgoing rewrite URL is\n * a data URL if the request was a data request.\n */ const rewrite = response == null ? void 0 : response.headers.get(\"x-middleware-rewrite\");\n if (response && rewrite && !isEdgeRendering) {\n const rewriteUrl = new NextURL(rewrite, {\n forceLocale: true,\n headers: params.request.headers,\n nextConfig: params.request.nextConfig\n });\n if (!process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE) {\n if (rewriteUrl.host === request.nextUrl.host) {\n rewriteUrl.buildId = buildId || rewriteUrl.buildId;\n response.headers.set(\"x-middleware-rewrite\", String(rewriteUrl));\n }\n }\n /**\n * When the request is a data request we must show if there was a rewrite\n * with an internal header so the client knows which component to load\n * from the data request.\n */ const relativizedRewrite = relativizeURL(String(rewriteUrl), String(requestUrl));\n if (isNextDataRequest && // if the rewrite is external and external rewrite\n // resolving config is enabled don't add this header\n // so the upstream app can set it instead\n !(process.env.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE && relativizedRewrite.match(/http(s)?:\\/\\//))) {\n response.headers.set(\"x-nextjs-rewrite\", relativizedRewrite);\n }\n }\n /**\n * For redirects we will not include the locale in case when it is the\n * default and we must also make sure the outgoing URL is a data one if\n * the incoming request was a data request.\n */ const redirect = response == null ? void 0 : response.headers.get(\"Location\");\n if (response && redirect && !isEdgeRendering) {\n const redirectURL = new NextURL(redirect, {\n forceLocale: false,\n headers: params.request.headers,\n nextConfig: params.request.nextConfig\n });\n /**\n * Responses created from redirects have immutable headers so we have\n * to clone the response to be able to modify it.\n */ response = new Response(response.body, response);\n if (!process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE) {\n if (redirectURL.host === request.nextUrl.host) {\n redirectURL.buildId = buildId || redirectURL.buildId;\n response.headers.set(\"Location\", String(redirectURL));\n }\n }\n /**\n * When the request is a data request we can't use the location header as\n * it may end up with CORS error. Instead we map to an internal header so\n * the client knows the destination.\n */ if (isNextDataRequest) {\n response.headers.delete(\"Location\");\n response.headers.set(\"x-nextjs-redirect\", relativizeURL(String(redirectURL), String(requestUrl)));\n }\n }\n const finalResponse = response ? response : NextResponse.next();\n // Flight headers are not overridable / removable so they are applied at the end.\n const middlewareOverrideHeaders = finalResponse.headers.get(\"x-middleware-override-headers\");\n const overwrittenHeaders = [];\n if (middlewareOverrideHeaders) {\n for (const [key, value] of flightHeaders){\n finalResponse.headers.set(`x-middleware-request-${key}`, value);\n overwrittenHeaders.push(key);\n }\n if (overwrittenHeaders.length > 0) {\n finalResponse.headers.set(\"x-middleware-override-headers\", middlewareOverrideHeaders + \",\" + overwrittenHeaders.join(\",\"));\n }\n }\n return {\n response: finalResponse,\n waitUntil: Promise.all(event[waitUntilSymbol]),\n fetchMetrics: request.fetchMetrics\n };\n}\n\n//# sourceMappingURL=adapter.js.map","import parseua from \"next/dist/compiled/ua-parser-js\";\nexport function isBot(input) {\n return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(input);\n}\nexport function userAgentFromString(input) {\n return {\n ...parseua(input),\n isBot: input === undefined ? false : isBot(input)\n };\n}\nexport function userAgent({ headers }) {\n return userAgentFromString(headers.get(\"user-agent\") || undefined);\n}\n\n//# sourceMappingURL=user-agent.js.map","const GlobalURLPattern = // @ts-expect-error: URLPattern is not available in Node.js\ntypeof URLPattern === \"undefined\" ? undefined : URLPattern;\nexport { GlobalURLPattern as URLPattern };\n\n//# sourceMappingURL=url-pattern.js.map","// Alias index file of next/server for edge runtime for tree-shaking purpose\nexport { ImageResponse } from \"../spec-extension/image-response\";\nexport { NextRequest } from \"../spec-extension/request\";\nexport { NextResponse } from \"../spec-extension/response\";\nexport { userAgent, userAgentFromString } from \"../spec-extension/user-agent\";\nexport { URLPattern } from \"../spec-extension/url-pattern\";\n\n//# sourceMappingURL=index.js.map","export * from \"../server/web/exports/index\";\n\n//# sourceMappingURL=server.js.map","/**\n * Next.js middleware for route protection with Better Auth.\n *\n * Protects routes that require authentication.\n */\nimport { NextResponse } from \"next/server\";\nimport type { NextRequest } from \"next/server\";\n\n// Routes that require authentication\nconst protectedRoutes = [\n \"/dashboard\",\n \"/profile\",\n \"/settings\",\n \"/admin\",\n];\n\n// Routes that should redirect to dashboard if already authenticated\nconst authRoutes = [\n \"/login\",\n \"/signup\",\n \"/auth/login\",\n \"/auth/register\",\n];\n\n// Public routes that don't require authentication\nconst publicRoutes = [\n \"/\",\n \"/pricing\",\n \"/about\",\n \"/contact\",\n \"/reset-password\",\n \"/forgot-password\",\n];\n\nexport function middleware(request: NextRequest) {\n const { pathname } = request.nextUrl;\n\n // Allow API routes and webhooks\n if (pathname.startsWith(\"/api/\")) {\n return NextResponse.next();\n }\n\n // Allow public routes\n const isPublicRoute = publicRoutes.some((route) =>\n pathname === route || pathname.startsWith(route + \"/\")\n );\n\n if (isPublicRoute) {\n return NextResponse.next();\n }\n\n // Check if user has session cookie\n const sessionToken = request.cookies.get(\"better-auth.session_token\");\n const isAuthenticated = !!sessionToken;\n\n // Check if route is protected\n const isProtectedRoute = protectedRoutes.some((route) =>\n pathname.startsWith(route)\n );\n\n // Check if route is auth route (login/signup)\n const isAuthRoute = authRoutes.some((route) =>\n pathname.startsWith(route)\n );\n\n // Redirect to login if accessing protected route without authentication\n if (isProtectedRoute && !isAuthenticated) {\n const loginUrl = new URL(\"/login\", request.url);\n loginUrl.searchParams.set(\"redirect\", pathname);\n return NextResponse.redirect(loginUrl);\n }\n\n // Redirect to dashboard if accessing auth routes while authenticated\n if (isAuthRoute && isAuthenticated) {\n return NextResponse.redirect(new URL(\"/dashboard\", request.url));\n }\n\n return NextResponse.next();\n}\n\nexport const config = {\n matcher: [\n /*\n * Match all request paths except:\n * - _next/static (static files)\n * - _next/image (image optimization files)\n * - favicon.ico (favicon file)\n * - public folder\n */\n \"/((?!_next/static|_next/image|favicon.ico|public).*)\",\n ],\n};\n","import \"next/dist/server/web/globals\";\nimport { adapter } from \"next/dist/server/web/adapter\";\n// Import the userland code.\nimport * as _mod from \"private-next-root-dir/src/middleware.ts\";\nconst mod = {\n ..._mod\n};\nconst handler = mod.middleware || mod.default;\nconst page = \"/src/middleware\";\nif (typeof handler !== \"function\") {\n throw new Error(`The Middleware \"${page}\" must export a \\`middleware\\` or a \\`default\\` function`);\n}\nexport default function nHandler(opts) {\n return adapter({\n ...opts,\n page,\n handler\n });\n}\n\n//# sourceMappingURL=middleware.js.map","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [key.toLowerCase(), value2])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, path, domain] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0].path, args[0].domain];\n return this.set({ name, path, domain, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestCookies,\n ResponseCookies,\n parseCookie,\n parseSetCookie,\n stringifyCookie\n});\n","(()=>{\"use strict\";var e={491:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ContextAPI=void 0;const n=r(223);const a=r(172);const o=r(930);const i=\"context\";const c=new n.NoopContextManager;class ContextAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new ContextAPI}return this._instance}setGlobalContextManager(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,a.getGlobal)(i)||c}disable(){this._getContextManager().disable();(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.ContextAPI=ContextAPI},930:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagAPI=void 0;const n=r(56);const a=r(912);const o=r(957);const i=r(172);const c=\"diag\";class DiagAPI{constructor(){function _logProxy(e){return function(...t){const r=(0,i.getGlobal)(\"diag\");if(!r)return;return r[e](...t)}}const e=this;const setLogger=(t,r={logLevel:o.DiagLogLevel.INFO})=>{var n,c,s;if(t===e){const t=new Error(\"Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation\");e.error((n=t.stack)!==null&&n!==void 0?n:t.message);return false}if(typeof r===\"number\"){r={logLevel:r}}const u=(0,i.getGlobal)(\"diag\");const l=(0,a.createLogLevelDiagLogger)((c=r.logLevel)!==null&&c!==void 0?c:o.DiagLogLevel.INFO,t);if(u&&!r.suppressOverrideMessage){const e=(s=(new Error).stack)!==null&&s!==void 0?s:\"\";u.warn(`Current logger will be overwritten from ${e}`);l.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,i.registerGlobal)(\"diag\",l,e,true)};e.setLogger=setLogger;e.disable=()=>{(0,i.unregisterGlobal)(c,e)};e.createComponentLogger=e=>new n.DiagComponentLogger(e);e.verbose=_logProxy(\"verbose\");e.debug=_logProxy(\"debug\");e.info=_logProxy(\"info\");e.warn=_logProxy(\"warn\");e.error=_logProxy(\"error\")}static instance(){if(!this._instance){this._instance=new DiagAPI}return this._instance}}t.DiagAPI=DiagAPI},653:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.MetricsAPI=void 0;const n=r(660);const a=r(172);const o=r(930);const i=\"metrics\";class MetricsAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new MetricsAPI}return this._instance}setGlobalMeterProvider(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}getMeterProvider(){return(0,a.getGlobal)(i)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.MetricsAPI=MetricsAPI},181:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.PropagationAPI=void 0;const n=r(172);const a=r(874);const o=r(194);const i=r(277);const c=r(369);const s=r(930);const u=\"propagation\";const l=new a.NoopTextMapPropagator;class PropagationAPI{constructor(){this.createBaggage=c.createBaggage;this.getBaggage=i.getBaggage;this.getActiveBaggage=i.getActiveBaggage;this.setBaggage=i.setBaggage;this.deleteBaggage=i.deleteBaggage}static getInstance(){if(!this._instance){this._instance=new PropagationAPI}return this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(u,e,s.DiagAPI.instance())}inject(e,t,r=o.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=o.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(u,s.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(u)||l}}t.PropagationAPI=PropagationAPI},997:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceAPI=void 0;const n=r(172);const a=r(846);const o=r(139);const i=r(607);const c=r(930);const s=\"trace\";class TraceAPI{constructor(){this._proxyTracerProvider=new a.ProxyTracerProvider;this.wrapSpanContext=o.wrapSpanContext;this.isSpanContextValid=o.isSpanContextValid;this.deleteSpan=i.deleteSpan;this.getSpan=i.getSpan;this.getActiveSpan=i.getActiveSpan;this.getSpanContext=i.getSpanContext;this.setSpan=i.setSpan;this.setSpanContext=i.setSpanContext}static getInstance(){if(!this._instance){this._instance=new TraceAPI}return this._instance}setGlobalTracerProvider(e){const t=(0,n.registerGlobal)(s,this._proxyTracerProvider,c.DiagAPI.instance());if(t){this._proxyTracerProvider.setDelegate(e)}return t}getTracerProvider(){return(0,n.getGlobal)(s)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(s,c.DiagAPI.instance());this._proxyTracerProvider=new a.ProxyTracerProvider}}t.TraceAPI=TraceAPI},277:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;const n=r(491);const a=r(780);const o=(0,a.createContextKey)(\"OpenTelemetry Baggage Key\");function getBaggage(e){return e.getValue(o)||undefined}t.getBaggage=getBaggage;function getActiveBaggage(){return getBaggage(n.ContextAPI.getInstance().active())}t.getActiveBaggage=getActiveBaggage;function setBaggage(e,t){return e.setValue(o,t)}t.setBaggage=setBaggage;function deleteBaggage(e){return e.deleteValue(o)}t.deleteBaggage=deleteBaggage},993:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.BaggageImpl=void 0;class BaggageImpl{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){const t=this._entries.get(e);if(!t){return undefined}return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map((([e,t])=>[e,t]))}setEntry(e,t){const r=new BaggageImpl(this._entries);r._entries.set(e,t);return r}removeEntry(e){const t=new BaggageImpl(this._entries);t._entries.delete(e);return t}removeEntries(...e){const t=new BaggageImpl(this._entries);for(const r of e){t._entries.delete(r)}return t}clear(){return new BaggageImpl}}t.BaggageImpl=BaggageImpl},830:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataSymbol=void 0;t.baggageEntryMetadataSymbol=Symbol(\"BaggageEntryMetadata\")},369:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataFromString=t.createBaggage=void 0;const n=r(930);const a=r(993);const o=r(830);const i=n.DiagAPI.instance();function createBaggage(e={}){return new a.BaggageImpl(new Map(Object.entries(e)))}t.createBaggage=createBaggage;function baggageEntryMetadataFromString(e){if(typeof e!==\"string\"){i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`);e=\"\"}return{__TYPE__:o.baggageEntryMetadataSymbol,toString(){return e}}}t.baggageEntryMetadataFromString=baggageEntryMetadataFromString},67:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.context=void 0;const n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopContextManager=void 0;const n=r(780);class NoopContextManager{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=NoopContextManager},780:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ROOT_CONTEXT=t.createContextKey=void 0;function createContextKey(e){return Symbol.for(e)}t.createContextKey=createContextKey;class BaseContext{constructor(e){const t=this;t._currentContext=e?new Map(e):new Map;t.getValue=e=>t._currentContext.get(e);t.setValue=(e,r)=>{const n=new BaseContext(t._currentContext);n._currentContext.set(e,r);return n};t.deleteValue=e=>{const r=new BaseContext(t._currentContext);r._currentContext.delete(e);return r}}}t.ROOT_CONTEXT=new BaseContext},506:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.diag=void 0;const n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagComponentLogger=void 0;const n=r(172);class DiagComponentLogger{constructor(e){this._namespace=e.namespace||\"DiagComponentLogger\"}debug(...e){return logProxy(\"debug\",this._namespace,e)}error(...e){return logProxy(\"error\",this._namespace,e)}info(...e){return logProxy(\"info\",this._namespace,e)}warn(...e){return logProxy(\"warn\",this._namespace,e)}verbose(...e){return logProxy(\"verbose\",this._namespace,e)}}t.DiagComponentLogger=DiagComponentLogger;function logProxy(e,t,r){const a=(0,n.getGlobal)(\"diag\");if(!a){return}r.unshift(t);return a[e](...r)}},972:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagConsoleLogger=void 0;const r=[{n:\"error\",c:\"error\"},{n:\"warn\",c:\"warn\"},{n:\"info\",c:\"info\"},{n:\"debug\",c:\"debug\"},{n:\"verbose\",c:\"trace\"}];class DiagConsoleLogger{constructor(){function _consoleFunc(e){return function(...t){if(console){let r=console[e];if(typeof r!==\"function\"){r=console.log}if(typeof r===\"function\"){return r.apply(console,t)}}}}for(let e=0;e{Object.defineProperty(t,\"__esModule\",{value:true});t.createLogLevelDiagLogger=void 0;const n=r(957);function createLogLevelDiagLogger(e,t){if(en.DiagLogLevel.ALL){e=n.DiagLogLevel.ALL}t=t||{};function _filterFunc(r,n){const a=t[r];if(typeof a===\"function\"&&e>=n){return a.bind(t)}return function(){}}return{error:_filterFunc(\"error\",n.DiagLogLevel.ERROR),warn:_filterFunc(\"warn\",n.DiagLogLevel.WARN),info:_filterFunc(\"info\",n.DiagLogLevel.INFO),debug:_filterFunc(\"debug\",n.DiagLogLevel.DEBUG),verbose:_filterFunc(\"verbose\",n.DiagLogLevel.VERBOSE)}}t.createLogLevelDiagLogger=createLogLevelDiagLogger},957:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagLogLevel=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"ERROR\"]=30]=\"ERROR\";e[e[\"WARN\"]=50]=\"WARN\";e[e[\"INFO\"]=60]=\"INFO\";e[e[\"DEBUG\"]=70]=\"DEBUG\";e[e[\"VERBOSE\"]=80]=\"VERBOSE\";e[e[\"ALL\"]=9999]=\"ALL\"})(r=t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;const n=r(200);const a=r(521);const o=r(130);const i=a.VERSION.split(\".\")[0];const c=Symbol.for(`opentelemetry.js.api.${i}`);const s=n._globalThis;function registerGlobal(e,t,r,n=false){var o;const i=s[c]=(o=s[c])!==null&&o!==void 0?o:{version:a.VERSION};if(!n&&i[e]){const t=new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);r.error(t.stack||t.message);return false}if(i.version!==a.VERSION){const t=new Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`);r.error(t.stack||t.message);return false}i[e]=t;r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`);return true}t.registerGlobal=registerGlobal;function getGlobal(e){var t,r;const n=(t=s[c])===null||t===void 0?void 0:t.version;if(!n||!(0,o.isCompatible)(n)){return}return(r=s[c])===null||r===void 0?void 0:r[e]}t.getGlobal=getGlobal;function unregisterGlobal(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);const r=s[c];if(r){delete r[e]}}t.unregisterGlobal=unregisterGlobal},130:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.isCompatible=t._makeCompatibilityCheck=void 0;const n=r(521);const a=/^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;function _makeCompatibilityCheck(e){const t=new Set([e]);const r=new Set;const n=e.match(a);if(!n){return()=>false}const o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(o.prerelease!=null){return function isExactmatch(t){return t===e}}function _reject(e){r.add(e);return false}function _accept(e){t.add(e);return true}return function isCompatible(e){if(t.has(e)){return true}if(r.has(e)){return false}const n=e.match(a);if(!n){return _reject(e)}const i={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(i.prerelease!=null){return _reject(e)}if(o.major!==i.major){return _reject(e)}if(o.major===0){if(o.minor===i.minor&&o.patch<=i.patch){return _accept(e)}return _reject(e)}if(o.minor<=i.minor){return _accept(e)}return _reject(e)}}t._makeCompatibilityCheck=_makeCompatibilityCheck;t.isCompatible=_makeCompatibilityCheck(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.metrics=void 0;const n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ValueType=void 0;var r;(function(e){e[e[\"INT\"]=0]=\"INT\";e[e[\"DOUBLE\"]=1]=\"DOUBLE\"})(r=t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class NoopMeter{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=NoopMeter;class NoopMetric{}t.NoopMetric=NoopMetric;class NoopCounterMetric extends NoopMetric{add(e,t){}}t.NoopCounterMetric=NoopCounterMetric;class NoopUpDownCounterMetric extends NoopMetric{add(e,t){}}t.NoopUpDownCounterMetric=NoopUpDownCounterMetric;class NoopHistogramMetric extends NoopMetric{record(e,t){}}t.NoopHistogramMetric=NoopHistogramMetric;class NoopObservableMetric{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=NoopObservableMetric;class NoopObservableCounterMetric extends NoopObservableMetric{}t.NoopObservableCounterMetric=NoopObservableCounterMetric;class NoopObservableGaugeMetric extends NoopObservableMetric{}t.NoopObservableGaugeMetric=NoopObservableGaugeMetric;class NoopObservableUpDownCounterMetric extends NoopObservableMetric{}t.NoopObservableUpDownCounterMetric=NoopObservableUpDownCounterMetric;t.NOOP_METER=new NoopMeter;t.NOOP_COUNTER_METRIC=new NoopCounterMetric;t.NOOP_HISTOGRAM_METRIC=new NoopHistogramMetric;t.NOOP_UP_DOWN_COUNTER_METRIC=new NoopUpDownCounterMetric;t.NOOP_OBSERVABLE_COUNTER_METRIC=new NoopObservableCounterMetric;t.NOOP_OBSERVABLE_GAUGE_METRIC=new NoopObservableGaugeMetric;t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new NoopObservableUpDownCounterMetric;function createNoopMeter(){return t.NOOP_METER}t.createNoopMeter=createNoopMeter},660:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;const n=r(102);class NoopMeterProvider{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=NoopMeterProvider;t.NOOP_METER_PROVIDER=new NoopMeterProvider},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(46),t)},651:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t._globalThis=void 0;t._globalThis=typeof globalThis===\"object\"?globalThis:global},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.propagation=void 0;const n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTextMapPropagator=void 0;class NoopTextMapPropagator{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=NoopTextMapPropagator},194:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.defaultTextMapSetter=t.defaultTextMapGetter=void 0;t.defaultTextMapGetter={get(e,t){if(e==null){return undefined}return e[t]},keys(e){if(e==null){return[]}return Object.keys(e)}};t.defaultTextMapSetter={set(e,t,r){if(e==null){return}e[t]=r}}},845:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.trace=void 0;const n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NonRecordingSpan=void 0;const n=r(476);class NonRecordingSpan{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return false}recordException(e,t){}}t.NonRecordingSpan=NonRecordingSpan},614:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracer=void 0;const n=r(491);const a=r(607);const o=r(403);const i=r(139);const c=n.ContextAPI.getInstance();class NoopTracer{startSpan(e,t,r=c.active()){const n=Boolean(t===null||t===void 0?void 0:t.root);if(n){return new o.NonRecordingSpan}const s=r&&(0,a.getSpanContext)(r);if(isSpanContext(s)&&(0,i.isSpanContextValid)(s)){return new o.NonRecordingSpan(s)}else{return new o.NonRecordingSpan}}startActiveSpan(e,t,r,n){let o;let i;let s;if(arguments.length<2){return}else if(arguments.length===2){s=t}else if(arguments.length===3){o=t;s=r}else{o=t;i=r;s=n}const u=i!==null&&i!==void 0?i:c.active();const l=this.startSpan(e,o,u);const g=(0,a.setSpan)(u,l);return c.with(g,s,undefined,l)}}t.NoopTracer=NoopTracer;function isSpanContext(e){return typeof e===\"object\"&&typeof e[\"spanId\"]===\"string\"&&typeof e[\"traceId\"]===\"string\"&&typeof e[\"traceFlags\"]===\"number\"}},124:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracerProvider=void 0;const n=r(614);class NoopTracerProvider{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=NoopTracerProvider},125:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracer=void 0;const n=r(614);const a=new n.NoopTracer;class ProxyTracer{constructor(e,t,r,n){this._provider=e;this.name=t;this.version=r;this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){const a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)}_getTracer(){if(this._delegate){return this._delegate}const e=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!e){return a}this._delegate=e;return this._delegate}}t.ProxyTracer=ProxyTracer},846:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracerProvider=void 0;const n=r(125);const a=r(124);const o=new a.NoopTracerProvider;class ProxyTracerProvider{getTracer(e,t,r){var a;return(a=this.getDelegateTracer(e,t,r))!==null&&a!==void 0?a:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:o}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return(n=this._delegate)===null||n===void 0?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=ProxyTracerProvider},996:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SamplingDecision=void 0;var r;(function(e){e[e[\"NOT_RECORD\"]=0]=\"NOT_RECORD\";e[e[\"RECORD\"]=1]=\"RECORD\";e[e[\"RECORD_AND_SAMPLED\"]=2]=\"RECORD_AND_SAMPLED\"})(r=t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;const n=r(780);const a=r(403);const o=r(491);const i=(0,n.createContextKey)(\"OpenTelemetry Context Key SPAN\");function getSpan(e){return e.getValue(i)||undefined}t.getSpan=getSpan;function getActiveSpan(){return getSpan(o.ContextAPI.getInstance().active())}t.getActiveSpan=getActiveSpan;function setSpan(e,t){return e.setValue(i,t)}t.setSpan=setSpan;function deleteSpan(e){return e.deleteValue(i)}t.deleteSpan=deleteSpan;function setSpanContext(e,t){return setSpan(e,new a.NonRecordingSpan(t))}t.setSpanContext=setSpanContext;function getSpanContext(e){var t;return(t=getSpan(e))===null||t===void 0?void 0:t.spanContext()}t.getSpanContext=getSpanContext},325:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceStateImpl=void 0;const n=r(564);const a=32;const o=512;const i=\",\";const c=\"=\";class TraceStateImpl{constructor(e){this._internalState=new Map;if(e)this._parse(e)}set(e,t){const r=this._clone();if(r._internalState.has(e)){r._internalState.delete(e)}r._internalState.set(e,t);return r}unset(e){const t=this._clone();t._internalState.delete(e);return t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce(((e,t)=>{e.push(t+c+this.get(t));return e}),[]).join(i)}_parse(e){if(e.length>o)return;this._internalState=e.split(i).reverse().reduce(((e,t)=>{const r=t.trim();const a=r.indexOf(c);if(a!==-1){const o=r.slice(0,a);const i=r.slice(a+1,t.length);if((0,n.validateKey)(o)&&(0,n.validateValue)(i)){e.set(o,i)}else{}}return e}),new Map);if(this._internalState.size>a){this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,a))}}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){const e=new TraceStateImpl;e._internalState=new Map(this._internalState);return e}}t.TraceStateImpl=TraceStateImpl},564:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.validateValue=t.validateKey=void 0;const r=\"[_0-9a-z-*/]\";const n=`[a-z]${r}{0,255}`;const a=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`;const o=new RegExp(`^(?:${n}|${a})$`);const i=/^[ -~]{0,255}[!-~]$/;const c=/,|=/;function validateKey(e){return o.test(e)}t.validateKey=validateKey;function validateValue(e){return i.test(e)&&!c.test(e)}t.validateValue=validateValue},98:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createTraceState=void 0;const n=r(325);function createTraceState(e){return new n.TraceStateImpl(e)}t.createTraceState=createTraceState},476:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;const n=r(475);t.INVALID_SPANID=\"0000000000000000\";t.INVALID_TRACEID=\"00000000000000000000000000000000\";t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanKind=void 0;var r;(function(e){e[e[\"INTERNAL\"]=0]=\"INTERNAL\";e[e[\"SERVER\"]=1]=\"SERVER\";e[e[\"CLIENT\"]=2]=\"CLIENT\";e[e[\"PRODUCER\"]=3]=\"PRODUCER\";e[e[\"CONSUMER\"]=4]=\"CONSUMER\"})(r=t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;const n=r(476);const a=r(403);const o=/^([0-9a-f]{32})$/i;const i=/^[0-9a-f]{16}$/i;function isValidTraceId(e){return o.test(e)&&e!==n.INVALID_TRACEID}t.isValidTraceId=isValidTraceId;function isValidSpanId(e){return i.test(e)&&e!==n.INVALID_SPANID}t.isValidSpanId=isValidSpanId;function isSpanContextValid(e){return isValidTraceId(e.traceId)&&isValidSpanId(e.spanId)}t.isSpanContextValid=isSpanContextValid;function wrapSpanContext(e){return new a.NonRecordingSpan(e)}t.wrapSpanContext=wrapSpanContext},847:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanStatusCode=void 0;var r;(function(e){e[e[\"UNSET\"]=0]=\"UNSET\";e[e[\"OK\"]=1]=\"OK\";e[e[\"ERROR\"]=2]=\"ERROR\"})(r=t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceFlags=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"SAMPLED\"]=1]=\"SAMPLED\"})(r=t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.VERSION=void 0;t.VERSION=\"1.6.0\"}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var a=t[r]={exports:{}};var o=true;try{e[r].call(a.exports,a,a.exports,__nccwpck_require__);o=false}finally{if(o)delete t[r]}return a.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};(()=>{var e=r;Object.defineProperty(e,\"__esModule\",{value:true});e.trace=e.propagation=e.metrics=e.diag=e.context=e.INVALID_SPAN_CONTEXT=e.INVALID_TRACEID=e.INVALID_SPANID=e.isValidSpanId=e.isValidTraceId=e.isSpanContextValid=e.createTraceState=e.TraceFlags=e.SpanStatusCode=e.SpanKind=e.SamplingDecision=e.ProxyTracerProvider=e.ProxyTracer=e.defaultTextMapSetter=e.defaultTextMapGetter=e.ValueType=e.createNoopMeter=e.DiagLogLevel=e.DiagConsoleLogger=e.ROOT_CONTEXT=e.createContextKey=e.baggageEntryMetadataFromString=void 0;var t=__nccwpck_require__(369);Object.defineProperty(e,\"baggageEntryMetadataFromString\",{enumerable:true,get:function(){return t.baggageEntryMetadataFromString}});var n=__nccwpck_require__(780);Object.defineProperty(e,\"createContextKey\",{enumerable:true,get:function(){return n.createContextKey}});Object.defineProperty(e,\"ROOT_CONTEXT\",{enumerable:true,get:function(){return n.ROOT_CONTEXT}});var a=__nccwpck_require__(972);Object.defineProperty(e,\"DiagConsoleLogger\",{enumerable:true,get:function(){return a.DiagConsoleLogger}});var o=__nccwpck_require__(957);Object.defineProperty(e,\"DiagLogLevel\",{enumerable:true,get:function(){return o.DiagLogLevel}});var i=__nccwpck_require__(102);Object.defineProperty(e,\"createNoopMeter\",{enumerable:true,get:function(){return i.createNoopMeter}});var c=__nccwpck_require__(901);Object.defineProperty(e,\"ValueType\",{enumerable:true,get:function(){return c.ValueType}});var s=__nccwpck_require__(194);Object.defineProperty(e,\"defaultTextMapGetter\",{enumerable:true,get:function(){return s.defaultTextMapGetter}});Object.defineProperty(e,\"defaultTextMapSetter\",{enumerable:true,get:function(){return s.defaultTextMapSetter}});var u=__nccwpck_require__(125);Object.defineProperty(e,\"ProxyTracer\",{enumerable:true,get:function(){return u.ProxyTracer}});var l=__nccwpck_require__(846);Object.defineProperty(e,\"ProxyTracerProvider\",{enumerable:true,get:function(){return l.ProxyTracerProvider}});var g=__nccwpck_require__(996);Object.defineProperty(e,\"SamplingDecision\",{enumerable:true,get:function(){return g.SamplingDecision}});var p=__nccwpck_require__(357);Object.defineProperty(e,\"SpanKind\",{enumerable:true,get:function(){return p.SpanKind}});var d=__nccwpck_require__(847);Object.defineProperty(e,\"SpanStatusCode\",{enumerable:true,get:function(){return d.SpanStatusCode}});var _=__nccwpck_require__(475);Object.defineProperty(e,\"TraceFlags\",{enumerable:true,get:function(){return _.TraceFlags}});var f=__nccwpck_require__(98);Object.defineProperty(e,\"createTraceState\",{enumerable:true,get:function(){return f.createTraceState}});var b=__nccwpck_require__(139);Object.defineProperty(e,\"isSpanContextValid\",{enumerable:true,get:function(){return b.isSpanContextValid}});Object.defineProperty(e,\"isValidTraceId\",{enumerable:true,get:function(){return b.isValidTraceId}});Object.defineProperty(e,\"isValidSpanId\",{enumerable:true,get:function(){return b.isValidSpanId}});var v=__nccwpck_require__(476);Object.defineProperty(e,\"INVALID_SPANID\",{enumerable:true,get:function(){return v.INVALID_SPANID}});Object.defineProperty(e,\"INVALID_TRACEID\",{enumerable:true,get:function(){return v.INVALID_TRACEID}});Object.defineProperty(e,\"INVALID_SPAN_CONTEXT\",{enumerable:true,get:function(){return v.INVALID_SPAN_CONTEXT}});const O=__nccwpck_require__(67);Object.defineProperty(e,\"context\",{enumerable:true,get:function(){return O.context}});const P=__nccwpck_require__(506);Object.defineProperty(e,\"diag\",{enumerable:true,get:function(){return P.diag}});const N=__nccwpck_require__(886);Object.defineProperty(e,\"metrics\",{enumerable:true,get:function(){return N.metrics}});const S=__nccwpck_require__(939);Object.defineProperty(e,\"propagation\",{enumerable:true,get:function(){return S.propagation}});const C=__nccwpck_require__(845);Object.defineProperty(e,\"trace\",{enumerable:true,get:function(){return C.trace}});e[\"default\"]={context:O.context,diag:P.diag,metrics:N.metrics,propagation:S.propagation,trace:C.trace}})();module.exports=r})();","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p{var i={226:function(i,e){(function(o,a){\"use strict\";var r=\"1.0.35\",t=\"\",n=\"?\",s=\"function\",b=\"undefined\",w=\"object\",l=\"string\",d=\"major\",c=\"model\",u=\"name\",p=\"type\",m=\"vendor\",f=\"version\",h=\"architecture\",v=\"console\",g=\"mobile\",k=\"tablet\",x=\"smarttv\",_=\"wearable\",y=\"embedded\",q=350;var T=\"Amazon\",S=\"Apple\",z=\"ASUS\",N=\"BlackBerry\",A=\"Browser\",C=\"Chrome\",E=\"Edge\",O=\"Firefox\",U=\"Google\",j=\"Huawei\",P=\"LG\",R=\"Microsoft\",M=\"Motorola\",B=\"Opera\",V=\"Samsung\",D=\"Sharp\",I=\"Sony\",W=\"Viera\",F=\"Xiaomi\",G=\"Zebra\",H=\"Facebook\",L=\"Chromium OS\",Z=\"Mac OS\";var extend=function(i,e){var o={};for(var a in i){if(e[a]&&e[a].length%2===0){o[a]=e[a].concat(i[a])}else{o[a]=i[a]}}return o},enumerize=function(i){var e={};for(var o=0;o0){if(b.length===2){if(typeof b[1]==s){this[b[0]]=b[1].call(this,d)}else{this[b[0]]=b[1]}}else if(b.length===3){if(typeof b[1]===s&&!(b[1].exec&&b[1].test)){this[b[0]]=d?b[1].call(this,d,b[2]):a}else{this[b[0]]=d?d.replace(b[1],b[2]):a}}else if(b.length===4){this[b[0]]=d?b[3].call(this,d.replace(b[1],b[2])):a}}else{this[b]=d?d:a}}}}o+=2}},strMapper=function(i,e){for(var o in e){if(typeof e[o]===w&&e[o].length>0){for(var r=0;r2){i[c]=\"iPad\";i[p]=k}return i};this.getEngine=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.engine);return i};this.getOS=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.os);if(_&&!i[u]&&v&&v.platform!=\"Unknown\"){i[u]=v.platform.replace(/chrome os/i,L).replace(/macos/i,Z)}return i};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return n};this.setUA=function(i){n=typeof i===l&&i.length>q?trim(i,q):i;return this};this.setUA(n);return this};UAParser.VERSION=r;UAParser.BROWSER=enumerize([u,f,d]);UAParser.CPU=enumerize([h]);UAParser.DEVICE=enumerize([c,m,p,v,g,x,k,_,y]);UAParser.ENGINE=UAParser.OS=enumerize([u,f]);if(typeof e!==b){if(\"object\"!==b&&i.exports){e=i.exports=UAParser}e.UAParser=UAParser}else{if(typeof define===s&&define.amd){define((function(){return UAParser}))}else if(typeof o!==b){o.UAParser=UAParser}}var Q=typeof o!==b&&(o.jQuery||o.Zepto);if(Q&&!Q.ua){var Y=new UAParser;Q.ua=Y.getResult();Q.ua.get=function(){return Y.getUA()};Q.ua.set=function(i){Y.setUA(i);var e=Y.getResult();for(var o in e){Q.ua[o]=e[o]}}}})(typeof window===\"object\"?window:this)}};var e={};function __nccwpck_require__(o){var a=e[o];if(a!==undefined){return a.exports}var r=e[o]={exports:{}};var t=true;try{i[o].call(r.exports,r,r.exports,__nccwpck_require__);t=false}finally{if(t)delete e[o]}return r.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var o=__nccwpck_require__(226);module.exports=o})();","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n getTestReqInfo: null,\n withRequest: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getTestReqInfo: function() {\n return getTestReqInfo;\n },\n withRequest: function() {\n return withRequest;\n }\n});\nconst _nodeasync_hooks = require(\"node:async_hooks\");\nconst testStorage = new _nodeasync_hooks.AsyncLocalStorage();\nfunction extractTestInfoFromRequest(req, reader) {\n const proxyPortHeader = reader.header(req, \"next-test-proxy-port\");\n if (!proxyPortHeader) {\n return undefined;\n }\n const url = reader.url(req);\n const proxyPort = Number(proxyPortHeader);\n const testData = reader.header(req, \"next-test-data\") || \"\";\n return {\n url,\n proxyPort,\n testData\n };\n}\nfunction withRequest(req, reader, fn) {\n const testReqInfo = extractTestInfoFromRequest(req, reader);\n if (!testReqInfo) {\n return fn();\n }\n return testStorage.run(testReqInfo, fn);\n}\nfunction getTestReqInfo(req, reader) {\n const testReqInfo = testStorage.getStore();\n if (testReqInfo) {\n return testReqInfo;\n }\n if (req && reader) {\n return extractTestInfoFromRequest(req, reader);\n }\n return undefined;\n}\n\n//# sourceMappingURL=context.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n handleFetch: null,\n interceptFetch: null,\n reader: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleFetch: function() {\n return handleFetch;\n },\n interceptFetch: function() {\n return interceptFetch;\n },\n reader: function() {\n return reader;\n }\n});\nconst _context = require(\"./context\");\nconst reader = {\n url (req) {\n return req.url;\n },\n header (req, name) {\n return req.headers.get(name);\n }\n};\nfunction getTestStack() {\n let stack = (new Error().stack ?? \"\").split(\"\\n\");\n // Skip the first line and find first non-empty line.\n for(let i = 1; i < stack.length; i++){\n if (stack[i].length > 0) {\n stack = stack.slice(i);\n break;\n }\n }\n // Filter out franmework lines.\n stack = stack.filter((f)=>!f.includes(\"/next/dist/\"));\n // At most 5 lines.\n stack = stack.slice(0, 5);\n // Cleanup some internal info and trim.\n stack = stack.map((s)=>s.replace(\"webpack-internal:///(rsc)/\", \"\").trim());\n return stack.join(\" \");\n}\nasync function buildProxyRequest(testData, request) {\n const { url, method, headers, body, cache, credentials, integrity, mode, redirect, referrer, referrerPolicy } = request;\n return {\n testData,\n api: \"fetch\",\n request: {\n url,\n method,\n headers: [\n ...Array.from(headers),\n [\n \"next-test-stack\",\n getTestStack()\n ]\n ],\n body: body ? Buffer.from(await request.arrayBuffer()).toString(\"base64\") : null,\n cache,\n credentials,\n integrity,\n mode,\n redirect,\n referrer,\n referrerPolicy\n }\n };\n}\nfunction buildResponse(proxyResponse) {\n const { status, headers, body } = proxyResponse.response;\n return new Response(body ? Buffer.from(body, \"base64\") : null, {\n status,\n headers: new Headers(headers)\n });\n}\nasync function handleFetch(originalFetch, request) {\n const testInfo = (0, _context.getTestReqInfo)(request, reader);\n if (!testInfo) {\n // Passthrough non-test requests.\n return originalFetch(request);\n }\n const { testData, proxyPort } = testInfo;\n const proxyRequest = await buildProxyRequest(testData, request);\n const resp = await originalFetch(`http://localhost:${proxyPort}`, {\n method: \"POST\",\n body: JSON.stringify(proxyRequest),\n next: {\n // @ts-ignore\n internal: true\n }\n });\n if (!resp.ok) {\n throw new Error(`Proxy request failed: ${resp.status}`);\n }\n const proxyResponse = await resp.json();\n const { api } = proxyResponse;\n switch(api){\n case \"continue\":\n return originalFetch(request);\n case \"abort\":\n case \"unhandled\":\n throw new Error(`Proxy request aborted [${request.method} ${request.url}]`);\n default:\n break;\n }\n return buildResponse(proxyResponse);\n}\nfunction interceptFetch(originalFetch) {\n global.fetch = function testFetch(input, init) {\n var _init_next;\n // Passthrough internal requests.\n // @ts-ignore\n if (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next.internal) {\n return originalFetch(input, init);\n }\n return handleFetch(originalFetch, new Request(input, init));\n };\n return ()=>{\n global.fetch = originalFetch;\n };\n}\n\n//# sourceMappingURL=fetch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n interceptTestApis: null,\n wrapRequestHandler: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n interceptTestApis: function() {\n return interceptTestApis;\n },\n wrapRequestHandler: function() {\n return wrapRequestHandler;\n }\n});\nconst _context = require(\"./context\");\nconst _fetch = require(\"./fetch\");\nfunction interceptTestApis() {\n return (0, _fetch.interceptFetch)(global.fetch);\n}\nfunction wrapRequestHandler(handler) {\n return (req, fn)=>(0, _context.withRequest)(req, _fetch.reader, ()=>handler(req, fn));\n}\n\n//# sourceMappingURL=server-edge.js.map"],"names":["module","exports","require","api","BaseServerSpan","LoadComponentsSpan","NextServerSpan","NextNodeServerSpan","StartServerSpan","RenderSpan","AppRenderSpan","RouterSpan","constants_NodeSpan","AppRouteRouteHandlersSpan","ResolveMetadataSpan","MiddlewareSpan","registerInstrumentation","register","globalThis","_ENTRIES","middleware_instrumentation","err","message","registerInstrumentationPromise","ensureInstrumentationRegistered","getUnsupportedModuleErrorMessage","process","__webpack_require__","g","env","Object","defineProperty","value","moduleName","proxy","Proxy","get","_obj","prop","construct","apply","_target","_this","args","enumerable","configurable","PageSignatureError","Error","constructor","page","RemovedPageError","RemovedUAError","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","middleware","instrument","edgeAsset","appPagesBrowser","appMetadataRoute","appRouteHandler","splitCookiesString","cookiesString","start","ch","lastComma","nextStart","cookiesSeparatorFound","cookiesStrings","pos","skipWhitespace","length","test","charAt","push","substring","toNodeOutgoingHttpHeaders","headers","nodeHeaders","cookies","key","entries","toLowerCase","validateURL","url","String","URL","error","cause","GROUP","serverOnly","clientOnly","nonClientServerTarget","app","responseSymbol","Symbol","passThroughSymbol","waitUntilSymbol","FetchEvent","_request","respondWith","response","Promise","resolve","passThroughOnException","waitUntil","promise","NextFetchEvent","params","request","sourcePage","removeTrailingSlash","route","replace","parsePath","path","hashIndex","indexOf","queryIndex","hasQuery","pathname","query","undefined","hash","slice","addPathPrefix","prefix","startsWith","addPathSuffix","suffix","pathHasPrefix","normalizeLocalePath","locales","detectedLocale","pathnameParts","split","some","locale","splice","join","REGEX_LOCALHOST_HOSTNAME","parseURL","base","Internal","NextURL","input","baseOrOpts","opts","options","basePath","analyze","_this_Internal_options_nextConfig_i18n","_this_Internal_options_nextConfig","_this_Internal_domainLocale","_this_Internal_options_nextConfig_i18n1","_this_Internal_options_nextConfig1","info","getNextPathnameInfo","result","i18n","trailingSlash","nextConfig","endsWith","removePathPrefix","withoutPrefix","pathnameNoDataPrefix","paths","buildId","parseData","i18nProvider","hostname","getHostname","parsed","host","Array","isArray","toString","domainLocale","detectDomainLocale","domainItems","item","domainHostname","domain","defaultLocale","domains","formatPathname","addLocale","ignorePrefix","lower","forceLocale","formatSearch","search","includes","searchParams","port","protocol","href","origin","password","username","toJSON","for","clone","INTERNALS","NextRequest","Request","init","nextUrl","_edge_runtime_cookies","RequestCookies","geo","ip","bodyUsed","cache","credentials","destination","fromEntries","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","signal","ua","ReflectAdapter","target","receiver","Reflect","bind","set","has","deleteProperty","response_INTERNALS","REDIRECTS","Set","handleMiddlewareField","_init_request","Headers","keys","NextResponse","Response","body","cookiesProxy","ResponseCookies","newHeaders","getAll","map","stringifyCookie","cookie","ok","redirected","status","statusText","type","json","initObj","rewrite","next","relativizeURL","baseURL","relative","FLIGHT_PARAMETERS","INTERNAL_QUERY_NAMES","EDGE_EXTENDED_INTERNAL_QUERY_NAMES","ReadonlyHeadersError","callable","HeadersAdapter","lowercased","original","find","o","seal","merge","from","append","name","existing","delete","forEach","callbackfn","thisArg","call","values","iterator","sharedAsyncLocalStorageNotAvailableError","FakeAsyncLocalStorage","disable","getStore","run","exit","enterWith","maybeGlobalAsyncLocalStorage","AsyncLocalStorage","createAsyncLocalStorage","staticGenerationAsyncStorage","ReadonlyRequestCookiesError","RequestCookiesAdapter","SYMBOL_MODIFY_COOKIE_VALUES","MutableRequestCookiesAdapter","wrap","onUpdateCookies","responseCookies","modifiedValues","modifiedCookies","updateResponseCookies","staticGenerationAsyncStore","pathWasRevalidated","allCookies","filter","c","serializedCookies","tempCookies","add","NodeSpan","NextVanillaSpanAllowlist","LogSpanAllowList","context","propagation","trace","SpanStatusCode","SpanKind","ROOT_CONTEXT","isPromise","p","then","closeSpanWithError","span","bubble","setAttribute","recordException","setStatus","code","ERROR","end","rootSpanAttributesStore","Map","rootSpanIdKey","createContextKey","lastSpanId","getSpanId","NextTracerImpl","getTracerInstance","getTracer","getContext","getActiveScopeSpan","getSpan","active","withPropagatedContext","carrier","fn","getter","activeContext","getSpanContext","remoteContext","extract","with","_trace_getSpanContext","fnOrOptions","fnOrEmpty","spanName","NEXT_OTEL_VERBOSE","hideSpan","spanContext","parentSpan","isRootSpan","isRemote","spanId","attributes","setValue","startActiveSpan","startTime","performance","now","onCleanup","NEXT_OTEL_PERFORMANCE_PREFIX","measure","pop","match","res","catch","finally","tracer","optionsObj","arguments","lastArgId","cb","scopeBoundCb","_span","done","startSpan","setSpan","getRootSpanAttributes","getValue","tracer_getTracer","COOKIE_NAME_PRERENDER_BYPASS","DraftModeProvider","previewProps","req","mutableCookies","_cookies_get","isOnDemandRevalidate","checkIsOnDemandRevalidate","previewModeId","revalidateOnlyGenerated","cookieValue","isEnabled","Boolean","_previewModeId","_mutableCookies","enable","httpOnly","sameSite","secure","expires","Date","mergeMiddlewareCookies","existingCookies","setCookieValue","responseHeaders","RequestAsyncStorageWrapper","storage","renderOpts","callback","defaultOnUpdateCookies","setHeader","store","getHeaders","cleaned","param","requestCookies","getMutableCookies","draftMode","reactLoadableManifest","assetPrefix","requestAsyncStorage","getEdgePreviewProps","__NEXT_PREVIEW_MODE_ID","previewModeSigningKey","__NEXT_PREVIEW_MODE_SIGNING_KEY","previewModeEncryptionKey","__NEXT_PREVIEW_MODE_ENCRYPTION_KEY","NextRequestHint","headersGetter","propagator","testApisIntercepted","adapter","cookiesFromResponse","ensureTestApisIntercepted","NEXT_PRIVATE_TEST_PROXY","interceptTestApis","wrapRequestHandler","isEdgeRendering","self","__BUILD_MANIFEST","requestUrl","normalizeNextQueryParam","onKeyNormalized","val","normalizedKey","isNextDataRequest","requestHeaders","fromNodeOutgoingHttpHeaders","v","flightHeaders","stripInternalSearchParams","isEdge","isStringUrl","instance","__incrementalCacheShared","IncrementalCache","__incrementalCache","appDir","fetchCache","minimalMode","fetchCacheKeyPrefix","dev","requestProtocol","getPrerenderManifest","version","routes","dynamicRoutes","notFoundRoutes","preview","event","execute","request_async_storage_instance_requestAsyncStorage","handler","rewriteUrl","relativizedRewrite","redirectURL","finalResponse","middlewareOverrideHeaders","overwrittenHeaders","all","fetchMetrics","URLPattern","protectedRoutes","authRoutes","publicRoutes","isAuthenticated","isProtectedRoute","isAuthRoute","loginUrl","config","matcher","mod","middleware_namespaceObject","default","nHandler","__defProp","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","src_exports","_a","attrs","toUTCString","maxAge","partitioned","priority","stringified","encodeURIComponent","parseCookie","pair","splitAt","decodeURIComponent","parseSetCookie","setCookie","string","httponly","maxage","samesite","value2","compact","t","newT","Number","SAME_SITE","PRIORITY","__export","__copyProps","to","except","desc","_parsed","_headers","header","size","_","n","names","clear","JSON","stringify","_b","_c","getSetCookie","cookieString","normalizeCookie","bag","serialized","e","r","ContextAPI","a","i","NoopContextManager","getInstance","_instance","setGlobalContextManager","registerGlobal","DiagAPI","_getContextManager","getGlobal","unregisterGlobal","_logProxy","setLogger","logLevel","DiagLogLevel","INFO","s","stack","u","l","createLogLevelDiagLogger","suppressOverrideMessage","warn","createComponentLogger","DiagComponentLogger","verbose","debug","MetricsAPI","setGlobalMeterProvider","getMeterProvider","NOOP_METER_PROVIDER","getMeter","PropagationAPI","NoopTextMapPropagator","createBaggage","getBaggage","getActiveBaggage","setBaggage","deleteBaggage","setGlobalPropagator","inject","defaultTextMapSetter","_getGlobalPropagator","defaultTextMapGetter","fields","TraceAPI","_proxyTracerProvider","ProxyTracerProvider","wrapSpanContext","isSpanContextValid","deleteSpan","getActiveSpan","setSpanContext","setGlobalTracerProvider","setDelegate","getTracerProvider","deleteValue","BaggageImpl","_entries","getEntry","assign","getAllEntries","setEntry","removeEntry","removeEntries","baggageEntryMetadataSymbol","baggageEntryMetadataFromString","__TYPE__","BaseContext","_currentContext","diag","_namespace","namespace","logProxy","unshift","DiagConsoleLogger","_consoleFunc","console","log","_filterFunc","NONE","ALL","WARN","DEBUG","VERBOSE","VERSION","_globalThis","isCompatible","_makeCompatibilityCheck","major","minor","patch","prerelease","_reject","metrics","ValueType","createNoopMeter","NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC","NOOP_OBSERVABLE_GAUGE_METRIC","NOOP_OBSERVABLE_COUNTER_METRIC","NOOP_UP_DOWN_COUNTER_METRIC","NOOP_HISTOGRAM_METRIC","NOOP_COUNTER_METRIC","NOOP_METER","NoopObservableUpDownCounterMetric","NoopObservableGaugeMetric","NoopObservableCounterMetric","NoopObservableMetric","NoopHistogramMetric","NoopUpDownCounterMetric","NoopCounterMetric","NoopMetric","NoopMeter","createHistogram","createCounter","createUpDownCounter","createObservableGauge","createObservableCounter","createObservableUpDownCounter","addBatchObservableCallback","removeBatchObservableCallback","record","addCallback","removeCallback","NoopMeterProvider","__createBinding","create","__exportStar","NonRecordingSpan","INVALID_SPAN_CONTEXT","_spanContext","setAttributes","addEvent","updateName","isRecording","NoopTracer","root","NoopTracerProvider","ProxyTracer","_provider","_getTracer","_delegate","getDelegateTracer","getDelegate","SamplingDecision","TraceStateImpl","_internalState","_parse","_clone","unset","serialize","_keys","reduce","reverse","trim","validateKey","validateValue","createTraceState","INVALID_TRACEID","INVALID_SPANID","traceId","traceFlags","TraceFlags","isValidSpanId","isValidTraceId","__nccwpck_require__","ab","__dirname","d","f","b","O","P","N","S","C","parse","decode","substr","tryDecode","encode","isNaN","isFinite","Math","floor","__WEBPACK_AMD_DEFINE_RESULT__","w","m","h","k","x","y","T","z","A","U","j","R","M","B","V","D","I","F","G","H","L","Z","extend","concat","enumerize","toUpperCase","lowerize","rgxMapper","exec","strMapper","X","ME","XP","Vista","RT","K","browser","cpu","device","engine","E","os","UAParser","getResult","navigator","userAgent","userAgentData","getBrowser","brave","isBrave","getCPU","getDevice","mobile","standalone","maxTouchPoints","getEngine","getOS","platform","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","amdO","Q","jQuery","Zepto","Y","window","_export","getTestReqInfo","withRequest","testStorage","_nodeasync_hooks","extractTestInfoFromRequest","reader","proxyPortHeader","proxyPort","testData","testReqInfo","handleFetch","interceptFetch","_context","buildProxyRequest","getTestStack","Buffer","arrayBuffer","originalFetch","testInfo","proxyRequest","resp","internal","proxyResponse","buildResponse","fetch","_init_next","_fetch"],"sourceRoot":""} \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/server/webpack-runtime.js b/phase-1-core-infra/frontend/.next/server/webpack-runtime.js new file mode 100644 index 0000000000000000000000000000000000000000..698495842d03c74c84021a07396c9831b7fe86a4 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/server/webpack-runtime.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={},r={};function t(o){var a=r[o];if(void 0!==a)return a.exports;var n=r[o]={id:o,loaded:!1,exports:{}},l=!0;try{e[o].call(n.exports,n,n.exports,t),l=!1}finally{l&&delete r[o]}return n.loaded=!0,n.exports}t.m=e,t.amdO={},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},(()=>{var e,r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;t.t=function(o,a){if(1&a&&(o=this(o)),8&a||"object"==typeof o&&o&&(4&a&&o.__esModule||16&a&&"function"==typeof o.then))return o;var n=Object.create(null);t.r(n);var l={};e=e||[null,r({}),r([]),r(r)];for(var d=2&a&&o;"object"==typeof d&&!~e.indexOf(d);d=r(d))Object.getOwnPropertyNames(d).forEach(e=>l[e]=()=>o[e]);return l.default=()=>o,t.d(n,l),n}})(),t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.f={},t.e=e=>Promise.all(Object.keys(t.f).reduce((r,o)=>(t.f[o](e,r),r),[])),t.u=e=>""+e+".js",t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),t.X=(e,r,o)=>{var a=r;o||(r=e,o=()=>t(t.s=a)),r.map(t.e,t);var n=o();return void 0===n?e:n},(()=>{var e={658:1},r=r=>{var o=r.modules,a=r.ids,n=r.runtime;for(var l in o)t.o(o,l)&&(t.m[l]=o[l]);n&&n(t);for(var d=0;d{e[o]||(658!=o?r(require("./chunks/"+t.u(o))):e[o]=1)},module.exports=t,t.C=r})()})(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/_ZCPiTZXfhnfeDdShwrwt/_buildManifest.js b/phase-1-core-infra/frontend/.next/static/_ZCPiTZXfhnfeDdShwrwt/_buildManifest.js new file mode 100644 index 0000000000000000000000000000000000000000..99c93d339aa610448de57279c76f3db9baeab1e4 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/_ZCPiTZXfhnfeDdShwrwt/_buildManifest.js @@ -0,0 +1 @@ +self.__BUILD_MANIFEST=function(e){return{__rewrites:{afterFiles:[{has:e,source:"/api/v1/:path*",destination:e}],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-28b803cb2479b966.js"],sortedPages:["/_app","/_error"]}}(void 0),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/_ZCPiTZXfhnfeDdShwrwt/_ssgManifest.js b/phase-1-core-infra/frontend/.next/static/_ZCPiTZXfhnfeDdShwrwt/_ssgManifest.js new file mode 100644 index 0000000000000000000000000000000000000000..0511aa895e5036ab4b50d97112e1d6aed9a3cd79 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/_ZCPiTZXfhnfeDdShwrwt/_ssgManifest.js @@ -0,0 +1 @@ +self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB(); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/117-b80dbde68ec4014e.js b/phase-1-core-infra/frontend/.next/static/chunks/117-b80dbde68ec4014e.js new file mode 100644 index 0000000000000000000000000000000000000000..f3c01443793bc4f4431d67eb7a436f345b80d168 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/117-b80dbde68ec4014e.js @@ -0,0 +1,2 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[117],{65157:function(e,t){"use strict";function n(){return""}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDeploymentIdQueryOrEmptyString",{enumerable:!0,get:function(){return n}})},91572:function(){"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},1634:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return u}});let r=n(68498),o=n(33068);function u(e,t){return(0,o.normalizePathTrailingSlash)((0,r.addPathPrefix)(e,""))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},75266:function(e,t){"use strict";function n(e){var t,n;t=self.__next_s,n=()=>{e()},t&&t.length?t.reduce((e,t)=>{let[n,r]=t;return e.then(()=>new Promise((e,t)=>{let o=document.createElement("script");if(r)for(let e in r)"children"!==e&&o.setAttribute(e,r[e]);n?(o.src=n,o.onload=()=>e(),o.onerror=t):r&&(o.innerHTML=r.children,setTimeout(e)),document.head.appendChild(o)}))},Promise.resolve()).catch(e=>{console.error(e)}).then(()=>{n()}):n()}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"appBootstrap",{enumerable:!0,get:function(){return n}}),window.next={version:"14.2.35",appDir:!0},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83079:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"callServer",{enumerable:!0,get:function(){return o}});let r=n(12846);async function o(e,t){let n=(0,r.getServerActionDispatcher)();if(!n)throw Error("Invariant: missing action dispatcher.");return new Promise((r,o)=>{n({actionId:e,actionArgs:t,resolve:r,reject:o})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},92304:function(e,t,n){"use strict";let r,o;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hydrate",{enumerable:!0,get:function(){return C}});let u=n(47043),l=n(53099),a=n(57437);n(91572);let i=u._(n(34040)),c=l._(n(2265)),s=n(6671),f=n(48701),d=u._(n(61404)),p=n(83079),h=n(89721),y=n(2103);n(70647);let _=window.console.error;window.console.error=function(){for(var e=arguments.length,t=Array(e),n=0;n{if((0,h.isNextRouterError)(e.error)){e.preventDefault();return}});let v=document,b=new TextEncoder,g=!1,m=!1,R=null;function P(e){if(0===e[0])r=[];else if(1===e[0]){if(!r)throw Error("Unexpected server data: missing bootstrap script.");o?o.enqueue(b.encode(e[1])):r.push(e[1])}else 2===e[0]&&(R=e[1])}let j=function(){o&&!m&&(o.close(),m=!0,r=void 0),g=!0};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",j,!1):j();let O=self.__next_f=self.__next_f||[];O.forEach(P),O.push=P;let E=new ReadableStream({start(e){r&&(r.forEach(t=>{e.enqueue(b.encode(t))}),g&&!m&&(e.close(),m=!0,r=void 0)),o=e}}),S=(0,s.createFromReadableStream)(E,{callServer:p.callServer});function w(){return(0,c.use)(S)}let M=c.default.StrictMode;function T(e){let{children:t}=e;return t}function C(){let e=(0,y.createMutableActionQueue)(),t=(0,a.jsx)(M,{children:(0,a.jsx)(f.HeadManagerContext.Provider,{value:{appDir:!0},children:(0,a.jsx)(y.ActionQueueContext.Provider,{value:e,children:(0,a.jsx)(T,{children:(0,a.jsx)(w,{})})})})}),n=window.__next_root_layout_missing_tags,r=!!(null==n?void 0:n.length),o={onRecoverableError:d.default};"__next_error__"===document.documentElement.id||r?i.default.createRoot(v,o).render(t):c.default.startTransition(()=>i.default.hydrateRoot(v,t,{...o,formState:R}))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},54278:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(19506),(0,n(75266).appBootstrap)(()=>{let{hydrate:e}=n(92304);n(12846),n(4707),e()}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},19506:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(65157);{let e=n.u;n.u=function(){for(var t=arguments.length,n=Array(t),r=0;r(l(function(){var e;let t=document.getElementsByName(u)[0];if(null==t?void 0:null==(e=t.shadowRoot)?void 0:e.childNodes[0])return t.shadowRoot.childNodes[0];{let e=document.createElement(u);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(u)[0];(null==e?void 0:e.isConnected)&&document.body.removeChild(e)}),[]);let[a,i]=(0,r.useState)(""),c=(0,r.useRef)();return(0,r.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==c.current&&c.current!==e&&i(e),c.current=e},[t]),n?(0,o.createPortal)(a,n):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6866:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ACTION:function(){return r},FLIGHT_PARAMETERS:function(){return i},NEXT_DID_POSTPONE_HEADER:function(){return s},NEXT_ROUTER_PREFETCH_HEADER:function(){return u},NEXT_ROUTER_STATE_TREE:function(){return o},NEXT_RSC_UNION_QUERY:function(){return c},NEXT_URL:function(){return l},RSC_CONTENT_TYPE_HEADER:function(){return a},RSC_HEADER:function(){return n}});let n="RSC",r="Next-Action",o="Next-Router-State-Tree",u="Next-Router-Prefetch",l="Next-Url",a="text/x-component",i=[[n],[o],[u]],c="_rsc",s="x-nextjs-postponed";("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},12846:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{createEmptyCacheNode:function(){return x},default:function(){return I},getServerActionDispatcher:function(){return S},urlToUrlWithoutFlightMarker:function(){return M}});let r=n(53099),o=n(57437),u=r._(n(2265)),l=n(61956),a=n(24673),i=n(33456),c=n(79060),s=n(47744),f=n(61060),d=n(82952),p=n(86146),h=n(1634),y=n(6495),_=n(4123),v=n(39320),b=n(38137),g=n(6866),m=n(35076),R=n(11283),P=n(84541),j="undefined"==typeof window,O=j?null:new Map,E=null;function S(){return E}let w={};function M(e){let t=new URL(e,location.origin);return t.searchParams.delete(g.NEXT_RSC_UNION_QUERY),t}function T(e){return e.origin!==window.location.origin}function C(e){let{appRouterState:t,sync:n}=e;return(0,u.useInsertionEffect)(()=>{let{tree:e,pushRef:r,canonicalUrl:o}=t,u={...r.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:e};r.pendingPush&&(0,i.createHrefFromUrl)(new URL(window.location.href))!==o?(r.pendingPush=!1,window.history.pushState(u,"",o)):window.history.replaceState(u,"",o),n(t)},[t,n]),null}function x(){return{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null}}function A(e){null==e&&(e={});let t=window.history.state,n=null==t?void 0:t.__NA;n&&(e.__NA=n);let r=null==t?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;return r&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=r),e}function N(e){let{headCacheNode:t}=e,n=null!==t?t.head:null,r=null!==t?t.prefetchHead:null,o=null!==r?r:n;return(0,u.useDeferredValue)(n,o)}function D(e){let t,{buildId:n,initialHead:r,initialTree:i,urlParts:f,initialSeedData:g,couldBeIntercepted:S,assetPrefix:M,missingSlots:x}=e,D=(0,u.useMemo)(()=>(0,d.createInitialRouterState)({buildId:n,initialSeedData:g,urlParts:f,initialTree:i,initialParallelRoutes:O,location:j?null:window.location,initialHead:r,couldBeIntercepted:S}),[n,g,f,i,r,S]),[I,U,k]=(0,s.useReducerWithReduxDevtools)(D);(0,u.useEffect)(()=>{O=null},[]);let{canonicalUrl:F}=(0,s.useUnwrapState)(I),{searchParams:L,pathname:H}=(0,u.useMemo)(()=>{let e=new URL(F,"undefined"==typeof window?"http://n":window.location.href);return{searchParams:e.searchParams,pathname:(0,R.hasBasePath)(e.pathname)?(0,m.removeBasePath)(e.pathname):e.pathname}},[F]),G=(0,u.useCallback)(e=>{let{previousTree:t,serverResponse:n}=e;(0,u.startTransition)(()=>{U({type:a.ACTION_SERVER_PATCH,previousTree:t,serverResponse:n})})},[U]),$=(0,u.useCallback)((e,t,n)=>{let r=new URL((0,h.addBasePath)(e),location.href);return U({type:a.ACTION_NAVIGATE,url:r,isExternalUrl:T(r),locationSearch:location.search,shouldScroll:null==n||n,navigateType:t})},[U]);E=(0,u.useCallback)(e=>{(0,u.startTransition)(()=>{U({...e,type:a.ACTION_SERVER_ACTION})})},[U]);let z=(0,u.useMemo)(()=>({back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let n;if(!(0,p.isBot)(window.navigator.userAgent)){try{n=new URL((0,h.addBasePath)(e),window.location.href)}catch(t){throw Error("Cannot prefetch '"+e+"' because it cannot be converted to a URL.")}T(n)||(0,u.startTransition)(()=>{var e;U({type:a.ACTION_PREFETCH,url:n,kind:null!=(e=null==t?void 0:t.kind)?e:a.PrefetchKind.FULL})})}},replace:(e,t)=>{void 0===t&&(t={}),(0,u.startTransition)(()=>{var n;$(e,"replace",null==(n=t.scroll)||n)})},push:(e,t)=>{void 0===t&&(t={}),(0,u.startTransition)(()=>{var n;$(e,"push",null==(n=t.scroll)||n)})},refresh:()=>{(0,u.startTransition)(()=>{U({type:a.ACTION_REFRESH,origin:window.location.origin})})},fastRefresh:()=>{throw Error("fastRefresh can only be used in development mode. Please use refresh instead.")}}),[U,$]);(0,u.useEffect)(()=>{window.next&&(window.next.router=z)},[z]),(0,u.useEffect)(()=>{function e(e){var t;e.persisted&&(null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE)&&(w.pendingMpaPath=void 0,U({type:a.ACTION_RESTORE,url:new URL(window.location.href),tree:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[U]);let{pushRef:B}=(0,s.useUnwrapState)(I);if(B.mpaNavigation){if(w.pendingMpaPath!==F){let e=window.location;B.pendingPush?e.assign(F):e.replace(F),w.pendingMpaPath=F}(0,u.use)(b.unresolvedThenable)}(0,u.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),n=e=>{var t;let n=window.location.href,r=null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,u.startTransition)(()=>{U({type:a.ACTION_RESTORE,url:new URL(null!=e?e:n,n),tree:r})})};window.history.pushState=function(t,r,o){return(null==t?void 0:t.__NA)||(null==t?void 0:t._N)||(t=A(t),o&&n(o)),e(t,r,o)},window.history.replaceState=function(e,r,o){return(null==e?void 0:e.__NA)||(null==e?void 0:e._N)||(e=A(e),o&&n(o)),t(e,r,o)};let r=e=>{let{state:t}=e;if(t){if(!t.__NA){window.location.reload();return}(0,u.startTransition)(()=>{U({type:a.ACTION_RESTORE,url:new URL(window.location.href),tree:t.__PRIVATE_NEXTJS_INTERNALS_TREE})})}};return window.addEventListener("popstate",r),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",r)}},[U]);let{cache:K,tree:W,nextUrl:V,focusAndScrollRef:Y}=(0,s.useUnwrapState)(I),X=(0,u.useMemo)(()=>(0,v.findHeadInCache)(K,W[1]),[K,W]),q=(0,u.useMemo)(()=>(function e(t,n){for(let r of(void 0===n&&(n={}),Object.values(t[1]))){let t=r[0],o=Array.isArray(t),u=o?t[1]:t;!u||u.startsWith(P.PAGE_SEGMENT_KEY)||(o&&("c"===t[2]||"oc"===t[2])?n[t[0]]=t[1].split("/"):o&&(n[t[0]]=t[1]),n=e(r,n))}return n})(W),[W]);if(null!==X){let[e,n]=X;t=(0,o.jsx)(N,{headCacheNode:e},n)}else t=null;let J=(0,o.jsxs)(_.RedirectBoundary,{children:[t,K.rsc,(0,o.jsx)(y.AppRouterAnnouncer,{tree:W})]});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(C,{appRouterState:(0,s.useUnwrapState)(I),sync:k}),(0,o.jsx)(c.PathParamsContext.Provider,{value:q,children:(0,o.jsx)(c.PathnameContext.Provider,{value:H,children:(0,o.jsx)(c.SearchParamsContext.Provider,{value:L,children:(0,o.jsx)(l.GlobalLayoutRouterContext.Provider,{value:{buildId:n,changeByServerResponse:G,tree:W,focusAndScrollRef:Y,nextUrl:V},children:(0,o.jsx)(l.AppRouterContext.Provider,{value:z,children:(0,o.jsx)(l.LayoutRouterContext.Provider,{value:{childNodes:K.parallelRoutes,tree:W,url:F,loading:K.loading},children:J})})})})})})]})}function I(e){let{globalErrorComponent:t,...n}=e;return(0,o.jsx)(f.ErrorBoundary,{errorComponent:t,children:(0,o.jsx)(D,{...n})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},96149:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"bailoutToClientRendering",{enumerable:!0,get:function(){return u}});let r=n(18993),o=n(51845);function u(e){let t=o.staticGenerationAsyncStorage.getStore();if((null==t||!t.forceStatic)&&(null==t?void 0:t.isStaticGeneration))throw new r.BailoutToCSRError(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},19107:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientPageRoot",{enumerable:!0,get:function(){return u}});let r=n(57437),o=n(54535);function u(e){let{Component:t,props:n}=e;return n.searchParams=(0,o.createDynamicallyTrackedSearchParams)(n.searchParams||{}),(0,r.jsx)(t,{...n})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},61060:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return f},GlobalError:function(){return d},default:function(){return p}});let r=n(47043),o=n(57437),u=r._(n(2265)),l=n(35475),a=n(89721),i=n(51845),c={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}};function s(e){let{error:t}=e,n=i.staticGenerationAsyncStorage.getStore();if((null==n?void 0:n.isRevalidate)||(null==n?void 0:n.isStaticGeneration))throw console.error(t),t;return null}class f extends u.default.Component{static getDerivedStateFromError(e){if((0,a.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}}function d(e){let{error:t}=e,n=null==t?void 0:t.digest;return(0,o.jsxs)("html",{id:"__next_error__",children:[(0,o.jsx)("head",{}),(0,o.jsxs)("body",{children:[(0,o.jsx)(s,{error:t}),(0,o.jsx)("div",{style:c.error,children:(0,o.jsxs)("div",{children:[(0,o.jsx)("h2",{style:c.text,children:"Application error: a "+(n?"server":"client")+"-side exception has occurred (see the "+(n?"server logs":"browser console")+" for more information)."}),n?(0,o.jsx)("p",{style:c.text,children:"Digest: "+n}):null]})})]})]})}let p=d;function h(e){let{errorComponent:t,errorStyles:n,errorScripts:r,children:u}=e,a=(0,l.usePathname)();return t?(0,o.jsx)(f,{pathname:a,errorComponent:t,errorStyles:n,errorScripts:r,children:u}):(0,o.jsx)(o.Fragment,{children:u})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},46177:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DynamicServerError:function(){return r},isDynamicServerError:function(){return o}});let n="DYNAMIC_SERVER_USAGE";class r extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=n}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},89721:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return u}});let r=n(98200),o=n(88968);function u(e){return e&&e.digest&&((0,o.isRedirectError)(e)||(0,r.isNotFoundError)(e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4707:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return E}});let r=n(47043),o=n(53099),u=n(57437),l=o._(n(2265)),a=r._(n(54887)),i=n(61956),c=n(44848),s=n(38137),f=n(61060),d=n(76015),p=n(7092),h=n(4123),y=n(80),_=n(73171),v=n(78505),b=n(28077),g=["bottom","height","left","right","top","width","x","y"];function m(e,t){let n=e.getBoundingClientRect();return n.top>=0&&n.top<=t}class R extends l.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){var n;if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,n)=>(0,d.matchSegment)(t,e[n]))))return;let r=null,o=e.hashFragment;if(o&&(r="top"===o?document.body:null!=(n=document.getElementById(o))?n:document.getElementsByName(o)[0]),r||(r="undefined"==typeof window?null:a.default.findDOMNode(this)),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return g.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,p.handleSmoothScroll)(()=>{if(o){r.scrollIntoView();return}let e=document.documentElement,t=e.clientHeight;!m(r,t)&&(e.scrollTop=0,m(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function P(e){let{segmentPath:t,children:n}=e,r=(0,l.useContext)(i.GlobalLayoutRouterContext);if(!r)throw Error("invariant global layout router not mounted");return(0,u.jsx)(R,{segmentPath:t,focusAndScrollRef:r.focusAndScrollRef,children:n})}function j(e){let{parallelRouterKey:t,url:n,childNodes:r,segmentPath:o,tree:a,cacheKey:f}=e,p=(0,l.useContext)(i.GlobalLayoutRouterContext);if(!p)throw Error("invariant global layout router not mounted");let{buildId:h,changeByServerResponse:y,tree:_}=p,v=r.get(f);if(void 0===v){let e={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};v=e,r.set(f,e)}let g=null!==v.prefetchRsc?v.prefetchRsc:v.rsc,m=(0,l.useDeferredValue)(v.rsc,g),R="object"==typeof m&&null!==m&&"function"==typeof m.then?(0,l.use)(m):m;if(!R){let e=v.lazyData;if(null===e){let t=function e(t,n){if(t){let[r,o]=t,u=2===t.length;if((0,d.matchSegment)(n[0],r)&&n[1].hasOwnProperty(o)){if(u){let t=e(void 0,n[1][o]);return[n[0],{...n[1],[o]:[t[0],t[1],t[2],"refetch"]}]}return[n[0],{...n[1],[o]:e(t.slice(2),n[1][o])}]}}return n}(["",...o],_),r=(0,b.hasInterceptionRouteInCurrentTree)(_);v.lazyData=e=(0,c.fetchServerResponse)(new URL(n,location.origin),t,r?p.nextUrl:null,h),v.lazyDataResolved=!1}let t=(0,l.use)(e);v.lazyDataResolved||(setTimeout(()=>{(0,l.startTransition)(()=>{y({previousTree:_,serverResponse:t})})}),v.lazyDataResolved=!0),(0,l.use)(s.unresolvedThenable)}return(0,u.jsx)(i.LayoutRouterContext.Provider,{value:{tree:a[1][t],childNodes:v.parallelRoutes,url:n,loading:v.loading},children:R})}function O(e){let{children:t,hasLoading:n,loading:r,loadingStyles:o,loadingScripts:a}=e;return n?(0,u.jsx)(l.Suspense,{fallback:(0,u.jsxs)(u.Fragment,{children:[o,a,r]}),children:t}):(0,u.jsx)(u.Fragment,{children:t})}function E(e){let{parallelRouterKey:t,segmentPath:n,error:r,errorStyles:o,errorScripts:a,templateStyles:c,templateScripts:s,template:d,notFound:p,notFoundStyles:b}=e,g=(0,l.useContext)(i.LayoutRouterContext);if(!g)throw Error("invariant expected layout router to be mounted");let{childNodes:m,tree:R,url:E,loading:S}=g,w=m.get(t);w||(w=new Map,m.set(t,w));let M=R[1][t][0],T=(0,_.getSegmentValue)(M),C=[M];return(0,u.jsx)(u.Fragment,{children:C.map(e=>{let l=(0,_.getSegmentValue)(e),g=(0,v.createRouterCacheKey)(e);return(0,u.jsxs)(i.TemplateContext.Provider,{value:(0,u.jsx)(P,{segmentPath:n,children:(0,u.jsx)(f.ErrorBoundary,{errorComponent:r,errorStyles:o,errorScripts:a,children:(0,u.jsx)(O,{hasLoading:!!S,loading:null==S?void 0:S[0],loadingStyles:null==S?void 0:S[1],loadingScripts:null==S?void 0:S[2],children:(0,u.jsx)(y.NotFoundBoundary,{notFound:p,notFoundStyles:b,children:(0,u.jsx)(h.RedirectBoundary,{children:(0,u.jsx)(j,{parallelRouterKey:t,url:E,tree:R,childNodes:w,segmentPath:n,cacheKey:g,isActive:T===l})})})})})}),children:[c,s,d]},(0,v.createRouterCacheKey)(e,!0))})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},76015:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{canSegmentBeOverridden:function(){return u},matchSegment:function(){return o}});let r=n(87417),o=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1],u=(e,t)=>{var n;return!Array.isArray(e)&&!!Array.isArray(t)&&(null==(n=(0,r.getSegmentParam)(e))?void 0:n.param)===t[0]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},35475:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},RedirectType:function(){return i.RedirectType},ServerInsertedHTMLContext:function(){return c.ServerInsertedHTMLContext},notFound:function(){return i.notFound},permanentRedirect:function(){return i.permanentRedirect},redirect:function(){return i.redirect},useParams:function(){return p},usePathname:function(){return f},useRouter:function(){return d},useSearchParams:function(){return s},useSelectedLayoutSegment:function(){return y},useSelectedLayoutSegments:function(){return h},useServerInsertedHTML:function(){return c.useServerInsertedHTML}});let r=n(2265),o=n(61956),u=n(79060),l=n(73171),a=n(84541),i=n(52646),c=n(55501);function s(){let e=(0,r.useContext)(u.SearchParamsContext),t=(0,r.useMemo)(()=>e?new i.ReadonlyURLSearchParams(e):null,[e]);if("undefined"==typeof window){let{bailoutToClientRendering:e}=n(96149);e("useSearchParams()")}return t}function f(){return(0,r.useContext)(u.PathnameContext)}function d(){let e=(0,r.useContext)(o.AppRouterContext);if(null===e)throw Error("invariant expected app router to be mounted");return e}function p(){return(0,r.useContext)(u.PathParamsContext)}function h(e){void 0===e&&(e="children");let t=(0,r.useContext)(o.LayoutRouterContext);return t?function e(t,n,r,o){let u;if(void 0===r&&(r=!0),void 0===o&&(o=[]),r)u=t[1][n];else{var i;let e=t[1];u=null!=(i=e.children)?i:Object.values(e)[0]}if(!u)return o;let c=u[0],s=(0,l.getSegmentValue)(c);return!s||s.startsWith(a.PAGE_SEGMENT_KEY)?o:(o.push(s),e(u,n,!1,o))}(t.tree,e):null}function y(e){void 0===e&&(e="children");let t=h(e);if(!t||0===t.length)return null;let n="children"===e?t[0]:t[t.length-1];return n===a.DEFAULT_SEGMENT_KEY?null:n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},52646:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ReadonlyURLSearchParams:function(){return l},RedirectType:function(){return r.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return r.permanentRedirect},redirect:function(){return r.redirect}});let r=n(88968),o=n(98200);class u extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class l extends URLSearchParams{append(){throw new u}delete(){throw new u}set(){throw new u}sort(){throw new u}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},80:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NotFoundBoundary",{enumerable:!0,get:function(){return s}});let r=n(53099),o=n(57437),u=r._(n(2265)),l=n(35475),a=n(98200);n(31765);let i=n(61956);class c extends u.default.Component{componentDidCatch(){}static getDerivedStateFromError(e){if((0,a.isNotFoundError)(e))return{notFoundTriggered:!0};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.notFoundTriggered?{notFoundTriggered:!1,previousPathname:e.pathname}:{notFoundTriggered:t.notFoundTriggered,previousPathname:e.pathname}}render(){return this.state.notFoundTriggered?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,this.props.notFoundStyles,this.props.notFound]}):this.props.children}constructor(e){super(e),this.state={notFoundTriggered:!!e.asNotFound,previousPathname:e.pathname}}}function s(e){let{notFound:t,notFoundStyles:n,asNotFound:r,children:a}=e,s=(0,l.usePathname)(),f=(0,u.useContext)(i.MissingSlotContext);return t?(0,o.jsx)(c,{pathname:s,notFound:t,notFoundStyles:n,asNotFound:r,missingSlots:f,children:a}):(0,o.jsx)(o.Fragment,{children:a})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},98200:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{isNotFoundError:function(){return o},notFound:function(){return r}});let n="NEXT_NOT_FOUND";function r(){let e=Error(n);throw e.digest=n,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},29744:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PromiseQueue",{enumerable:!0,get:function(){return c}});let r=n(2522),o=n(90675);var u=o._("_maxConcurrency"),l=o._("_runningCount"),a=o._("_queue"),i=o._("_processNext");class c{enqueue(e){let t,n;let o=new Promise((e,r)=>{t=e,n=r}),u=async()=>{try{r._(this,l)[l]++;let n=await e();t(n)}catch(e){n(e)}finally{r._(this,l)[l]--,r._(this,i)[i]()}};return r._(this,a)[a].push({promiseFn:o,task:u}),r._(this,i)[i](),o}bump(e){let t=r._(this,a)[a].findIndex(t=>t.promiseFn===e);if(t>-1){let e=r._(this,a)[a].splice(t,1)[0];r._(this,a)[a].unshift(e),r._(this,i)[i](!0)}}constructor(e=5){Object.defineProperty(this,i,{value:s}),Object.defineProperty(this,u,{writable:!0,value:void 0}),Object.defineProperty(this,l,{writable:!0,value:void 0}),Object.defineProperty(this,a,{writable:!0,value:void 0}),r._(this,u)[u]=e,r._(this,l)[l]=0,r._(this,a)[a]=[]}}function s(e){if(void 0===e&&(e=!1),(r._(this,l)[l]0){var t;null==(t=r._(this,a)[a].shift())||t.task()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4123:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{RedirectBoundary:function(){return s},RedirectErrorBoundary:function(){return c}});let r=n(53099),o=n(57437),u=r._(n(2265)),l=n(35475),a=n(88968);function i(e){let{redirect:t,reset:n,redirectType:r}=e,o=(0,l.useRouter)();return(0,u.useEffect)(()=>{u.default.startTransition(()=>{r===a.RedirectType.push?o.push(t,{}):o.replace(t,{}),n()})},[t,r,n,o]),null}class c extends u.default.Component{static getDerivedStateFromError(e){if((0,a.isRedirectError)(e))return{redirect:(0,a.getURLFromRedirectError)(e),redirectType:(0,a.getRedirectTypeFromError)(e)};throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(i,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}constructor(e){super(e),this.state={redirect:null,redirectType:null}}}function s(e){let{children:t}=e,n=(0,l.useRouter)();return(0,o.jsx)(c,{router:n,children:t})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5001:function(e,t){"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return n}}),(r=n||(n={}))[r.SeeOther=303]="SeeOther",r[r.TemporaryRedirect=307]="TemporaryRedirect",r[r.PermanentRedirect=308]="PermanentRedirect",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},88968:function(e,t,n){"use strict";var r,o;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{RedirectType:function(){return r},getRedirectError:function(){return c},getRedirectStatusCodeFromError:function(){return y},getRedirectTypeFromError:function(){return h},getURLFromRedirectError:function(){return p},isRedirectError:function(){return d},permanentRedirect:function(){return f},redirect:function(){return s}});let u=n(20544),l=n(90295),a=n(5001),i="NEXT_REDIRECT";function c(e,t,n){void 0===n&&(n=a.RedirectStatusCode.TemporaryRedirect);let r=Error(i);r.digest=i+";"+t+";"+e+";"+n+";";let o=u.requestAsyncStorage.getStore();return o&&(r.mutableCookies=o.mutableCookies),r}function s(e,t){void 0===t&&(t="replace");let n=l.actionAsyncStorage.getStore();throw c(e,t,(null==n?void 0:n.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.TemporaryRedirect)}function f(e,t){void 0===t&&(t="replace");let n=l.actionAsyncStorage.getStore();throw c(e,t,(null==n?void 0:n.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.PermanentRedirect)}function d(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,n,r,o]=e.digest.split(";",4),u=Number(o);return t===i&&("replace"===n||"push"===n)&&"string"==typeof r&&!isNaN(u)&&u in a.RedirectStatusCode}function p(e){return d(e)?e.digest.split(";",3)[2]:null}function h(e){if(!d(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function y(e){if(!d(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(o=r||(r={})).push="push",o.replace="replace",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},36423:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let r=n(53099),o=n(57437),u=r._(n(2265)),l=n(61956);function a(){let e=(0,u.useContext)(l.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},20544:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getExpectedRequestStore:function(){return o},requestAsyncStorage:function(){return r.requestAsyncStorage}});let r=n(25575);function o(e){let t=r.requestAsyncStorage.getStore();if(t)return t;throw Error("`"+e+"` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},22356:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyFlightData",{enumerable:!0,get:function(){return u}});let r=n(27420),o=n(92576);function u(e,t,n,u){let[l,a,i]=n.slice(-3);if(null===a)return!1;if(3===n.length){let n=a[2],o=a[3];t.loading=o,t.rsc=n,t.prefetchRsc=null,(0,r.fillLazyItemsTillLeafWithHead)(t,e,l,a,i,u)}else t.rsc=e.rsc,t.prefetchRsc=e.prefetchRsc,t.parallelRoutes=new Map(e.parallelRoutes),t.loading=e.loading,(0,o.fillCacheWithNewSubTreeData)(t,e,n,u);return!0}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},81935:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyRouterStatePatchToTree",{enumerable:!0,get:function(){return function e(t,n,r,a){let i;let[c,s,f,d,p]=n;if(1===t.length){let e=l(n,r,t);return(0,u.addRefreshMarkerToActiveParallelSegments)(e,a),e}let[h,y]=t;if(!(0,o.matchSegment)(h,c))return null;if(2===t.length)i=l(s[y],r,t);else if(null===(i=e(t.slice(2),s[y],r,a)))return null;let _=[t[0],{...s,[y]:i},f,d];return p&&(_[4]=!0),(0,u.addRefreshMarkerToActiveParallelSegments)(_,a),_}}});let r=n(84541),o=n(76015),u=n(50232);function l(e,t,n){let[u,a]=e,[i,c]=t;if(i===r.DEFAULT_SEGMENT_KEY&&u!==r.DEFAULT_SEGMENT_KEY)return e;if((0,o.matchSegment)(u,i)){let t={};for(let e in a)void 0!==c[e]?t[e]=l(a[e],c[e],n):t[e]=a[e];for(let e in c)t[e]||(t[e]=c[e]);let r=[u,t];return e[2]&&(r[2]=e[2]),e[3]&&(r[3]=e[3]),e[4]&&(r[4]=e[4]),r}return t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},65556:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"clearCacheNodeDataForSegmentPath",{enumerable:!0,get:function(){return function e(t,n,o){let u=o.length<=2,[l,a]=o,i=(0,r.createRouterCacheKey)(a),c=n.parallelRoutes.get(l),s=t.parallelRoutes.get(l);s&&s!==c||(s=new Map(c),t.parallelRoutes.set(l,s));let f=null==c?void 0:c.get(i),d=s.get(i);if(u){d&&d.lazyData&&d!==f||s.set(i,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}if(!d||!f){d||s.set(i,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}return d===f&&(d={lazyData:d.lazyData,rsc:d.rsc,prefetchRsc:d.prefetchRsc,head:d.head,prefetchHead:d.prefetchHead,parallelRoutes:new Map(d.parallelRoutes),lazyDataResolved:d.lazyDataResolved,loading:d.loading},s.set(i,d)),e(d,f,o.slice(2))}}});let r=n(78505);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5410:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{computeChangedPath:function(){return s},extractPathFromFlightRouterState:function(){return c}});let r=n(91182),o=n(84541),u=n(76015),l=e=>"/"===e[0]?e.slice(1):e,a=e=>"string"==typeof e?"children"===e?"":e:e[1];function i(e){return e.reduce((e,t)=>""===(t=l(t))||(0,o.isGroupSegment)(t)?e:e+"/"+t,"")||"/"}function c(e){var t;let n=Array.isArray(e[0])?e[0][1]:e[0];if(n===o.DEFAULT_SEGMENT_KEY||r.INTERCEPTION_ROUTE_MARKERS.some(e=>n.startsWith(e)))return;if(n.startsWith(o.PAGE_SEGMENT_KEY))return"";let u=[a(n)],l=null!=(t=e[1])?t:{},s=l.children?c(l.children):void 0;if(void 0!==s)u.push(s);else for(let[e,t]of Object.entries(l)){if("children"===e)continue;let n=c(t);void 0!==n&&u.push(n)}return i(u)}function s(e,t){let n=function e(t,n){let[o,l]=t,[i,s]=n,f=a(o),d=a(i);if(r.INTERCEPTION_ROUTE_MARKERS.some(e=>f.startsWith(e)||d.startsWith(e)))return"";if(!(0,u.matchSegment)(o,i)){var p;return null!=(p=c(n))?p:""}for(let t in l)if(s[t]){let n=e(l[t],s[t]);if(null!==n)return a(i)+"/"+n}return null}(e,t);return null==n||"/"===n?n:i(n.split("/"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},33456:function(e,t){"use strict";function n(e,t){return void 0===t&&(t=!0),e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createHrefFromUrl",{enumerable:!0,get:function(){return n}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},82952:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createInitialRouterState",{enumerable:!0,get:function(){return c}});let r=n(33456),o=n(27420),u=n(5410),l=n(60305),a=n(24673),i=n(50232);function c(e){var t;let{buildId:n,initialTree:c,initialSeedData:s,urlParts:f,initialParallelRoutes:d,location:p,initialHead:h,couldBeIntercepted:y}=e,_=f.join("/"),v=!p,b={lazyData:null,rsc:s[2],prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:v?new Map:d,lazyDataResolved:!1,loading:s[3]},g=p?(0,r.createHrefFromUrl)(p):_;(0,i.addRefreshMarkerToActiveParallelSegments)(c,g);let m=new Map;(null===d||0===d.size)&&(0,o.fillLazyItemsTillLeafWithHead)(b,void 0,c,s,h);let R={buildId:n,tree:c,cache:b,prefetchCache:m,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:g,nextUrl:null!=(t=(0,u.extractPathFromFlightRouterState)(c)||(null==p?void 0:p.pathname))?t:null};if(p){let e=new URL(""+p.pathname+p.search,p.origin),t=[["",c,null,null]];(0,l.createPrefetchCacheEntryForInitialLoad)({url:e,kind:a.PrefetchKind.AUTO,data:[t,void 0,!1,y],tree:R.tree,prefetchCache:R.prefetchCache,nextUrl:R.nextUrl})}return R}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},78505:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let r=n(84541);function o(e,t){return(void 0===t&&(t=!1),Array.isArray(e))?e[0]+"|"+e[1]+"|"+e[2]:t&&e.startsWith(r.PAGE_SEGMENT_KEY)?r.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},44848:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fetchServerResponse",{enumerable:!0,get:function(){return f}});let r=n(6866),o=n(12846),u=n(83079),l=n(24673),a=n(37207),i=n(91311),{createFromFetch:c}=n(6671);function s(e){return[(0,o.urlToUrlWithoutFlightMarker)(e).toString(),void 0,!1,!1]}async function f(e,t,n,f,d){let p={[r.RSC_HEADER]:"1",[r.NEXT_ROUTER_STATE_TREE]:(0,i.prepareFlightRouterStateForRequest)(t)};d===l.PrefetchKind.AUTO&&(p[r.NEXT_ROUTER_PREFETCH_HEADER]="1"),n&&(p[r.NEXT_URL]=n);let h=(0,a.hexHash)([p[r.NEXT_ROUTER_PREFETCH_HEADER]||"0",p[r.NEXT_ROUTER_STATE_TREE],p[r.NEXT_URL]].join(","));try{var y;let t=new URL(e);t.searchParams.set(r.NEXT_RSC_UNION_QUERY,h);let n=await fetch(t,{credentials:"same-origin",headers:p}),l=(0,o.urlToUrlWithoutFlightMarker)(n.url),a=n.redirected?l:void 0,i=n.headers.get("content-type")||"",d=!!n.headers.get(r.NEXT_DID_POSTPONE_HEADER),_=!!(null==(y=n.headers.get("vary"))?void 0:y.includes(r.NEXT_URL));if(i!==r.RSC_CONTENT_TYPE_HEADER||!n.ok)return e.hash&&(l.hash=e.hash),s(l.toString());let[v,b]=await c(Promise.resolve(n),{callServer:u.callServer});if(f!==v)return s(n.url);return[b,a,d,_]}catch(t){return console.error("Failed to fetch RSC payload for "+e+". Falling back to browser navigation.",t),[e.toString(),void 0,!1,!1]}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},92576:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillCacheWithNewSubTreeData",{enumerable:!0,get:function(){return function e(t,n,l,a){let i=l.length<=5,[c,s]=l,f=(0,u.createRouterCacheKey)(s),d=n.parallelRoutes.get(c);if(!d)return;let p=t.parallelRoutes.get(c);p&&p!==d||(p=new Map(d),t.parallelRoutes.set(c,p));let h=d.get(f),y=p.get(f);if(i){if(!y||!y.lazyData||y===h){let e=l[3];y={lazyData:null,rsc:e[2],prefetchRsc:null,head:null,prefetchHead:null,loading:e[3],parallelRoutes:h?new Map(h.parallelRoutes):new Map,lazyDataResolved:!1},h&&(0,r.invalidateCacheByRouterState)(y,h,l[2]),(0,o.fillLazyItemsTillLeafWithHead)(y,h,l[2],e,l[4],a),p.set(f,y)}return}y&&h&&(y===h&&(y={lazyData:y.lazyData,rsc:y.rsc,prefetchRsc:y.prefetchRsc,head:y.head,prefetchHead:y.prefetchHead,parallelRoutes:new Map(y.parallelRoutes),lazyDataResolved:!1,loading:y.loading},p.set(f,y)),e(y,h,l.slice(2),a))}}});let r=n(94377),o=n(27420),u=n(78505);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},27420:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillLazyItemsTillLeafWithHead",{enumerable:!0,get:function(){return function e(t,n,u,l,a,i){if(0===Object.keys(u[1]).length){t.head=a;return}for(let c in u[1]){let s;let f=u[1][c],d=f[0],p=(0,r.createRouterCacheKey)(d),h=null!==l&&void 0!==l[1][c]?l[1][c]:null;if(n){let r=n.parallelRoutes.get(c);if(r){let n;let u=(null==i?void 0:i.kind)==="auto"&&i.status===o.PrefetchCacheEntryStatus.reusable,l=new Map(r),s=l.get(p);n=null!==h?{lazyData:null,rsc:h[2],prefetchRsc:null,head:null,prefetchHead:null,loading:h[3],parallelRoutes:new Map(null==s?void 0:s.parallelRoutes),lazyDataResolved:!1}:u&&s?{lazyData:s.lazyData,rsc:s.rsc,prefetchRsc:s.prefetchRsc,head:s.head,prefetchHead:s.prefetchHead,parallelRoutes:new Map(s.parallelRoutes),lazyDataResolved:s.lazyDataResolved,loading:s.loading}:{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map(null==s?void 0:s.parallelRoutes),lazyDataResolved:!1,loading:null},l.set(p,n),e(n,s,f,h||null,a,i),t.parallelRoutes.set(c,l);continue}}if(null!==h){let e=h[2],t=h[3];s={lazyData:null,rsc:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:t}}else s={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};let y=t.parallelRoutes.get(c);y?y.set(p,s):t.parallelRoutes.set(c,new Map([[p,s]])),e(s,void 0,f,h,a,i)}}}});let r=n(78505),o=n(24673);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},44510:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleMutable",{enumerable:!0,get:function(){return u}});let r=n(5410);function o(e){return void 0!==e}function u(e,t){var n,u,l;let a=null==(u=t.shouldScroll)||u,i=e.nextUrl;if(o(t.patchedTree)){let n=(0,r.computeChangedPath)(e.tree,t.patchedTree);n?i=n:i||(i=e.canonicalUrl)}return{buildId:e.buildId,canonicalUrl:o(t.canonicalUrl)?t.canonicalUrl===e.canonicalUrl?e.canonicalUrl:t.canonicalUrl:e.canonicalUrl,pushRef:{pendingPush:o(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:o(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:o(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!a&&(!!o(null==t?void 0:t.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:!!t.hashFragment&&e.canonicalUrl.split("#",1)[0]===(null==(n=t.canonicalUrl)?void 0:n.split("#",1)[0]),hashFragment:a?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:a?null!=(l=null==t?void 0:t.scrollableSegments)?l:e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,prefetchCache:t.prefetchCache?t.prefetchCache:e.prefetchCache,tree:o(t.patchedTree)?t.patchedTree:e.tree,nextUrl:i}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77831:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSegmentMismatch",{enumerable:!0,get:function(){return o}});let r=n(95967);function o(e,t,n){return(0,r.handleExternalUrl)(e,{},e.canonicalUrl,!0)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77058:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheBelowFlightSegmentPath",{enumerable:!0,get:function(){return function e(t,n,o){let u=o.length<=2,[l,a]=o,i=(0,r.createRouterCacheKey)(a),c=n.parallelRoutes.get(l);if(!c)return;let s=t.parallelRoutes.get(l);if(s&&s!==c||(s=new Map(c),t.parallelRoutes.set(l,s)),u){s.delete(i);return}let f=c.get(i),d=s.get(i);d&&f&&(d===f&&(d={lazyData:d.lazyData,rsc:d.rsc,prefetchRsc:d.prefetchRsc,head:d.head,prefetchHead:d.prefetchHead,parallelRoutes:new Map(d.parallelRoutes),lazyDataResolved:d.lazyDataResolved},s.set(i,d)),e(d,f,o.slice(2)))}}});let r=n(78505);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},94377:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheByRouterState",{enumerable:!0,get:function(){return o}});let r=n(78505);function o(e,t,n){for(let o in n[1]){let u=n[1][o][0],l=(0,r.createRouterCacheKey)(u),a=t.parallelRoutes.get(o);if(a){let t=new Map(a);t.delete(l),e.parallelRoutes.set(o,t)}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},63237:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,n){let r=t[0],o=n[0];if(Array.isArray(r)&&Array.isArray(o)){if(r[0]!==o[0]||r[2]!==o[2])return!0}else if(r!==o)return!0;if(t[4])return!n[4];if(n[4])return!0;let u=Object.values(t[1])[0],l=Object.values(n[1])[0];return!u||!l||e(u,l)}}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},56118:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{abortTask:function(){return c},listenForDynamicRequest:function(){return a},updateCacheNodeOnNavigation:function(){return function e(t,n,a,c,s){let f=n[1],d=a[1],p=c[1],h=t.parallelRoutes,y=new Map(h),_={},v=null;for(let t in d){let n;let a=d[t],c=f[t],b=h.get(t),g=p[t],m=a[0],R=(0,u.createRouterCacheKey)(m),P=void 0!==c?c[0]:void 0,j=void 0!==b?b.get(R):void 0;if(null!==(n=m===r.PAGE_SEGMENT_KEY?l(a,void 0!==g?g:null,s):m===r.DEFAULT_SEGMENT_KEY?void 0!==c?{route:c,node:null,children:null}:l(a,void 0!==g?g:null,s):void 0!==P&&(0,o.matchSegment)(m,P)&&void 0!==j&&void 0!==c?null!=g?e(j,c,a,g,s):function(e){let t=i(e,null,null);return{route:e,node:t,children:null}}(a):l(a,void 0!==g?g:null,s))){null===v&&(v=new Map),v.set(t,n);let e=n.node;if(null!==e){let n=new Map(b);n.set(R,e),y.set(t,n)}_[t]=n.route}else _[t]=a}if(null===v)return null;let b={lazyData:null,rsc:t.rsc,prefetchRsc:t.prefetchRsc,head:t.head,prefetchHead:t.prefetchHead,loading:t.loading,parallelRoutes:y,lazyDataResolved:!1};return{route:function(e,t){let n=[e[0],t];return 2 in e&&(n[2]=e[2]),3 in e&&(n[3]=e[3]),4 in e&&(n[4]=e[4]),n}(a,_),node:b,children:v}}},updateCacheNodeOnPopstateRestoration:function(){return function e(t,n){let r=n[1],o=t.parallelRoutes,l=new Map(o);for(let t in r){let n=r[t],a=n[0],i=(0,u.createRouterCacheKey)(a),c=o.get(t);if(void 0!==c){let r=c.get(i);if(void 0!==r){let o=e(r,n),u=new Map(c);u.set(i,o),l.set(t,u)}}}let a=t.rsc,i=d(a)&&"pending"===a.status;return{lazyData:null,rsc:a,head:t.head,prefetchHead:i?t.prefetchHead:null,prefetchRsc:i?t.prefetchRsc:null,loading:i?t.loading:null,parallelRoutes:l,lazyDataResolved:!1}}}});let r=n(84541),o=n(76015),u=n(78505);function l(e,t,n){let r=i(e,t,n);return{route:e,node:r,children:null}}function a(e,t){t.then(t=>{for(let n of t[0]){let t=n.slice(0,-3),r=n[n.length-3],l=n[n.length-2],a=n[n.length-1];"string"!=typeof t&&function(e,t,n,r,l){let a=e;for(let e=0;e{c(e,t)})}function i(e,t,n){let r=e[1],o=null!==t?t[1]:null,l=new Map;for(let e in r){let t=r[e],a=null!==o?o[e]:null,c=t[0],s=(0,u.createRouterCacheKey)(c),f=i(t,void 0===a?null:a,n),d=new Map;d.set(s,f),l.set(e,d)}let a=0===l.size,c=null!==t?t[2]:null,s=null!==t?t[3]:null;return{lazyData:null,parallelRoutes:l,prefetchRsc:void 0!==c?c:null,prefetchHead:a?n:null,loading:void 0!==s?s:null,rsc:p(),head:a?p():null,lazyDataResolved:!1}}function c(e,t){let n=e.node;if(null===n)return;let r=e.children;if(null===r)s(e.route,n,t);else for(let e of r.values())c(e,t);e.node=null}function s(e,t,n){let r=e[1],o=t.parallelRoutes;for(let e in r){let t=r[e],l=o.get(e);if(void 0===l)continue;let a=t[0],i=(0,u.createRouterCacheKey)(a),c=l.get(i);void 0!==c&&s(t,c,n)}let l=t.rsc;d(l)&&(null===n?l.resolve(null):l.reject(n));let a=t.head;d(a)&&a.resolve(null)}let f=Symbol();function d(e){return e&&e.tag===f}function p(){let e,t;let n=new Promise((n,r)=>{e=n,t=r});return n.status="pending",n.resolve=t=>{"pending"===n.status&&(n.status="fulfilled",n.value=t,e(t))},n.reject=e=>{"pending"===n.status&&(n.status="rejected",n.reason=e,t(e))},n.tag=f,n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},60305:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{createPrefetchCacheEntryForInitialLoad:function(){return c},getOrCreatePrefetchCacheEntry:function(){return i},prunePrefetchCache:function(){return f}});let r=n(33456),o=n(44848),u=n(24673),l=n(24819);function a(e,t){let n=(0,r.createHrefFromUrl)(e,!1);return t?t+"%"+n:n}function i(e){let t,{url:n,nextUrl:r,tree:o,buildId:l,prefetchCache:i,kind:c}=e,f=a(n,r),d=i.get(f);if(d)t=d;else{let e=a(n),r=i.get(e);r&&(t=r)}return t?(t.status=h(t),t.kind!==u.PrefetchKind.FULL&&c===u.PrefetchKind.FULL)?s({tree:o,url:n,buildId:l,nextUrl:r,prefetchCache:i,kind:null!=c?c:u.PrefetchKind.TEMPORARY}):(c&&t.kind===u.PrefetchKind.TEMPORARY&&(t.kind=c),t):s({tree:o,url:n,buildId:l,nextUrl:r,prefetchCache:i,kind:c||u.PrefetchKind.TEMPORARY})}function c(e){let{nextUrl:t,tree:n,prefetchCache:r,url:o,kind:l,data:i}=e,[,,,c]=i,s=c?a(o,t):a(o),f={treeAtTimeOfPrefetch:n,data:Promise.resolve(i),kind:l,prefetchTime:Date.now(),lastUsedTime:Date.now(),key:s,status:u.PrefetchCacheEntryStatus.fresh};return r.set(s,f),f}function s(e){let{url:t,kind:n,tree:r,nextUrl:i,buildId:c,prefetchCache:s}=e,f=a(t),d=l.prefetchQueue.enqueue(()=>(0,o.fetchServerResponse)(t,r,i,c,n).then(e=>{let[,,,n]=e;return n&&function(e){let{url:t,nextUrl:n,prefetchCache:r}=e,o=a(t),u=r.get(o);if(!u)return;let l=a(t,n);r.set(l,u),r.delete(o)}({url:t,nextUrl:i,prefetchCache:s}),e})),p={treeAtTimeOfPrefetch:r,data:d,kind:n,prefetchTime:Date.now(),lastUsedTime:null,key:f,status:u.PrefetchCacheEntryStatus.fresh};return s.set(f,p),p}function f(e){for(let[t,n]of e)h(n)===u.PrefetchCacheEntryStatus.expired&&e.delete(t)}let d=1e3*Number("30"),p=1e3*Number("300");function h(e){let{kind:t,prefetchTime:n,lastUsedTime:r}=e;return Date.now()<(null!=r?r:n)+d?r?u.PrefetchCacheEntryStatus.reusable:u.PrefetchCacheEntryStatus.fresh:"auto"===t&&Date.now(){let[n,f]=t,h=!1;if(E.lastUsedTime||(E.lastUsedTime=Date.now(),h=!0),"string"==typeof n)return _(e,R,n,O);if(document.getElementById("__next-page-redirect"))return _(e,R,j,O);let b=e.tree,g=e.cache,w=[];for(let t of n){let n=t.slice(0,-4),r=t.slice(-3)[0],c=["",...n],f=(0,u.applyRouterStatePatchToTree)(c,b,r,j);if(null===f&&(f=(0,u.applyRouterStatePatchToTree)(c,S,r,j)),null!==f){if((0,a.isNavigatingToNewRootLayout)(b,f))return _(e,R,j,O);let u=(0,d.createEmptyCacheNode)(),m=!1;for(let e of(E.status!==i.PrefetchCacheEntryStatus.stale||h?m=(0,s.applyFlightData)(g,u,t,E):(m=function(e,t,n,r){let o=!1;for(let u of(e.rsc=t.rsc,e.prefetchRsc=t.prefetchRsc,e.loading=t.loading,e.parallelRoutes=new Map(t.parallelRoutes),v(r).map(e=>[...n,...e])))(0,y.clearCacheNodeDataForSegmentPath)(e,t,u),o=!0;return o}(u,g,n,r),E.lastUsedTime=Date.now()),(0,l.shouldHardNavigate)(c,b)?(u.rsc=g.rsc,u.prefetchRsc=g.prefetchRsc,(0,o.invalidateCacheBelowFlightSegmentPath)(u,g,n),R.cache=u):m&&(R.cache=u,g=u),b=f,v(r))){let t=[...n,...e];t[t.length-1]!==p.DEFAULT_SEGMENT_KEY&&w.push(t)}}}return R.patchedTree=b,R.canonicalUrl=f?(0,r.createHrefFromUrl)(f):j,R.pendingPush=O,R.scrollableSegments=w,R.hashFragment=P,R.shouldScroll=m,(0,c.handleMutable)(e,R)},()=>e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24819:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{prefetchQueue:function(){return l},prefetchReducer:function(){return a}});let r=n(6866),o=n(29744),u=n(60305),l=new o.PromiseQueue(5);function a(e,t){(0,u.prunePrefetchCache)(e.prefetchCache);let{url:n}=t;return n.searchParams.delete(r.NEXT_RSC_UNION_QUERY),(0,u.getOrCreatePrefetchCacheEntry)({url:n,nextUrl:e.nextUrl,prefetchCache:e.prefetchCache,kind:t.kind,tree:e.tree,buildId:e.buildId}),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},99601:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"refreshReducer",{enumerable:!0,get:function(){return h}});let r=n(44848),o=n(33456),u=n(81935),l=n(63237),a=n(95967),i=n(44510),c=n(27420),s=n(12846),f=n(77831),d=n(28077),p=n(50232);function h(e,t){let{origin:n}=t,h={},y=e.canonicalUrl,_=e.tree;h.preserveCustomHistoryState=!1;let v=(0,s.createEmptyCacheNode)(),b=(0,d.hasInterceptionRouteInCurrentTree)(e.tree);return v.lazyData=(0,r.fetchServerResponse)(new URL(y,n),[_[0],_[1],_[2],"refetch"],b?e.nextUrl:null,e.buildId),v.lazyData.then(async n=>{let[r,s]=n;if("string"==typeof r)return(0,a.handleExternalUrl)(e,h,r,e.pushRef.pendingPush);for(let n of(v.lazyData=null,r)){if(3!==n.length)return console.log("REFRESH FAILED"),e;let[r]=n,i=(0,u.applyRouterStatePatchToTree)([""],_,r,e.canonicalUrl);if(null===i)return(0,f.handleSegmentMismatch)(e,t,r);if((0,l.isNavigatingToNewRootLayout)(_,i))return(0,a.handleExternalUrl)(e,h,y,e.pushRef.pendingPush);let d=s?(0,o.createHrefFromUrl)(s):void 0;s&&(h.canonicalUrl=d);let[g,m]=n.slice(-2);if(null!==g){let e=g[2];v.rsc=e,v.prefetchRsc=null,(0,c.fillLazyItemsTillLeafWithHead)(v,void 0,r,g,m),h.prefetchCache=new Map}await (0,p.refreshInactiveParallelSegments)({state:e,updatedTree:i,updatedCache:v,includeNextUrl:b,canonicalUrl:h.canonicalUrl||e.canonicalUrl}),h.cache=v,h.patchedTree=i,h.canonicalUrl=y,_=i}return(0,i.handleMutable)(e,h)},()=>e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77784:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"restoreReducer",{enumerable:!0,get:function(){return u}});let r=n(33456),o=n(5410);function u(e,t){var n;let{url:u,tree:l}=t,a=(0,r.createHrefFromUrl)(u),i=l||e.tree,c=e.cache;return{buildId:e.buildId,canonicalUrl:a,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:c,prefetchCache:e.prefetchCache,tree:i,nextUrl:null!=(n=(0,o.extractPathFromFlightRouterState)(i))?n:u.pathname}}n(56118),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},13722:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverActionReducer",{enumerable:!0,get:function(){return m}});let r=n(83079),o=n(6866),u=n(1634),l=n(33456),a=n(95967),i=n(81935),c=n(63237),s=n(44510),f=n(27420),d=n(12846),p=n(28077),h=n(77831),y=n(50232),_=n(91311),{createFromFetch:v,encodeReply:b}=n(6671);async function g(e,t,n){let l,{actionId:a,actionArgs:i}=n,c=await b(i),s=await fetch("",{method:"POST",headers:{Accept:o.RSC_CONTENT_TYPE_HEADER,[o.ACTION]:a,[o.NEXT_ROUTER_STATE_TREE]:(0,_.prepareFlightRouterStateForRequest)(e.tree),...t?{[o.NEXT_URL]:t}:{}},body:c}),f=s.headers.get("x-action-redirect");try{let e=JSON.parse(s.headers.get("x-action-revalidated")||"[[],0,0]");l={paths:e[0]||[],tag:!!e[1],cookie:e[2]}}catch(e){l={paths:[],tag:!1,cookie:!1}}let d=f?new URL((0,u.addBasePath)(f),new URL(e.canonicalUrl,window.location.href)):void 0;if(s.headers.get("content-type")===o.RSC_CONTENT_TYPE_HEADER){let e=await v(Promise.resolve(s),{callServer:r.callServer});if(f){let[,t]=null!=e?e:[];return{actionFlightData:t,redirectLocation:d,revalidatedParts:l}}let[t,[,n]]=null!=e?e:[];return{actionResult:t,actionFlightData:n,redirectLocation:d,revalidatedParts:l}}return{redirectLocation:d,revalidatedParts:l}}function m(e,t){let{resolve:n,reject:r}=t,o={},u=e.canonicalUrl,_=e.tree;o.preserveCustomHistoryState=!1;let v=e.nextUrl&&(0,p.hasInterceptionRouteInCurrentTree)(e.tree)?e.nextUrl:null;return o.inFlightServerAction=g(e,v,t),o.inFlightServerAction.then(async r=>{let{actionResult:p,actionFlightData:b,redirectLocation:g}=r;if(g&&(e.pushRef.pendingPush=!0,o.pendingPush=!0),!b)return(n(p),g)?(0,a.handleExternalUrl)(e,o,g.href,e.pushRef.pendingPush):e;if("string"==typeof b)return(0,a.handleExternalUrl)(e,o,b,e.pushRef.pendingPush);if(o.inFlightServerAction=null,g){let e=(0,l.createHrefFromUrl)(g,!1);o.canonicalUrl=e}for(let n of b){if(3!==n.length)return console.log("SERVER ACTION APPLY FAILED"),e;let[r]=n,s=(0,i.applyRouterStatePatchToTree)([""],_,r,g?(0,l.createHrefFromUrl)(g):e.canonicalUrl);if(null===s)return(0,h.handleSegmentMismatch)(e,t,r);if((0,c.isNavigatingToNewRootLayout)(_,s))return(0,a.handleExternalUrl)(e,o,u,e.pushRef.pendingPush);let[p,b]=n.slice(-2),m=null!==p?p[2]:null;if(null!==m){let t=(0,d.createEmptyCacheNode)();t.rsc=m,t.prefetchRsc=null,(0,f.fillLazyItemsTillLeafWithHead)(t,void 0,r,p,b),await (0,y.refreshInactiveParallelSegments)({state:e,updatedTree:s,updatedCache:t,includeNextUrl:!!v,canonicalUrl:o.canonicalUrl||e.canonicalUrl}),o.cache=t,o.prefetchCache=new Map}o.patchedTree=s,_=s}return n(p),(0,s.handleMutable)(e,o)},t=>(r(t),e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},68448:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverPatchReducer",{enumerable:!0,get:function(){return f}});let r=n(33456),o=n(81935),u=n(63237),l=n(95967),a=n(22356),i=n(44510),c=n(12846),s=n(77831);function f(e,t){let{serverResponse:n}=t,[f,d]=n,p={};if(p.preserveCustomHistoryState=!1,"string"==typeof f)return(0,l.handleExternalUrl)(e,p,f,e.pushRef.pendingPush);let h=e.tree,y=e.cache;for(let n of f){let i=n.slice(0,-4),[f]=n.slice(-3,-2),_=(0,o.applyRouterStatePatchToTree)(["",...i],h,f,e.canonicalUrl);if(null===_)return(0,s.handleSegmentMismatch)(e,t,f);if((0,u.isNavigatingToNewRootLayout)(h,_))return(0,l.handleExternalUrl)(e,p,e.canonicalUrl,e.pushRef.pendingPush);let v=d?(0,r.createHrefFromUrl)(d):void 0;v&&(p.canonicalUrl=v);let b=(0,c.createEmptyCacheNode)();(0,a.applyFlightData)(y,b,n),p.patchedTree=_,p.cache=b,y=b,h=_}return(0,i.handleMutable)(e,p)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},50232:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{addRefreshMarkerToActiveParallelSegments:function(){return function e(t,n){let[r,o,,l]=t;for(let a in r.includes(u.PAGE_SEGMENT_KEY)&&"refresh"!==l&&(t[2]=n,t[3]="refresh"),o)e(o[a],n)}},refreshInactiveParallelSegments:function(){return l}});let r=n(22356),o=n(44848),u=n(84541);async function l(e){let t=new Set;await a({...e,rootTree:e.updatedTree,fetchedSegments:t})}async function a(e){let{state:t,updatedTree:n,updatedCache:u,includeNextUrl:l,fetchedSegments:i,rootTree:c=n,canonicalUrl:s}=e,[,f,d,p]=n,h=[];if(d&&d!==s&&"refresh"===p&&!i.has(d)){i.add(d);let e=(0,o.fetchServerResponse)(new URL(d,location.origin),[c[0],c[1],c[2],"refetch"],l?t.nextUrl:null,t.buildId).then(e=>{let t=e[0];if("string"!=typeof t)for(let e of t)(0,r.applyFlightData)(u,u,e)});h.push(e)}for(let e in f){let n=a({state:t,updatedTree:f[e],updatedCache:u,includeNextUrl:l,fetchedSegments:i,rootTree:c,canonicalUrl:s});h.push(n)}await Promise.all(h)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24673:function(e,t){"use strict";var n,r,o,u;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ACTION_FAST_REFRESH:function(){return f},ACTION_NAVIGATE:function(){return a},ACTION_PREFETCH:function(){return s},ACTION_REFRESH:function(){return l},ACTION_RESTORE:function(){return i},ACTION_SERVER_ACTION:function(){return d},ACTION_SERVER_PATCH:function(){return c},PrefetchCacheEntryStatus:function(){return r},PrefetchKind:function(){return n},isThenable:function(){return p}});let l="refresh",a="navigate",i="restore",c="server-patch",s="prefetch",f="fast-refresh",d="server-action";function p(e){return e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}(o=n||(n={})).AUTO="auto",o.FULL="full",o.TEMPORARY="temporary",(u=r||(r={})).fresh="fresh",u.reusable="reusable",u.expired="expired",u.stale="stale",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},91450:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reducer",{enumerable:!0,get:function(){return f}});let r=n(24673),o=n(95967),u=n(68448),l=n(77784),a=n(99601),i=n(24819),c=n(44529),s=n(13722),f="undefined"==typeof window?function(e,t){return e}:function(e,t){switch(t.type){case r.ACTION_NAVIGATE:return(0,o.navigateReducer)(e,t);case r.ACTION_SERVER_PATCH:return(0,u.serverPatchReducer)(e,t);case r.ACTION_RESTORE:return(0,l.restoreReducer)(e,t);case r.ACTION_REFRESH:return(0,a.refreshReducer)(e,t);case r.ACTION_FAST_REFRESH:return(0,c.fastRefreshReducer)(e,t);case r.ACTION_PREFETCH:return(0,i.prefetchReducer)(e,t);case r.ACTION_SERVER_ACTION:return(0,s.serverActionReducer)(e,t);default:throw Error("Unknown action")}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},53728:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"shouldHardNavigate",{enumerable:!0,get:function(){return function e(t,n){let[o,u]=n,[l,a]=t;return(0,r.matchSegment)(l,o)?!(t.length<=2)&&e(t.slice(2),u[a]):!!Array.isArray(l)}}});let r=n(76015);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},54535:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{createDynamicallyTrackedSearchParams:function(){return a},createUntrackedSearchParams:function(){return l}});let r=n(51845),o=n(86999),u=n(30650);function l(e){let t=r.staticGenerationAsyncStorage.getStore();return t&&t.forceStatic?{}:e}function a(e){let t=r.staticGenerationAsyncStorage.getStore();return t?t.forceStatic?{}:t.isStaticGeneration||t.dynamicShouldError?new Proxy({},{get:(e,n,r)=>("string"==typeof n&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+n),u.ReflectAdapter.get(e,n,r)),has:(e,n)=>("string"==typeof n&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+n),Reflect.has(e,n)),ownKeys:e=>((0,o.trackDynamicDataAccessed)(t,"searchParams"),Reflect.ownKeys(e))}):e:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},51845:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"staticGenerationAsyncStorage",{enumerable:!0,get:function(){return r.staticGenerationAsyncStorage}});let r=n(20030);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},36864:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{StaticGenBailoutError:function(){return r},isStaticGenBailoutError:function(){return o}});let n="NEXT_STATIC_GEN_BAILOUT";class r extends Error{constructor(...e){super(...e),this.code=n}}function o(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},38137:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},47744:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{useReducerWithReduxDevtools:function(){return i},useUnwrapState:function(){return a}});let r=n(53099)._(n(2265)),o=n(24673),u=n(2103);function l(e){if(e instanceof Map){let t={};for(let[n,r]of e.entries()){if("function"==typeof r){t[n]="fn()";continue}if("object"==typeof r&&null!==r){if(r.$$typeof){t[n]=r.$$typeof.toString();continue}if(r._bundlerConfig){t[n]="FlightData";continue}}t[n]=l(r)}return t}if("object"==typeof e&&null!==e){let t={};for(let n in e){let r=e[n];if("function"==typeof r){t[n]="fn()";continue}if("object"==typeof r&&null!==r){if(r.$$typeof){t[n]=r.$$typeof.toString();continue}if(r.hasOwnProperty("_bundlerConfig")){t[n]="FlightData";continue}}t[n]=l(r)}return t}return Array.isArray(e)?e.map(l):e}function a(e){return(0,o.isThenable)(e)?(0,r.use)(e):e}let i="undefined"!=typeof window?function(e){let[t,n]=r.default.useState(e),o=(0,r.useContext)(u.ActionQueueContext);if(!o)throw Error("Invariant: Missing ActionQueueContext");let a=(0,r.useRef)(),i=(0,r.useRef)();return(0,r.useEffect)(()=>{if(!a.current&&!1!==i.current){if(void 0===i.current&&void 0===window.__REDUX_DEVTOOLS_EXTENSION__){i.current=!1;return}return a.current=window.__REDUX_DEVTOOLS_EXTENSION__.connect({instanceId:8e3,name:"next-router"}),a.current&&(a.current.init(l(e)),o&&(o.devToolsInstance=a.current)),()=>{a.current=void 0}}},[e,o]),[t,(0,r.useCallback)(t=>{o.state||(o.state=e),o.dispatch(t,n)},[o,e]),(0,r.useCallback)(e=>{a.current&&a.current.send({type:"RENDER_SYNC"},l(e))},[])]}:function(e){return[e,()=>{},()=>{}]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},91311:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"prepareFlightRouterStateForRequest",{enumerable:!0,get:function(){return o}});let r=n(84541);function o(e,t){return t?encodeURIComponent(JSON.stringify(e)):encodeURIComponent(JSON.stringify(function e(t){let[n,o,,u,l]=t,a="string"==typeof n&&n.startsWith(r.PAGE_SEGMENT_KEY+"?")?r.PAGE_SEGMENT_KEY:n,i={};for(let[t,n]of Object.entries(o))i[t]=e(n);let c=[a,i,null,u&&"refresh"!==u?u:null];return void 0!==l&&(c[4]=l),c}(e)))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},11283:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let r=n(10580);function o(e){return(0,r.pathHasPrefix)(e,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},33068:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return u}});let r=n(26674),o=n(63381),u=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:n,hash:u}=(0,o.parsePath)(e);return""+(0,r.removeTrailingSlash)(t)+n+u};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},61404:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=n(18993);function o(e){let t="function"==typeof reportError?reportError:e=>{window.console.error(e)};(0,r.isBailoutToCSRError)(e)||t(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},35076:function(e,t,n){"use strict";function r(e){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return r}}),n(11283),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},12010:function(e,t){"use strict";function n(e,t){var n=e.length;for(e.push(t);0>>1,o=e[r];if(0>>1;ru(i,n))cu(s,i)?(e[r]=s,e[c]=n,r=c):(e[r]=i,e[a]=n,r=a);else if(cu(s,n))e[r]=s,e[c]=n,r=c;else break}}return t}function u(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var l,a=performance;t.unstable_now=function(){return a.now()}}else{var i=Date,c=i.now();t.unstable_now=function(){return i.now()-c}}var s=[],f=[],d=1,p=null,h=3,y=!1,_=!1,v=!1,b="function"==typeof setTimeout?setTimeout:null,g="function"==typeof clearTimeout?clearTimeout:null,m="undefined"!=typeof setImmediate?setImmediate:null;function R(e){for(var t=r(f);null!==t;){if(null===t.callback)o(f);else if(t.startTime<=e)o(f),t.sortIndex=t.expirationTime,n(s,t);else break;t=r(f)}}function P(e){if(v=!1,R(e),!_){if(null!==r(s))_=!0,x();else{var t=r(f);null!==t&&A(P,t.startTime-e)}}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var j=!1,O=-1,E=5,S=-1;function w(){return!(t.unstable_now()-Se&&w());){var a=p.callback;if("function"==typeof a){p.callback=null,h=p.priorityLevel;var i=a(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof i){p.callback=i,R(e),n=!0;break t}p===r(s)&&o(s),R(e)}else o(s);p=r(s)}if(null!==p)n=!0;else{var c=r(f);null!==c&&A(P,c.startTime-e),n=!1}}break e}finally{p=null,h=u,y=!1}n=void 0}}finally{n?l():j=!1}}}if("function"==typeof m)l=function(){m(M)};else if("undefined"!=typeof MessageChannel){var T=new MessageChannel,C=T.port2;T.port1.onmessage=M,l=function(){C.postMessage(null)}}else l=function(){b(M,0)};function x(){j||(j=!0,l())}function A(e,n){O=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){_||y||(_=!0,x())},t.unstable_forceFrameRate=function(e){0>e||125l?(e.sortIndex=u,n(f,e),null===r(s)&&e===r(f)&&(v?(g(O),O=-1):v=!0,A(P,u-l))):(e.sortIndex=a,n(s,e),_||y||(_=!0,x())),e},t.unstable_shouldYield=w,t.unstable_wrapCallback=function(e){var t=h;return function(){var n=h;h=t;try{return e.apply(this,arguments)}finally{h=n}}}},71767:function(e,t,n){"use strict";e.exports=n(12010)},60934:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getPathname:function(){return r},isFullStringUrl:function(){return o},parseUrl:function(){return u}});let n="http://n";function r(e){return new URL(e,n).pathname}function o(e){return/https?:\/\//.test(e)}function u(e){let t;try{t=new URL(e,n)}catch{}return t}},86999:function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return b},createPrerenderState:function(){return c},formatDynamicAPIAccesses:function(){return _},markCurrentScopeAsDynamic:function(){return s},trackDynamicDataAccessed:function(){return f},trackDynamicFetch:function(){return p},usedDynamicAPIs:function(){return y}});let o=(r=n(2265))&&r.__esModule?r:{default:r},u=n(46177),l=n(36864),a=n(60934),i="function"==typeof o.default.unstable_postpone;function c(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function s(e,t){let n=(0,a.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new l.StaticGenBailoutError(`Route ${n} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)h(e.prerenderState,t,n);else if(e.revalidate=0,e.isStaticGeneration){let r=new u.DynamicServerError(`Route ${n} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=r.stack,r}}}function f(e,t){let n=(0,a.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${n} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new l.StaticGenBailoutError(`Route ${n} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)h(e.prerenderState,t,n);else if(e.revalidate=0,e.isStaticGeneration){let r=new u.DynamicServerError(`Route ${n} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=r.stack,r}}function d({reason:e,prerenderState:t,pathname:n}){h(t,e,n)}function p(e,t){e.prerenderState&&h(e.prerenderState,t,e.urlPathname)}function h(e,t,n){v();let r=`Route ${n} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),o.default.unstable_postpone(r)}function y(e){return e.dynamicAccesses.length>0}function _(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: +${t}`))}function v(){if(!i)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function b(e){v();let t=new AbortController;try{o.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},87417:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentParam",{enumerable:!0,get:function(){return o}});let r=n(91182);function o(e){let t=r.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t));return(t&&(e=e.slice(t.length)),e.startsWith("[[...")&&e.endsWith("]]"))?{type:"optional-catchall",param:e.slice(5,-2)}:e.startsWith("[...")&&e.endsWith("]")?{type:t?"catchall-intercepted":"catchall",param:e.slice(4,-1)}:e.startsWith("[")&&e.endsWith("]")?{type:t?"dynamic-intercepted":"dynamic",param:e.slice(1,-1)}:null}},70647:function(e,t){"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HMR_ACTIONS_SENT_TO_BROWSER",{enumerable:!0,get:function(){return n}}),(r=n||(n={})).ADDED_PAGE="addedPage",r.REMOVED_PAGE="removedPage",r.RELOAD_PAGE="reloadPage",r.SERVER_COMPONENT_CHANGES="serverComponentChanges",r.MIDDLEWARE_CHANGES="middlewareChanges",r.CLIENT_CHANGES="clientChanges",r.SERVER_ONLY_CHANGES="serverOnlyChanges",r.SYNC="sync",r.BUILT="built",r.BUILDING="building",r.DEV_PAGES_MANIFEST_UPDATE="devPagesManifestUpdate",r.TURBOPACK_MESSAGE="turbopack-message",r.SERVER_ERROR="serverError",r.TURBOPACK_CONNECTED="turbopack-connected"},91182:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return l},isInterceptionRouteAppPath:function(){return u}});let r=n(20926),o=["(..)(..)","(.)","(..)","(...)"];function u(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function l(e){let t,n,u;for(let r of e.split("/"))if(n=o.find(e=>r.startsWith(e))){[t,u]=e.split(n,2);break}if(!t||!n||!u)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,r.normalizeAppPath)(t),n){case"(.)":u="/"===t?`/${u}`:t+"/"+u;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);u=t.split("/").slice(0,-1).concat(u).join("/");break;case"(...)":u="/"+u;break;case"(..)(..)":let l=t.split("/");if(l.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);u=l.slice(0,-2).concat(u).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:u}}},30650:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,n){let r=Reflect.get(e,t,n);return"function"==typeof r?r.bind(e):r}static set(e,t,n,r){return Reflect.set(e,t,n,r)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},61956:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{AppRouterContext:function(){return o},GlobalLayoutRouterContext:function(){return l},LayoutRouterContext:function(){return u},MissingSlotContext:function(){return i},TemplateContext:function(){return a}});let r=n(47043)._(n(2265)),o=r.default.createContext(null),u=r.default.createContext(null),l=r.default.createContext(null),a=r.default.createContext(null),i=r.default.createContext(new Set)},37207:function(e,t){"use strict";function n(e){let t=5381;for(let n=0;n>>0}function r(e){return n(e).toString(36).slice(0,5)}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{djb2Hash:function(){return n},hexHash:function(){return r}})},48701:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return r}});let r=n(47043)._(n(2265)).default.createContext({})},79060:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{PathParamsContext:function(){return l},PathnameContext:function(){return u},SearchParamsContext:function(){return o}});let r=n(2265),o=(0,r.createContext)(null),u=(0,r.createContext)(null),l=(0,r.createContext)(null)},18993:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{BailoutToCSRError:function(){return r},isBailoutToCSRError:function(){return o}});let n="BAILOUT_TO_CLIENT_SIDE_RENDERING";class r extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=n}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===n}},78162:function(e,t){"use strict";function n(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return n}})},2103:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ActionQueueContext:function(){return a},createMutableActionQueue:function(){return s}});let r=n(53099),o=n(24673),u=n(91450),l=r._(n(2265)),a=l.default.createContext(null);function i(e,t){null!==e.pending&&(e.pending=e.pending.next,null!==e.pending?c({actionQueue:e,action:e.pending,setState:t}):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:o.ACTION_REFRESH,origin:window.location.origin},t)))}async function c(e){let{actionQueue:t,action:n,setState:r}=e,u=t.state;if(!u)throw Error("Invariant: Router state not initialized");t.pending=n;let l=n.payload,a=t.action(u,l);function c(e){n.discarded||(t.state=e,t.devToolsInstance&&t.devToolsInstance.send(l,e),i(t,r),n.resolve(e))}(0,o.isThenable)(a)?a.then(c,e=>{i(t,r),n.reject(e)}):c(a)}function s(){let e={state:null,dispatch:(t,n)=>(function(e,t,n){let r={resolve:n,reject:()=>{}};if(t.type!==o.ACTION_RESTORE){let e=new Promise((e,t)=>{r={resolve:e,reject:t}});(0,l.startTransition)(()=>{n(e)})}let u={payload:t,next:null,resolve:r.resolve,reject:r.reject};null===e.pending?(e.last=u,c({actionQueue:e,action:u,setState:n})):t.type===o.ACTION_NAVIGATE||t.type===o.ACTION_RESTORE?(e.pending.discarded=!0,e.last=u,e.pending.payload.type===o.ACTION_SERVER_ACTION&&(e.needsRefresh=!0),c({actionQueue:e,action:u,setState:n})):(null!==e.last&&(e.last.next=u),e.last=u)})(e,t,n),action:async(e,t)=>{if(null===e)throw Error("Invariant: Router state not initialized");return(0,u.reducer)(e,t)},pending:null,last:null};return e}},68498:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let r=n(63381);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:n,query:o,hash:u}=(0,r.parsePath)(e);return""+t+n+o+u}},20926:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{normalizeAppPath:function(){return u},normalizeRscURL:function(){return l}});let r=n(78162),o=n(84541);function u(e){return(0,r.ensureLeadingSlash)(e.split("/").reduce((e,t,n,r)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&n===r.length-1?e:e+"/"+t,""))}function l(e){return e.replace(/\.rsc($|\?)/,"$1")}},7092:function(e,t){"use strict";function n(e,t){if(void 0===t&&(t={}),t.onlyHashChange){e();return}let n=document.documentElement,r=n.style.scrollBehavior;n.style.scrollBehavior="auto",t.dontForceLayout||n.getClientRects(),e(),n.style.scrollBehavior=r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return n}})},86146:function(e,t){"use strict";function n(e){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(e)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isBot",{enumerable:!0,get:function(){return n}})},63381:function(e,t){"use strict";function n(e){let t=e.indexOf("#"),n=e.indexOf("?"),r=n>-1&&(t<0||n-1?{pathname:e.substring(0,r?n:t),query:r?e.substring(n,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return n}})},10580:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let r=n(63381);function o(e,t){if("string"!=typeof e)return!1;let{pathname:n}=(0,r.parsePath)(e);return n===t||n.startsWith(t+"/")}},26674:function(e,t){"use strict";function n(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return n}})},84541:function(e,t){"use strict";function n(e){return"("===e[0]&&e.endsWith(")")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DEFAULT_SEGMENT_KEY:function(){return o},PAGE_SEGMENT_KEY:function(){return r},isGroupSegment:function(){return n}});let r="__PAGE__",o="__DEFAULT__"},55501:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ServerInsertedHTMLContext:function(){return o},useServerInsertedHTML:function(){return u}});let r=n(53099)._(n(2265)),o=r.default.createContext(null);function u(e){let t=(0,r.useContext)(o);t&&t(e)}},31765:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},47149:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"actionAsyncStorage",{enumerable:!0,get:function(){return r}});let r=(0,n(54832).createAsyncLocalStorage)();("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},54832:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createAsyncLocalStorage",{enumerable:!0,get:function(){return u}});let n=Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available");class r{disable(){throw n}getStore(){}run(){throw n}exit(){throw n}enterWith(){throw n}}let o=globalThis.AsyncLocalStorage;function u(){return o?new o:new r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},25575:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"requestAsyncStorage",{enumerable:!0,get:function(){return r}});let r=(0,n(54832).createAsyncLocalStorage)();("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},20030:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"staticGenerationAsyncStorage",{enumerable:!0,get:function(){return r}});let r=(0,n(54832).createAsyncLocalStorage)();("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},34040:function(e,t,n){"use strict";var r=n(54887);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},54887:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(84417)},97950:function(e,t,n){"use strict";var r=n(54887),o={stream:!0},u=Object.prototype.hasOwnProperty,l=new Map;function a(e){var t=n(e);return"function"!=typeof t.then||"fulfilled"===t.status?null:(t.then(function(e){t.status="fulfilled",t.value=e},function(e){t.status="rejected",t.reason=e}),t)}function i(){}var c=new Map,s=n.u;n.u=function(e){var t=c.get(e);return void 0!==t?t:s(e)};var f=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Dispatcher,d=Symbol.for("react.element"),p=Symbol.for("react.lazy"),h=Symbol.iterator,y=Array.isArray,_=Object.getPrototypeOf,v=Object.prototype,b=new WeakMap;function g(e,t,n,r){this.status=e,this.value=t,this.reason=n,this._response=r}function m(e){switch(e.status){case"resolved_model":w(e);break;case"resolved_module":M(e)}switch(e.status){case"fulfilled":return e.value;case"pending":case"blocked":case"cyclic":throw e;default:throw e.reason}}function R(e,t){for(var n=0;nh?(_=h,h=3,p++):(_=0,h=3);continue;case 2:44===(m=d[p++])?h=4:v=v<<4|(96d.length&&(m=-1)}var R=d.byteOffset+p;if(-1{o.nextPart.has(e)||o.nextPart.set(e,{nextPart:new Map,validators:[]}),o=o.nextPart.get(e)}),o}let l=/\s+/;function i(){let e,r,o=0,t="";for(;or[e]||[];return r.isThemeGetter=!0,r}let a=/^\[(?:([a-z-]+):)?(.+)\]$/i,c=/^\d+\/\d+$/,d=new Set(["px","full","screen"]),u=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,p=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,b=/^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,f=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;function m(e){return h(e)||d.has(e)||c.test(e)}function g(e){return N(e,"length",M)}function h(e){return!!e&&!Number.isNaN(Number(e))}function x(e){return N(e,"number",h)}function y(e){return!!e&&Number.isInteger(Number(e))}function w(e){return e.endsWith("%")&&h(e.slice(0,-1))}function v(e){return a.test(e)}function k(e){return u.test(e)}let z=new Set(["length","size","percentage"]);function j(e){return N(e,z,I)}function C(e){return N(e,"position",I)}let S=new Set(["image","url"]);function G(e){return N(e,S,O)}function P(e){return N(e,"",$)}function E(){return!0}function N(e,r,o){let t=a.exec(e);return!!t&&(t[1]?"string"==typeof r?t[1]===r:r.has(t[1]):o(t[2]))}function M(e){return p.test(e)}function I(){return!1}function $(e){return b.test(e)}function O(e){return f.test(e)}let T=function(e,...r){let o,s,a;let c=function(l){var i;return s=(o={cache:function(e){if(e<1)return{get:()=>void 0,set:()=>{}};let r=0,o=new Map,t=new Map;function n(n,l){o.set(n,l),++r>e&&(r=0,t=o,o=new Map)}return{get(e){let r=o.get(e);return void 0!==r?r:void 0!==(r=t.get(e))?(n(e,r),r):void 0},set(e,r){o.has(e)?o.set(e,r):n(e,r)}}}((i=r.reduce((e,r)=>r(e),e())).cacheSize),splitModifiers:function(e){let r=e.separator,o=1===r.length,t=r[0],n=r.length;return function(e){let l;let i=[],s=0,a=0;for(let c=0;ca?l-a:void 0}}}(i),...function(e){let r=function(e){var r;let{theme:o,prefix:t}=e,l={nextPart:new Map,validators:[]};return(r=Object.entries(e.classGroups),t?r.map(([e,r])=>[e,r.map(e=>"string"==typeof e?t+e:"object"==typeof e?Object.fromEntries(Object.entries(e).map(([e,r])=>[t+e,r])):e)]):r).forEach(([e,r])=>{(function e(r,o,t,l){r.forEach(r=>{if("string"==typeof r){(""===r?o:n(o,r)).classGroupId=t;return}if("function"==typeof r){if(r.isThemeGetter){e(r(l),o,t,l);return}o.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([r,i])=>{e(i,n(o,r),t,l)})})})(r,l,e,o)}),l}(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:l}=e;return{getClassGroupId:function(e){let o=e.split("-");return""===o[0]&&1!==o.length&&o.shift(),function e(r,o){if(0===r.length)return o.classGroupId;let t=r[0],n=o.nextPart.get(t),l=n?e(r.slice(1),n):void 0;if(l)return l;if(0===o.validators.length)return;let i=r.join("-");return o.validators.find(({validator:e})=>e(i))?.classGroupId}(o,r)||function(e){if(t.test(e)){let r=t.exec(e)[1],o=r?.substring(0,r.indexOf(":"));if(o)return"arbitrary.."+o}}(e)},getConflictingClassGroupIds:function(e,r){let t=o[e]||[];return r&&l[e]?[...t,...l[e]]:t}}}(i)}).cache.get,a=o.cache.set,c=d,d(l)};function d(e){let r=s(e);if(r)return r;let t=function(e,r){let{splitModifiers:o,getClassGroupId:t,getConflictingClassGroupIds:n}=r,i=new Set;return e.trim().split(l).map(e=>{let{modifiers:r,hasImportantModifier:n,baseClassName:l,maybePostfixModifierPosition:i}=o(e),s=t(i?l.substring(0,i):l),a=!!i;if(!s){if(!i||!(s=t(l)))return{isTailwindClass:!1,originalClassName:e};a=!1}let c=(function(e){if(e.length<=1)return e;let r=[],o=[];return e.forEach(e=>{"["===e[0]?(r.push(...o.sort(),e),o=[]):o.push(e)}),r.push(...o.sort()),r})(r).join(":");return{isTailwindClass:!0,modifierId:n?c+"!":c,classGroupId:s,originalClassName:e,hasPostfixModifier:a}}).reverse().filter(e=>{if(!e.isTailwindClass)return!0;let{modifierId:r,classGroupId:o,hasPostfixModifier:t}=e,l=r+o;return!i.has(l)&&(i.add(l),n(o,t).forEach(e=>i.add(r+e)),!0)}).reverse().map(e=>e.originalClassName).join(" ")}(e,o);return a(e,t),t}return function(){return c(i.apply(null,arguments))}}(function(){let e=s("colors"),r=s("spacing"),o=s("blur"),t=s("brightness"),n=s("borderColor"),l=s("borderRadius"),i=s("borderSpacing"),a=s("borderWidth"),c=s("contrast"),d=s("grayscale"),u=s("hueRotate"),p=s("invert"),b=s("gap"),f=s("gradientColorStops"),z=s("gradientColorStopPositions"),S=s("inset"),N=s("margin"),M=s("opacity"),I=s("padding"),$=s("saturate"),O=s("scale"),T=s("sepia"),W=s("skew"),_=s("space"),R=s("translate"),q=()=>["auto","contain","none"],A=()=>["auto","hidden","clip","visible","scroll"],Z=()=>["auto",v,r],B=()=>[v,r],D=()=>["",m,g],F=()=>["auto",h,v],H=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],J=()=>["solid","dashed","dotted","double","none"],K=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity","plus-lighter"],L=()=>["start","end","center","between","around","evenly","stretch"],Q=()=>["","0",v],U=()=>["auto","avoid","all","avoid-page","page","left","right","column"],V=()=>[h,x],X=()=>[h,v];return{cacheSize:500,separator:":",theme:{colors:[E],spacing:[m,g],blur:["none","",k,v],brightness:V(),borderColor:[e],borderRadius:["none","","full",k,v],borderSpacing:B(),borderWidth:D(),contrast:V(),grayscale:Q(),hueRotate:X(),invert:Q(),gap:B(),gradientColorStops:[e],gradientColorStopPositions:[w,g],inset:Z(),margin:Z(),opacity:V(),padding:B(),saturate:V(),scale:V(),sepia:Q(),skew:X(),space:B(),translate:B()},classGroups:{aspect:[{aspect:["auto","square","video",v]}],container:["container"],columns:[{columns:[k]}],"break-after":[{"break-after":U()}],"break-before":[{"break-before":U()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...H(),v]}],overflow:[{overflow:A()}],"overflow-x":[{"overflow-x":A()}],"overflow-y":[{"overflow-y":A()}],overscroll:[{overscroll:q()}],"overscroll-x":[{"overscroll-x":q()}],"overscroll-y":[{"overscroll-y":q()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[S]}],"inset-x":[{"inset-x":[S]}],"inset-y":[{"inset-y":[S]}],start:[{start:[S]}],end:[{end:[S]}],top:[{top:[S]}],right:[{right:[S]}],bottom:[{bottom:[S]}],left:[{left:[S]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",y,v]}],basis:[{basis:Z()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",v]}],grow:[{grow:Q()}],shrink:[{shrink:Q()}],order:[{order:["first","last","none",y,v]}],"grid-cols":[{"grid-cols":[E]}],"col-start-end":[{col:["auto",{span:["full",y,v]},v]}],"col-start":[{"col-start":F()}],"col-end":[{"col-end":F()}],"grid-rows":[{"grid-rows":[E]}],"row-start-end":[{row:["auto",{span:[y,v]},v]}],"row-start":[{"row-start":F()}],"row-end":[{"row-end":F()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",v]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",v]}],gap:[{gap:[b]}],"gap-x":[{"gap-x":[b]}],"gap-y":[{"gap-y":[b]}],"justify-content":[{justify:["normal",...L()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...L(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...L(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[I]}],px:[{px:[I]}],py:[{py:[I]}],ps:[{ps:[I]}],pe:[{pe:[I]}],pt:[{pt:[I]}],pr:[{pr:[I]}],pb:[{pb:[I]}],pl:[{pl:[I]}],m:[{m:[N]}],mx:[{mx:[N]}],my:[{my:[N]}],ms:[{ms:[N]}],me:[{me:[N]}],mt:[{mt:[N]}],mr:[{mr:[N]}],mb:[{mb:[N]}],ml:[{ml:[N]}],"space-x":[{"space-x":[_]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[_]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",v,r]}],"min-w":[{"min-w":[v,r,"min","max","fit"]}],"max-w":[{"max-w":[v,r,"none","full","min","max","fit","prose",{screen:[k]},k]}],h:[{h:[v,r,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[v,r,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[v,r,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[v,r,"auto","min","max","fit"]}],"font-size":[{text:["base",k,g]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",x]}],"font-family":[{font:[E]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",v]}],"line-clamp":[{"line-clamp":["none",h,x]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",m,v]}],"list-image":[{"list-image":["none",v]}],"list-style-type":[{list:["none","disc","decimal",v]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[M]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[M]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",m,g]}],"underline-offset":[{"underline-offset":["auto",m,v]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:B()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",v]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",v]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[M]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...H(),C]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",j]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},G]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[z]}],"gradient-via-pos":[{via:[z]}],"gradient-to-pos":[{to:[z]}],"gradient-from":[{from:[f]}],"gradient-via":[{via:[f]}],"gradient-to":[{to:[f]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[a]}],"border-w-x":[{"border-x":[a]}],"border-w-y":[{"border-y":[a]}],"border-w-s":[{"border-s":[a]}],"border-w-e":[{"border-e":[a]}],"border-w-t":[{"border-t":[a]}],"border-w-r":[{"border-r":[a]}],"border-w-b":[{"border-b":[a]}],"border-w-l":[{"border-l":[a]}],"border-opacity":[{"border-opacity":[M]}],"border-style":[{border:[...J(),"hidden"]}],"divide-x":[{"divide-x":[a]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[a]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[M]}],"divide-style":[{divide:J()}],"border-color":[{border:[n]}],"border-color-x":[{"border-x":[n]}],"border-color-y":[{"border-y":[n]}],"border-color-t":[{"border-t":[n]}],"border-color-r":[{"border-r":[n]}],"border-color-b":[{"border-b":[n]}],"border-color-l":[{"border-l":[n]}],"divide-color":[{divide:[n]}],"outline-style":[{outline:["",...J()]}],"outline-offset":[{"outline-offset":[m,v]}],"outline-w":[{outline:[m,g]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:D()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[M]}],"ring-offset-w":[{"ring-offset":[m,g]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",k,P]}],"shadow-color":[{shadow:[E]}],opacity:[{opacity:[M]}],"mix-blend":[{"mix-blend":K()}],"bg-blend":[{"bg-blend":K()}],filter:[{filter:["","none"]}],blur:[{blur:[o]}],brightness:[{brightness:[t]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",k,v]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[p]}],saturate:[{saturate:[$]}],sepia:[{sepia:[T]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[o]}],"backdrop-brightness":[{"backdrop-brightness":[t]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[p]}],"backdrop-opacity":[{"backdrop-opacity":[M]}],"backdrop-saturate":[{"backdrop-saturate":[$]}],"backdrop-sepia":[{"backdrop-sepia":[T]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",v]}],duration:[{duration:X()}],ease:[{ease:["linear","in","out","in-out",v]}],delay:[{delay:X()}],animate:[{animate:["none","spin","ping","pulse","bounce",v]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[O]}],"scale-x":[{"scale-x":[O]}],"scale-y":[{"scale-y":[O]}],rotate:[{rotate:[y,v]}],"translate-x":[{"translate-x":[R]}],"translate-y":[{"translate-y":[R]}],"skew-x":[{"skew-x":[W]}],"skew-y":[{"skew-y":[W]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",v]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",v]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":B()}],"scroll-mx":[{"scroll-mx":B()}],"scroll-my":[{"scroll-my":B()}],"scroll-ms":[{"scroll-ms":B()}],"scroll-me":[{"scroll-me":B()}],"scroll-mt":[{"scroll-mt":B()}],"scroll-mr":[{"scroll-mr":B()}],"scroll-mb":[{"scroll-mb":B()}],"scroll-ml":[{"scroll-ml":B()}],"scroll-p":[{"scroll-p":B()}],"scroll-px":[{"scroll-px":B()}],"scroll-py":[{"scroll-py":B()}],"scroll-ps":[{"scroll-ps":B()}],"scroll-pe":[{"scroll-pe":B()}],"scroll-pt":[{"scroll-pt":B()}],"scroll-pr":[{"scroll-pr":B()}],"scroll-pb":[{"scroll-pb":B()}],"scroll-pl":[{"scroll-pl":B()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",v]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[m,g,x]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}})}}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/418-9f199b27072bf0cb.js b/phase-1-core-infra/frontend/.next/static/chunks/418-9f199b27072bf0cb.js new file mode 100644 index 0000000000000000000000000000000000000000..aef12b1120c987ca1b809e6951b88f1acd71c326 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/418-9f199b27072bf0cb.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[418],{39763:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(2265),i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let s=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),o=(e,t)=>{let n=(0,r.forwardRef)((n,o)=>{let{color:a="currentColor",size:u=24,strokeWidth:l=2,absoluteStrokeWidth:c,className:d="",children:h,...f}=n;return(0,r.createElement)("svg",{ref:o,...i,width:u,height:u,stroke:a,strokeWidth:c?24*Number(l)/Number(u):l,className:["lucide","lucide-".concat(s(e)),d].join(" "),...f},[...t.map(e=>{let[t,n]=e;return(0,r.createElement)(t,n)}),...Array.isArray(h)?h:[h]])});return n.displayName="".concat(e),n}},32489:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},14811:function(e){e.exports={style:{fontFamily:"'__Inter_f367f3', '__Inter_Fallback_f367f3'",fontStyle:"normal"},className:"__className_f367f3"}},1119:function(e,t,n){"use strict";function r(){return(r=Object.assign?Object.assign.bind():function(e){for(var t=1;te.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}function s(...e){return(0,r.useCallback)(i(...e),e)}},66840:function(e,t,n){"use strict";n.d(t,{WV:function(){return a},jH:function(){return u}});var r=n(1119),i=n(2265),s=n(54887),o=n(37053);let a=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let n=(0,i.forwardRef)((e,n)=>{let{asChild:s,...a}=e,u=s?o.g7:t;return(0,i.useEffect)(()=>{window[Symbol.for("radix-ui")]=!0},[]),(0,i.createElement)(u,(0,r.Z)({},a,{ref:n}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function u(e,t){e&&(0,s.flushSync)(()=>e.dispatchEvent(t))}},37053:function(e,t,n){"use strict";n.d(t,{g7:function(){return o}});var r=n(1119),i=n(2265),s=n(98575);let o=(0,i.forwardRef)((e,t)=>{let{children:n,...s}=e,o=i.Children.toArray(n),u=o.find(l);if(u){let e=u.props.children,n=o.map(t=>t!==u?t:i.Children.count(e)>1?i.Children.only(null):(0,i.isValidElement)(e)?e.props.children:null);return(0,i.createElement)(a,(0,r.Z)({},s,{ref:t}),(0,i.isValidElement)(e)?(0,i.cloneElement)(e,void 0,n):null)}return(0,i.createElement)(a,(0,r.Z)({},s,{ref:t}),n)});o.displayName="Slot";let a=(0,i.forwardRef)((e,t)=>{let{children:n,...r}=e;return(0,i.isValidElement)(n)?(0,i.cloneElement)(n,{...function(e,t){let n={...t};for(let r in t){let i=e[r],s=t[r];/^on[A-Z]/.test(r)?i&&s?n[r]=(...e)=>{s(...e),i(...e)}:i&&(n[r]=i):"style"===r?n[r]={...i,...s}:"className"===r&&(n[r]=[i,s].filter(Boolean).join(" "))}return{...e,...n}}(r,n.props),ref:t?(0,s.F)(t,n.ref):n.ref}):i.Children.count(n)>1?i.Children.only(null):null});a.displayName="SlotClone";let u=({children:e})=>(0,i.createElement)(i.Fragment,null,e);function l(e){return(0,i.isValidElement)(e)&&e.type===u}},42552:function(e,t,n){"use strict";let r;n.d(t,{aU:function(){return er},x8:function(){return ei},dk:function(){return en},zt:function(){return Y},fC:function(){return ee},Dx:function(){return et},l_:function(){return J}});var i=n(1119),s=n(2265),o=n(54887);function a(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(null==e||e(r),!1===n||!r.defaultPrevented)return null==t?void 0:t(r)}}var u=n(98575);function l(e,t=[]){let n=[],r=()=>{let t=n.map(e=>(0,s.createContext)(e));return function(n){let r=(null==n?void 0:n[e])||t;return(0,s.useMemo)(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return r.scopeName=e,[function(t,r){let i=(0,s.createContext)(r),o=n.length;function a(t){let{scope:n,children:r,...a}=t,u=(null==n?void 0:n[e][o])||i,l=(0,s.useMemo)(()=>a,Object.values(a));return(0,s.createElement)(u.Provider,{value:l},r)}return n=[...n,r],a.displayName=t+"Provider",[a,function(n,a){let u=(null==a?void 0:a[e][o])||i,l=(0,s.useContext)(u);if(l)return l;if(void 0!==r)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return(0,s.useMemo)(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}(r,...t)]}var c=n(37053),d=n(66840);function h(e){let t=(0,s.useRef)(e);return(0,s.useEffect)(()=>{t.current=e}),(0,s.useMemo)(()=>(...e)=>{var n;return null===(n=t.current)||void 0===n?void 0:n.call(t,...e)},[])}let f="dismissableLayer.update",p=(0,s.createContext)({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),m=(0,s.forwardRef)((e,t)=>{var n;let{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:m,onInteractOutside:y,onDismiss:w,...g}=e,E=(0,s.useContext)(p),[C,T]=(0,s.useState)(null),P=null!==(n=null==C?void 0:C.ownerDocument)&&void 0!==n?n:null==globalThis?void 0:globalThis.document,[,O]=(0,s.useState)({}),S=(0,u.e)(t,e=>T(e)),R=Array.from(E.layers),[x]=[...E.layersWithOutsidePointerEventsDisabled].slice(-1),D=R.indexOf(x),F=C?R.indexOf(C):-1,A=E.layersWithOutsidePointerEventsDisabled.size>0,M=F>=D,q=function(e,t=null==globalThis?void 0:globalThis.document){let n=h(e),r=(0,s.useRef)(!1),i=(0,s.useRef)(()=>{});return(0,s.useEffect)(()=>{let e=e=>{if(e.target&&!r.current){let r={originalEvent:e};function s(){b("dismissableLayer.pointerDownOutside",n,r,{discrete:!0})}"touch"===e.pointerType?(t.removeEventListener("click",i.current),i.current=s,t.addEventListener("click",i.current,{once:!0})):s()}else t.removeEventListener("click",i.current);r.current=!1},s=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(s),t.removeEventListener("pointerdown",e),t.removeEventListener("click",i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}(e=>{let t=e.target,n=[...E.branches].some(e=>e.contains(t));!M||n||(null==c||c(e),null==y||y(e),e.defaultPrevented||null==w||w())},P),N=function(e,t=null==globalThis?void 0:globalThis.document){let n=h(e),r=(0,s.useRef)(!1);return(0,s.useEffect)(()=>{let e=e=>{e.target&&!r.current&&b("dismissableLayer.focusOutside",n,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}(e=>{let t=e.target;[...E.branches].some(e=>e.contains(t))||(null==m||m(e),null==y||y(e),e.defaultPrevented||null==w||w())},P);return!function(e,t=null==globalThis?void 0:globalThis.document){let n=h(e);(0,s.useEffect)(()=>{let e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)},[n,t])}(e=>{F!==E.layers.size-1||(null==l||l(e),!e.defaultPrevented&&w&&(e.preventDefault(),w()))},P),(0,s.useEffect)(()=>{if(C)return o&&(0===E.layersWithOutsidePointerEventsDisabled.size&&(r=P.body.style.pointerEvents,P.body.style.pointerEvents="none"),E.layersWithOutsidePointerEventsDisabled.add(C)),E.layers.add(C),v(),()=>{o&&1===E.layersWithOutsidePointerEventsDisabled.size&&(P.body.style.pointerEvents=r)}},[C,P,o,E]),(0,s.useEffect)(()=>()=>{C&&(E.layers.delete(C),E.layersWithOutsidePointerEventsDisabled.delete(C),v())},[C,E]),(0,s.useEffect)(()=>{let e=()=>O({});return document.addEventListener(f,e),()=>document.removeEventListener(f,e)},[]),(0,s.createElement)(d.WV.div,(0,i.Z)({},g,{ref:S,style:{pointerEvents:A?M?"auto":"none":void 0,...e.style},onFocusCapture:a(e.onFocusCapture,N.onFocusCapture),onBlurCapture:a(e.onBlurCapture,N.onBlurCapture),onPointerDownCapture:a(e.onPointerDownCapture,q.onPointerDownCapture)}))}),y=(0,s.forwardRef)((e,t)=>{let n=(0,s.useContext)(p),r=(0,s.useRef)(null),o=(0,u.e)(t,r);return(0,s.useEffect)(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,s.createElement)(d.WV.div,(0,i.Z)({},e,{ref:o}))});function v(){let e=new CustomEvent(f);document.dispatchEvent(e)}function b(e,t,n,{discrete:r}){let i=n.originalEvent.target,s=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?(0,d.jH)(i,s):i.dispatchEvent(s)}let w=(0,s.forwardRef)((e,t)=>{var n;let{container:r=null==globalThis?void 0:null===(n=globalThis.document)||void 0===n?void 0:n.body,...a}=e;return r?o.createPortal((0,s.createElement)(d.WV.div,(0,i.Z)({},a,{ref:t})),r):null}),g=(null==globalThis?void 0:globalThis.document)?s.useLayoutEffect:()=>{},E=e=>{let{present:t,children:n}=e,r=function(e){var t,n;let[r,i]=(0,s.useState)(),a=(0,s.useRef)({}),u=(0,s.useRef)(e),l=(0,s.useRef)("none"),[c,d]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},(0,s.useReducer)((e,t)=>{let r=n[e][t];return null!=r?r:e},t));return(0,s.useEffect)(()=>{let e=C(a.current);l.current="mounted"===c?e:"none"},[c]),g(()=>{let t=a.current,n=u.current;if(n!==e){let r=l.current,i=C(t);e?d("MOUNT"):"none"===i||(null==t?void 0:t.display)==="none"?d("UNMOUNT"):n&&r!==i?d("ANIMATION_OUT"):d("UNMOUNT"),u.current=e}},[e,d]),g(()=>{if(r){let e=e=>{let t=C(a.current).includes(e.animationName);e.target===r&&t&&(0,o.flushSync)(()=>d("ANIMATION_END"))},t=e=>{e.target===r&&(l.current=C(a.current))};return r.addEventListener("animationstart",t),r.addEventListener("animationcancel",e),r.addEventListener("animationend",e),()=>{r.removeEventListener("animationstart",t),r.removeEventListener("animationcancel",e),r.removeEventListener("animationend",e)}}d("ANIMATION_END")},[r,d]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:(0,s.useCallback)(e=>{e&&(a.current=getComputedStyle(e)),i(e)},[])}}(t),i="function"==typeof n?n({present:r.isPresent}):s.Children.only(n),a=(0,u.e)(r.ref,i.ref);return"function"==typeof n||r.isPresent?(0,s.cloneElement)(i,{ref:a}):null};function C(e){return(null==e?void 0:e.animationName)||"none"}E.displayName="Presence";let T=(0,s.forwardRef)((e,t)=>(0,s.createElement)(d.WV.span,(0,i.Z)({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}))),P="ToastProvider",[O,S,R]=function(e){let t=e+"CollectionProvider",[n,r]=l(t),[i,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=e+"CollectionSlot",d=s.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=o(a,n),l=(0,u.e)(t,i.collectionRef);return s.createElement(c.g7,{ref:l},r)}),h=e+"CollectionItemSlot",f="data-radix-collection-item";return[{Provider:e=>{let{scope:t,children:n}=e,r=s.useRef(null),o=s.useRef(new Map).current;return s.createElement(i,{scope:t,itemMap:o,collectionRef:r},n)},Slot:d,ItemSlot:s.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,a=s.useRef(null),l=(0,u.e)(t,a),d=o(h,n);return s.useEffect(()=>(d.itemMap.set(a,{ref:a,...i}),()=>void d.itemMap.delete(a))),s.createElement(c.g7,{[f]:"",ref:l},r)})},function(t){let n=o(e+"CollectionConsumer",t);return s.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${f}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])},r]}("Toast"),[x,D]=l("Toast",[R]),[F,A]=x(P),M=e=>{let{__scopeToast:t,label:n="Notification",duration:r=5e3,swipeDirection:i="right",swipeThreshold:o=50,children:a}=e,[u,l]=(0,s.useState)(null),[c,d]=(0,s.useState)(0),h=(0,s.useRef)(!1),f=(0,s.useRef)(!1);return(0,s.createElement)(O.Provider,{scope:t},(0,s.createElement)(F,{scope:t,label:n,duration:r,swipeDirection:i,swipeThreshold:o,toastCount:c,viewport:u,onViewportChange:l,onToastAdd:(0,s.useCallback)(()=>d(e=>e+1),[]),onToastRemove:(0,s.useCallback)(()=>d(e=>e-1),[]),isFocusedToastEscapeKeyDownRef:h,isClosePausedRef:f},a))};M.propTypes={label:e=>e.label&&"string"==typeof e.label&&!e.label.trim()?Error(`Invalid prop \`label\` supplied to \`${P}\`. Expected non-empty \`string\`.`):null};let q=["F8"],N="toast.viewportPause",L="toast.viewportResume",k=(0,s.forwardRef)((e,t)=>{let{__scopeToast:n,hotkey:r=q,label:o="Notifications ({hotkey})",...a}=e,l=A("ToastViewport",n),c=S(n),h=(0,s.useRef)(null),f=(0,s.useRef)(null),p=(0,s.useRef)(null),m=(0,s.useRef)(null),v=(0,u.e)(t,m,l.onViewportChange),b=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),w=l.toastCount>0;(0,s.useEffect)(()=>{let e=e=>{var t;r.every(t=>e[t]||e.code===t)&&(null===(t=m.current)||void 0===t||t.focus())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[r]),(0,s.useEffect)(()=>{let e=h.current,t=m.current;if(w&&e&&t){let n=()=>{if(!l.isClosePausedRef.current){let e=new CustomEvent(N);t.dispatchEvent(e),l.isClosePausedRef.current=!0}},r=()=>{if(l.isClosePausedRef.current){let e=new CustomEvent(L);t.dispatchEvent(e),l.isClosePausedRef.current=!1}},i=t=>{e.contains(t.relatedTarget)||r()},s=()=>{e.contains(document.activeElement)||r()};return e.addEventListener("focusin",n),e.addEventListener("focusout",i),e.addEventListener("pointermove",n),e.addEventListener("pointerleave",s),window.addEventListener("blur",n),window.addEventListener("focus",r),()=>{e.removeEventListener("focusin",n),e.removeEventListener("focusout",i),e.removeEventListener("pointermove",n),e.removeEventListener("pointerleave",s),window.removeEventListener("blur",n),window.removeEventListener("focus",r)}}},[w,l.isClosePausedRef]);let g=(0,s.useCallback)(({tabbingDirection:e})=>{let t=c().map(t=>{let n=t.ref.current,r=[n,...function(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}(n)];return"forwards"===e?r:r.reverse()});return("forwards"===e?t.reverse():t).flat()},[c]);return(0,s.useEffect)(()=>{let e=m.current;if(e){let t=t=>{let n=t.altKey||t.ctrlKey||t.metaKey;if("Tab"===t.key&&!n){var r,i,s;let n=document.activeElement,o=t.shiftKey;if(t.target===e&&o){null===(r=f.current)||void 0===r||r.focus();return}let a=g({tabbingDirection:o?"backwards":"forwards"}),u=a.findIndex(e=>e===n);X(a.slice(u+1))?t.preventDefault():o?null===(i=f.current)||void 0===i||i.focus():null===(s=p.current)||void 0===s||s.focus()}};return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t)}},[c,g]),(0,s.createElement)(y,{ref:h,role:"region","aria-label":o.replace("{hotkey}",b),tabIndex:-1,style:{pointerEvents:w?void 0:"none"}},w&&(0,s.createElement)(I,{ref:f,onFocusFromOutsideViewport:()=>{X(g({tabbingDirection:"forwards"}))}}),(0,s.createElement)(O.Slot,{scope:n},(0,s.createElement)(d.WV.ol,(0,i.Z)({tabIndex:-1},a,{ref:v}))),w&&(0,s.createElement)(I,{ref:p,onFocusFromOutsideViewport:()=>{X(g({tabbingDirection:"backwards"}))}}))}),I=(0,s.forwardRef)((e,t)=>{let{__scopeToast:n,onFocusFromOutsideViewport:r,...o}=e,a=A("ToastFocusProxy",n);return(0,s.createElement)(T,(0,i.Z)({"aria-hidden":!0,tabIndex:0},o,{ref:t,style:{position:"fixed"},onFocus:e=>{var t;let n=e.relatedTarget;null!==(t=a.viewport)&&void 0!==t&&t.contains(n)||r()}}))}),_="Toast",j=(0,s.forwardRef)((e,t)=>{let{forceMount:n,open:r,defaultOpen:o,onOpenChange:u,...l}=e,[c=!0,d]=function({prop:e,defaultProp:t,onChange:n=()=>{}}){let[r,i]=function({defaultProp:e,onChange:t}){let n=(0,s.useState)(e),[r]=n,i=(0,s.useRef)(r),o=h(t);return(0,s.useEffect)(()=>{i.current!==r&&(o(r),i.current=r)},[r,i,o]),n}({defaultProp:t,onChange:n}),o=void 0!==e,a=o?e:r,u=h(n);return[a,(0,s.useCallback)(t=>{if(o){let n="function"==typeof t?t(e):t;n!==e&&u(n)}else i(t)},[o,e,i,u])]}({prop:r,defaultProp:o,onChange:u});return(0,s.createElement)(E,{present:n||c},(0,s.createElement)(Q,(0,i.Z)({open:c},l,{ref:t,onClose:()=>d(!1),onPause:h(e.onPause),onResume:h(e.onResume),onSwipeStart:a(e.onSwipeStart,e=>{e.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:a(e.onSwipeMove,e=>{let{x:t,y:n}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","move"),e.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${t}px`),e.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${n}px`)}),onSwipeCancel:a(e.onSwipeCancel,e=>{e.currentTarget.setAttribute("data-swipe","cancel"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:a(e.onSwipeEnd,e=>{let{x:t,y:n}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","end"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${t}px`),e.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${n}px`),d(!1)})})))}),[K,U]=x(_,{onClose(){}}),Q=(0,s.forwardRef)((e,t)=>{let{__scopeToast:n,type:r="foreground",duration:l,open:c,onClose:f,onEscapeKeyDown:p,onPause:y,onResume:v,onSwipeStart:b,onSwipeMove:w,onSwipeCancel:g,onSwipeEnd:E,...C}=e,T=A(_,n),[P,S]=(0,s.useState)(null),R=(0,u.e)(t,e=>S(e)),x=(0,s.useRef)(null),D=(0,s.useRef)(null),F=l||T.duration,M=(0,s.useRef)(0),q=(0,s.useRef)(F),k=(0,s.useRef)(0),{onToastAdd:I,onToastRemove:j}=T,U=h(()=>{var e;(null==P?void 0:P.contains(document.activeElement))&&(null===(e=T.viewport)||void 0===e||e.focus()),f()}),Q=(0,s.useCallback)(e=>{e&&e!==1/0&&(window.clearTimeout(k.current),M.current=new Date().getTime(),k.current=window.setTimeout(U,e))},[U]);(0,s.useEffect)(()=>{let e=T.viewport;if(e){let t=()=>{Q(q.current),null==v||v()},n=()=>{let e=new Date().getTime()-M.current;q.current=q.current-e,window.clearTimeout(k.current),null==y||y()};return e.addEventListener(N,n),e.addEventListener(L,t),()=>{e.removeEventListener(N,n),e.removeEventListener(L,t)}}},[T.viewport,F,y,v,Q]),(0,s.useEffect)(()=>{c&&!T.isClosePausedRef.current&&Q(F)},[c,F,T.isClosePausedRef,Q]),(0,s.useEffect)(()=>(I(),()=>j()),[I,j]);let H=(0,s.useMemo)(()=>P?function e(t){let n=[];return Array.from(t.childNodes).forEach(t=>{if(t.nodeType===t.TEXT_NODE&&t.textContent&&n.push(t.textContent),t.nodeType===t.ELEMENT_NODE){let r=t.ariaHidden||t.hidden||"none"===t.style.display,i=""===t.dataset.radixToastAnnounceExclude;if(!r){if(i){let e=t.dataset.radixToastAnnounceAlt;e&&n.push(e)}else n.push(...e(t))}}}),n}(P):null,[P]);return T.viewport?(0,s.createElement)(s.Fragment,null,H&&(0,s.createElement)(W,{__scopeToast:n,role:"status","aria-live":"foreground"===r?"assertive":"polite","aria-atomic":!0},H),(0,s.createElement)(K,{scope:n,onClose:U},(0,o.createPortal)((0,s.createElement)(O.ItemSlot,{scope:n},(0,s.createElement)(m,{asChild:!0,onEscapeKeyDown:a(p,()=>{T.isFocusedToastEscapeKeyDownRef.current||U(),T.isFocusedToastEscapeKeyDownRef.current=!1})},(0,s.createElement)(d.WV.li,(0,i.Z)({role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":c?"open":"closed","data-swipe-direction":T.swipeDirection},C,{ref:R,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:a(e.onKeyDown,e=>{"Escape"!==e.key||(null==p||p(e.nativeEvent),e.nativeEvent.defaultPrevented||(T.isFocusedToastEscapeKeyDownRef.current=!0,U()))}),onPointerDown:a(e.onPointerDown,e=>{0===e.button&&(x.current={x:e.clientX,y:e.clientY})}),onPointerMove:a(e.onPointerMove,e=>{if(!x.current)return;let t=e.clientX-x.current.x,n=e.clientY-x.current.y,r=!!D.current,i=["left","right"].includes(T.swipeDirection),s=["left","up"].includes(T.swipeDirection)?Math.min:Math.max,o=i?s(0,t):0,a=i?0:s(0,n),u="touch"===e.pointerType?10:2,l={x:o,y:a},c={originalEvent:e,delta:l};r?(D.current=l,B("toast.swipeMove",w,c,{discrete:!1})):z(l,T.swipeDirection,u)?(D.current=l,B("toast.swipeStart",b,c,{discrete:!1}),e.target.setPointerCapture(e.pointerId)):(Math.abs(t)>u||Math.abs(n)>u)&&(x.current=null)}),onPointerUp:a(e.onPointerUp,e=>{let t=D.current,n=e.target;if(n.hasPointerCapture(e.pointerId)&&n.releasePointerCapture(e.pointerId),D.current=null,x.current=null,t){let n=e.currentTarget,r={originalEvent:e,delta:t};z(t,T.swipeDirection,T.swipeThreshold)?B("toast.swipeEnd",E,r,{discrete:!0}):B("toast.swipeCancel",g,r,{discrete:!0}),n.addEventListener("click",e=>e.preventDefault(),{once:!0})}})})))),T.viewport))):null});Q.propTypes={type:e=>e.type&&!["foreground","background"].includes(e.type)?Error(`Invalid prop \`type\` supplied to \`${_}\`. Expected \`foreground | background\`.`):null};let W=e=>{let{__scopeToast:t,children:n,...r}=e,i=A(_,t),[o,a]=(0,s.useState)(!1),[u,l]=(0,s.useState)(!1);return function(e=()=>{}){let t=h(e);g(()=>{let e=0,n=0;return e=window.requestAnimationFrame(()=>n=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(e),window.cancelAnimationFrame(n)}},[t])}(()=>a(!0)),(0,s.useEffect)(()=>{let e=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(e)},[]),u?null:(0,s.createElement)(w,{asChild:!0},(0,s.createElement)(T,r,o&&(0,s.createElement)(s.Fragment,null,i.label," ",n)))},H=(0,s.forwardRef)((e,t)=>{let{__scopeToast:n,...r}=e;return(0,s.createElement)(d.WV.div,(0,i.Z)({},r,{ref:t}))}),V=(0,s.forwardRef)((e,t)=>{let{__scopeToast:n,...r}=e;return(0,s.createElement)(d.WV.div,(0,i.Z)({},r,{ref:t}))}),Z=(0,s.forwardRef)((e,t)=>{let{altText:n,...r}=e;return n?(0,s.createElement)(G,{altText:n,asChild:!0},(0,s.createElement)($,(0,i.Z)({},r,{ref:t}))):null});Z.propTypes={altText:e=>e.altText?null:Error("Missing prop `altText` expected on `ToastAction`")};let $=(0,s.forwardRef)((e,t)=>{let{__scopeToast:n,...r}=e,o=U("ToastClose",n);return(0,s.createElement)(G,{asChild:!0},(0,s.createElement)(d.WV.button,(0,i.Z)({type:"button"},r,{ref:t,onClick:a(e.onClick,o.onClose)})))}),G=(0,s.forwardRef)((e,t)=>{let{__scopeToast:n,altText:r,...o}=e;return(0,s.createElement)(d.WV.div,(0,i.Z)({"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0},o,{ref:t}))});function B(e,t,n,{discrete:r}){let i=n.originalEvent.currentTarget,s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?(0,d.jH)(i,s):i.dispatchEvent(s)}let z=(e,t,n=0)=>{let r=Math.abs(e.x),i=Math.abs(e.y),s=r>i;return"left"===t||"right"===t?s&&r>n:!s&&i>n};function X(e){let t=document.activeElement;return e.some(e=>e===t||(e.focus(),document.activeElement!==t))}let Y=M,J=k,ee=j,et=H,en=V,er=Z,ei=$},43427:function(e,t,n){"use strict";n.d(t,{S:function(){return K}});var r={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},i=new class{#e=r;#t=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}},s="undefined"==typeof window||"Deno"in globalThis;function o(){}function a(e,t){return"function"==typeof e?e(t):e}function u(e,t){let{type:n="all",exact:r,fetchStatus:i,predicate:s,queryKey:o,stale:a}=e;if(o){if(r){if(t.queryHash!==c(o,t.options))return!1}else if(!h(t.queryKey,o))return!1}if("all"!==n){let e=t.isActive();if("active"===n&&!e||"inactive"===n&&e)return!1}return("boolean"!=typeof a||t.isStale()===a)&&(!i||i===t.state.fetchStatus)&&(!s||!!s(t))}function l(e,t){let{exact:n,status:r,predicate:i,mutationKey:s}=e;if(s){if(!t.options.mutationKey)return!1;if(n){if(d(t.options.mutationKey)!==d(s))return!1}else if(!h(t.options.mutationKey,s))return!1}return(!r||t.state.status===r)&&(!i||!!i(t))}function c(e,t){return(t?.queryKeyHashFn||d)(e)}function d(e){return JSON.stringify(e,(e,t)=>m(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function h(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(n=>h(e[n],t[n]))}var f=Object.prototype.hasOwnProperty;function p(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function m(e){if(!y(e))return!1;let t=e.constructor;if(void 0===t)return!0;let n=t.prototype;return!!(y(n)&&n.hasOwnProperty("isPrototypeOf"))&&Object.getPrototypeOf(e)===Object.prototype}function y(e){return"[object Object]"===Object.prototype.toString.call(e)}function v(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function b(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var w=Symbol();function g(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==w?e.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`))}var E=function(e){setTimeout(e,0)},C=function(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=E,s=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{--t||o()}return n},batchCalls:e=>(...t)=>{s(()=>{e(...t)})},schedule:s,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}(),T=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},P=new class extends T{#n;#r;#i;constructor(){super(),this.#i=e=>{if(!s&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#r||this.setEventListener(this.#i)}onUnsubscribe(){this.hasListeners()||(this.#r?.(),this.#r=void 0)}setEventListener(e){this.#i=e,this.#r?.(),this.#r=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){this.#n!==e&&(this.#n=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#n?this.#n:globalThis.document?.visibilityState!=="hidden"}},O=new class extends T{#s=!0;#r;#i;constructor(){super(),this.#i=e=>{if(!s&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",n)}}}}onSubscribe(){this.#r||this.setEventListener(this.#i)}onUnsubscribe(){this.hasListeners()||(this.#r?.(),this.#r=void 0)}setEventListener(e){this.#i=e,this.#r?.(),this.#r=e(this.setOnline.bind(this))}setOnline(e){this.#s!==e&&(this.#s=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#s}};function S(e){return Math.min(1e3*2**e,3e4)}function R(e){return(e??"online")!=="online"||O.isOnline()}var x=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function D(e){let t,n=!1,r=0,o=function(){let e,t;let n=new Promise((n,r)=>{e=n,t=r});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.status="pending",n.catch(()=>{}),n.resolve=t=>{r({status:"fulfilled",value:t}),e(t)},n.reject=e=>{r({status:"rejected",reason:e}),t(e)},n}(),a=()=>"pending"!==o.status,u=()=>P.isFocused()&&("always"===e.networkMode||O.isOnline())&&e.canRun(),l=()=>R(e.networkMode)&&e.canRun(),c=e=>{a()||(t?.(),o.resolve(e))},d=e=>{a()||(t?.(),o.reject(e))},h=()=>new Promise(n=>{t=e=>{(a()||u())&&n(e)},e.onPause?.()}).then(()=>{t=void 0,a()||e.onContinue?.()}),f=()=>{let t;if(a())return;let o=0===r?e.initialPromise:void 0;try{t=o??e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(c).catch(t=>{if(a())return;let o=e.retry??(s?0:3),l=e.retryDelay??S,c="function"==typeof l?l(r,t):l,p=!0===o||"number"==typeof o&&r{i.setTimeout(e,c)}).then(()=>u()?void 0:h()).then(()=>{n?d(t):f()})})};return{promise:o,status:()=>o.status,cancel:t=>{if(!a()){let n=new x(t);d(n),e.onCancel?.(n)}},continue:()=>(t?.(),o),cancelRetry:()=>{n=!0},continueRetry:()=>{n=!1},canStart:l,start:()=>(l()?f():h().then(f),o)}}var F=class{#o;destroy(){this.clearGcTimeout()}scheduleGc(){var e;this.clearGcTimeout(),"number"==typeof(e=this.gcTime)&&e>=0&&e!==1/0&&(this.#o=i.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(s?1/0:3e5))}clearGcTimeout(){this.#o&&(i.clearTimeout(this.#o),this.#o=void 0)}},A=class extends F{#a;#u;#l;#c;#d;#h;#f;constructor(e){super(),this.#f=!1,this.#h=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#c=e.client,this.#l=this.#c.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#a=q(this.options),this.state=e.state??this.#a,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#d?.promise}setOptions(e){if(this.options={...this.#h,...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=q(this.options);void 0!==e.data&&(this.setState(M(e.data,e.dataUpdatedAt)),this.#a=e)}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#l.remove(this)}setData(e,t){var n,r;let i=(n=this.state.data,"function"==typeof(r=this.options).structuralSharing?r.structuralSharing(n,e):!1!==r.structuralSharing?function e(t,n,r=0){if(t===n)return t;if(r>500)return n;let i=p(t)&&p(n);if(!i&&!(m(t)&&m(n)))return n;let s=(i?t:Object.keys(t)).length,o=i?n:Object.keys(n),a=o.length,u=i?Array(a):{},l=0;for(let c=0;c{var t;return!1!==("function"==typeof(t=e.options.enabled)?t(this):t)})}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===w||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===a(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(e=0){return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!Math.max(this.state.dataUpdatedAt+(e||0)-Date.now(),0))}onFocus(){let e=this.observers.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#d?.continue()}onOnline(){let e=this.observers.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#d?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#l.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#d&&(this.#f?this.#d.cancel({revert:!0}):this.#d.cancelRetry()),this.scheduleGc()),this.#l.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#p({type:"invalidate"})}async fetch(e,t){if("idle"!==this.state.fetchStatus&&this.#d?.status()!=="rejected"){if(void 0!==this.state.data&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#d)return this.#d.continueRetry(),this.#d.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#f=!0,n.signal)})},i=()=>{let e=g(this.options,t),n=(()=>{let e={client:this.#c,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return(this.#f=!1,this.options.persister)?this.options.persister(e,n,this):e(n)},s=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#c,state:this.state,fetchFn:i};return r(e),e})();this.options.behavior?.onFetch(s,this),this.#u=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==s.fetchOptions?.meta)&&this.#p({type:"fetch",meta:s.fetchOptions?.meta}),this.#d=D({initialPromise:t?.initialPromise,fn:s.fetchFn,onCancel:e=>{e instanceof x&&e.revert&&this.setState({...this.#u,fetchStatus:"idle"}),n.abort()},onFail:(e,t)=>{this.#p({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#p({type:"pause"})},onContinue:()=>{this.#p({type:"continue"})},retry:s.options.retry,retryDelay:s.options.retryDelay,networkMode:s.options.networkMode,canRun:()=>!0});try{let e=await this.#d.start();if(void 0===e)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#l.config.onSuccess?.(e,this),this.#l.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof x){if(e.silent)return this.#d.promise;if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw this.#p({type:"error",error:e}),this.#l.config.onError?.(e,this),this.#l.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#p(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":var n;return{...t,...(n=t.data,{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:R(this.options.networkMode)?"fetching":"paused",...void 0===n&&{error:null,status:"pending"}}),fetchMeta:e.meta??null};case"success":let r={...t,...M(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#u=e.manual?r:void 0,r;case"error":let i=e.error;return{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),C.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#l.notify({query:this,type:"updated",action:e})})}};function M(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function q(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,n=void 0!==t,r=n?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var N=class extends T{constructor(e={}){super(),this.config=e,this.#m=new Map}#m;build(e,t,n){let r=t.queryKey,i=t.queryHash??c(r,t),s=this.get(i);return s||(s=new A({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(s)),s}add(e){this.#m.has(e.queryHash)||(this.#m.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#m.get(e.queryHash);t&&(e.destroy(),t===e&&this.#m.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){C.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#m.get(e)}getAll(){return[...this.#m.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>u(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>u(e,t)):t}notify(e){C.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){C.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){C.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},L=class extends F{#c;#y;#v;#d;constructor(e){super(),this.#c=e.client,this.mutationId=e.mutationId,this.#v=e.mutationCache,this.#y=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#y.includes(e)||(this.#y.push(e),this.clearGcTimeout(),this.#v.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#y=this.#y.filter(t=>t!==e),this.scheduleGc(),this.#v.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#y.length||("pending"===this.state.status?this.scheduleGc():this.#v.remove(this))}continue(){return this.#d?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#p({type:"continue"})},n={client:this.#c,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#d=D({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#p({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#p({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#v.canRun(this)});let r="pending"===this.state.status,i=!this.#d.canStart();try{if(r)t();else{this.#p({type:"pending",variables:e,isPaused:i}),this.#v.config.onMutate&&await this.#v.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#p({type:"pending",context:t,variables:e,isPaused:i})}let s=await this.#d.start();return await this.#v.config.onSuccess?.(s,e,this.state.context,this,n),await this.options.onSuccess?.(s,e,this.state.context,n),await this.#v.config.onSettled?.(s,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(s,null,e,this.state.context,n),this.#p({type:"success",data:s}),s}catch(t){try{await this.#v.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#v.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#p({type:"error",error:t}),t}finally{this.#v.runNext(this)}}#p(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),C.batch(()=>{this.#y.forEach(t=>{t.onMutationUpdate(e)}),this.#v.notify({mutation:this,type:"updated",action:e})})}},k=class extends T{constructor(e={}){super(),this.config=e,this.#b=new Set,this.#w=new Map,this.#g=0}#b;#w;#g;build(e,t,n){let r=new L({client:e,mutationCache:this,mutationId:++this.#g,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#b.add(e);let t=I(e);if("string"==typeof t){let n=this.#w.get(t);n?n.push(e):this.#w.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#b.delete(e)){let t=I(e);if("string"==typeof t){let n=this.#w.get(t);if(n){if(n.length>1){let t=n.indexOf(e);-1!==t&&n.splice(t,1)}else n[0]===e&&this.#w.delete(t)}}}this.notify({type:"removed",mutation:e})}canRun(e){let t=I(e);if("string"!=typeof t)return!0;{let n=this.#w.get(t),r=n?.find(e=>"pending"===e.state.status);return!r||r===e}}runNext(e){let t=I(e);if("string"!=typeof t)return Promise.resolve();{let n=this.#w.get(t)?.find(t=>t!==e&&t.state.isPaused);return n?.continue()??Promise.resolve()}}clear(){C.batch(()=>{this.#b.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#b.clear(),this.#w.clear()})}getAll(){return Array.from(this.#b)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>l(t,e))}findAll(e={}){return this.getAll().filter(t=>l(e,t))}notify(e){C.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return C.batch(()=>Promise.all(e.map(e=>e.continue().catch(o))))}};function I(e){return e.options.scope?.id}function _(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,s=t.state.data?.pages||[],o=t.state.data?.pageParams||[],a={pages:[],pageParams:[]},u=0,l=async()=>{let n=!1,l=e=>{var r,i;let s,o;r=()=>t.signal,i=()=>n=!0,o=!1,Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(s??=r(),o||(o=!0,s.aborted?i():s.addEventListener("abort",i,{once:!0})),s)})},c=g(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject();if(null==r&&e.pages.length)return Promise.resolve(e);let s=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?"backward":"forward",meta:t.options.meta};return l(e),e})(),o=await c(s),{maxPages:a}=t.options,u=i?b:v;return{pages:u(e.pages,o,a),pageParams:u(e.pageParams,r,a)}};if(i&&s.length){let e="backward"===i,t={pages:s,pageParams:o},n=(e?function(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}:j)(r,t);a=await d(t,n,e)}else{let t=e??s.length;do{let e=0===u?o[0]??r.initialPageParam:j(r,a);if(u>0&&null==e)break;a=await d(a,e),u++}while(ut.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=l}}}function j(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}var K=class{#E;#v;#h;#C;#T;#P;#O;#S;constructor(e={}){this.#E=e.queryCache||new N,this.#v=e.mutationCache||new k,this.#h=e.defaultOptions||{},this.#C=new Map,this.#T=new Map,this.#P=0}mount(){this.#P++,1===this.#P&&(this.#O=P.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#E.onFocus())}),this.#S=O.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#E.onOnline())}))}unmount(){this.#P--,0===this.#P&&(this.#O?.(),this.#O=void 0,this.#S?.(),this.#S=void 0)}isFetching(e){return this.#E.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#v.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#E.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#E.build(this,t),r=n.state.data;return void 0===r?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(a(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#E.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#E.get(r.queryHash),s=i?.state.data,o="function"==typeof t?t(s):t;if(void 0!==o)return this.#E.build(this,r).setData(o,{...n,manual:!0})}setQueriesData(e,t,n){return C.batch(()=>this.#E.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#E.get(t.queryHash)?.state}removeQueries(e){let t=this.#E;C.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#E;return C.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t};return Promise.all(C.batch(()=>this.#E.findAll(e).map(e=>e.cancel(n)))).then(o).catch(o)}invalidateQueries(e,t={}){return C.batch(()=>(this.#E.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType==="none")?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0};return Promise.all(C.batch(()=>this.#E.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(o)),"paused"===e.state.fetchStatus?Promise.resolve():t}))).then(o)}fetchQuery(e){let t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);let n=this.#E.build(this,t);return n.isStaleByTime(a(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(o).catch(o)}fetchInfiniteQuery(e){return e.behavior=_(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(o).catch(o)}ensureInfiniteQueryData(e){return e.behavior=_(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return O.isOnline()?this.#v.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#E}getMutationCache(){return this.#v}getDefaultOptions(){return this.#h}setDefaultOptions(e){this.#h=e}setQueryDefaults(e,t){this.#C.set(d(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#C.values()],n={};return t.forEach(t=>{h(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#T.set(d(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#T.values()],n={};return t.forEach(t=>{h(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#h.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=c(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===w&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#h.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#E.clear(),this.#v.clear()}}},29827:function(e,t,n){"use strict";n.d(t,{aH:function(){return o}});var r=n(2265),i=n(57437),s=r.createContext(void 0),o=e=>{let{client:t,children:n}=e;return r.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),(0,i.jsx)(s.Provider,{value:t,children:n})}},90535:function(e,t,n){"use strict";n.d(t,{j:function(){return o}});var r=n(61994);let i=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,s=r.W,o=(e,t)=>n=>{var r;if((null==t?void 0:t.variants)==null)return s(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:o,defaultVariants:a}=t,u=Object.keys(o).map(e=>{let t=null==n?void 0:n[e],r=null==a?void 0:a[e];if(null===t)return null;let s=i(t)||i(r);return o[e][s]}),l=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e},{});return s(e,u,null==t?void 0:null===(r=t.compoundVariants)||void 0===r?void 0:r.reduce((e,t)=>{let{class:n,className:r,...i}=t;return Object.entries(i).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...a,...l}[t]):({...a,...l})[t]===n})?[...e,n,r]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}}}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/680-fccc5c9a67328074.js b/phase-1-core-infra/frontend/.next/static/chunks/680-fccc5c9a67328074.js new file mode 100644 index 0000000000000000000000000000000000000000..679750db0d2c3855b54b11aeefd547bcaae3496e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/680-fccc5c9a67328074.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[680],{61134:function(t,e,n){var r;!function(o){"use strict";var i,a={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},u=!0,c="[DecimalError] ",l=c+"Invalid argument: ",s=c+"Exponent out of range: ",f=Math.floor,p=Math.pow,h=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d=f(1286742750677284.5),y={};function v(t,e){var n,r,o,i,a,c,l,s,f=t.constructor,p=f.precision;if(!t.s||!e.s)return e.s||(e=new f(t)),u?E(e,p):e;if(l=t.d,s=e.d,a=t.e,o=e.e,l=l.slice(),i=a-o){for(i<0?(r=l,i=-i,c=s.length):(r=s,o=a,c=l.length),i>(c=(a=Math.ceil(p/7))>c?a+1:c+1)&&(i=c,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for((c=l.length)-(i=s.length)<0&&(i=c,r=s,s=l,l=r),n=0;i;)n=(l[--i]=l[i]+s[i]+n)/1e7|0,l[i]%=1e7;for(n&&(l.unshift(n),++o),c=l.length;0==l[--c];)l.pop();return e.d=l,e.e=o,u?E(e,p):e}function m(t,e,n){if(t!==~~t||tn)throw Error(l+t)}function g(t){var e,n,r,o=t.length-1,i="",a=t[0];if(o>0){for(i+=a,e=1;et.e^this.s<0?1:-1;for(e=0,n=(r=this.d.length)<(o=t.d.length)?r:o;et.d[e]^this.s<0?1:-1;return r===o?0:r>o^this.s<0?1:-1},y.decimalPlaces=y.dp=function(){var t=this.d.length-1,e=(t-this.e)*7;if(t=this.d[t])for(;t%10==0;t/=10)e--;return e<0?0:e},y.dividedBy=y.div=function(t){return b(this,new this.constructor(t))},y.dividedToIntegerBy=y.idiv=function(t){var e=this.constructor;return E(b(this,new e(t),0,1),e.precision)},y.equals=y.eq=function(t){return!this.cmp(t)},y.exponent=function(){return O(this)},y.greaterThan=y.gt=function(t){return this.cmp(t)>0},y.greaterThanOrEqualTo=y.gte=function(t){return this.cmp(t)>=0},y.isInteger=y.isint=function(){return this.e>this.d.length-2},y.isNegative=y.isneg=function(){return this.s<0},y.isPositive=y.ispos=function(){return this.s>0},y.isZero=function(){return 0===this.s},y.lessThan=y.lt=function(t){return 0>this.cmp(t)},y.lessThanOrEqualTo=y.lte=function(t){return 1>this.cmp(t)},y.logarithm=y.log=function(t){var e,n=this.constructor,r=n.precision,o=r+5;if(void 0===t)t=new n(10);else if((t=new n(t)).s<1||t.eq(i))throw Error(c+"NaN");if(this.s<1)throw Error(c+(this.s?"NaN":"-Infinity"));return this.eq(i)?new n(0):(u=!1,e=b(S(this,o),S(t,o),o),u=!0,E(e,r))},y.minus=y.sub=function(t){return t=new this.constructor(t),this.s==t.s?P(this,t):v(this,(t.s=-t.s,t))},y.modulo=y.mod=function(t){var e,n=this.constructor,r=n.precision;if(!(t=new n(t)).s)throw Error(c+"NaN");return this.s?(u=!1,e=b(this,t,0,1).times(t),u=!0,this.minus(e)):E(new n(this),r)},y.naturalExponential=y.exp=function(){return x(this)},y.naturalLogarithm=y.ln=function(){return S(this)},y.negated=y.neg=function(){var t=new this.constructor(this);return t.s=-t.s||0,t},y.plus=y.add=function(t){return t=new this.constructor(t),this.s==t.s?v(this,t):P(this,(t.s=-t.s,t))},y.precision=y.sd=function(t){var e,n,r;if(void 0!==t&&!!t!==t&&1!==t&&0!==t)throw Error(l+t);if(e=O(this)+1,n=7*(r=this.d.length-1)+1,r=this.d[r]){for(;r%10==0;r/=10)n--;for(r=this.d[0];r>=10;r/=10)n++}return t&&e>n?e:n},y.squareRoot=y.sqrt=function(){var t,e,n,r,o,i,a,l=this.constructor;if(this.s<1){if(!this.s)return new l(0);throw Error(c+"NaN")}for(t=O(this),u=!1,0==(o=Math.sqrt(+this))||o==1/0?(((e=g(this.d)).length+t)%2==0&&(e+="0"),o=Math.sqrt(e),t=f((t+1)/2)-(t<0||t%2),r=new l(e=o==1/0?"5e"+t:(e=o.toExponential()).slice(0,e.indexOf("e")+1)+t)):r=new l(o.toString()),o=a=(n=l.precision)+3;;)if(r=(i=r).plus(b(this,i,a+2)).times(.5),g(i.d).slice(0,a)===(e=g(r.d)).slice(0,a)){if(e=e.slice(a-3,a+1),o==a&&"4999"==e){if(E(i,n+1,0),i.times(i).eq(this)){r=i;break}}else if("9999"!=e)break;a+=4}return u=!0,E(r,n)},y.times=y.mul=function(t){var e,n,r,o,i,a,c,l,s,f=this.constructor,p=this.d,h=(t=new f(t)).d;if(!this.s||!t.s)return new f(0);for(t.s*=this.s,n=this.e+t.e,(l=p.length)<(s=h.length)&&(i=p,p=h,h=i,a=l,l=s,s=a),i=[],r=a=l+s;r--;)i.push(0);for(r=s;--r>=0;){for(e=0,o=l+r;o>r;)c=i[o]+h[r]*p[o-r-1]+e,i[o--]=c%1e7|0,e=c/1e7|0;i[o]=(i[o]+e)%1e7|0}for(;!i[--a];)i.pop();return e?++n:i.shift(),t.d=i,t.e=n,u?E(t,f.precision):t},y.toDecimalPlaces=y.todp=function(t,e){var n=this,r=n.constructor;return(n=new r(n),void 0===t)?n:(m(t,0,1e9),void 0===e?e=r.rounding:m(e,0,8),E(n,t+O(n)+1,e))},y.toExponential=function(t,e){var n,r=this,o=r.constructor;return void 0===t?n=k(r,!0):(m(t,0,1e9),void 0===e?e=o.rounding:m(e,0,8),n=k(r=E(new o(r),t+1,e),!0,t+1)),n},y.toFixed=function(t,e){var n,r,o=this.constructor;return void 0===t?k(this):(m(t,0,1e9),void 0===e?e=o.rounding:m(e,0,8),n=k((r=E(new o(this),t+O(this)+1,e)).abs(),!1,t+O(r)+1),this.isneg()&&!this.isZero()?"-"+n:n)},y.toInteger=y.toint=function(){var t=this.constructor;return E(new t(this),O(this)+1,t.rounding)},y.toNumber=function(){return+this},y.toPower=y.pow=function(t){var e,n,r,o,a,l,s=this,p=s.constructor,h=+(t=new p(t));if(!t.s)return new p(i);if(!(s=new p(s)).s){if(t.s<1)throw Error(c+"Infinity");return s}if(s.eq(i))return s;if(r=p.precision,t.eq(i))return E(s,r);if(l=(e=t.e)>=(n=t.d.length-1),a=s.s,l){if((n=h<0?-h:h)<=9007199254740991){for(o=new p(i),e=Math.ceil(r/7+4),u=!1;n%2&&_((o=o.times(s)).d,e),0!==(n=f(n/2));)_((s=s.times(s)).d,e);return u=!0,t.s<0?new p(i).div(o):E(o,r)}}else if(a<0)throw Error(c+"NaN");return a=a<0&&1&t.d[Math.max(e,n)]?-1:1,s.s=1,u=!1,o=t.times(S(s,r+12)),u=!0,(o=x(o)).s=a,o},y.toPrecision=function(t,e){var n,r,o=this,i=o.constructor;return void 0===t?(n=O(o),r=k(o,n<=i.toExpNeg||n>=i.toExpPos)):(m(t,1,1e9),void 0===e?e=i.rounding:m(e,0,8),n=O(o=E(new i(o),t,e)),r=k(o,t<=n||n<=i.toExpNeg,t)),r},y.toSignificantDigits=y.tosd=function(t,e){var n=this.constructor;return void 0===t?(t=n.precision,e=n.rounding):(m(t,1,1e9),void 0===e?e=n.rounding:m(e,0,8)),E(new n(this),t,e)},y.toString=y.valueOf=y.val=y.toJSON=function(){var t=O(this),e=this.constructor;return k(this,t<=e.toExpNeg||t>=e.toExpPos)};var b=function(){function t(t,e){var n,r=0,o=t.length;for(t=t.slice();o--;)n=t[o]*e+r,t[o]=n%1e7|0,r=n/1e7|0;return r&&t.unshift(r),t}function e(t,e,n,r){var o,i;if(n!=r)i=n>r?1:-1;else for(o=i=0;oe[o]?1:-1;break}return i}function n(t,e,n){for(var r=0;n--;)t[n]-=r,r=t[n]1;)t.shift()}return function(r,o,i,a){var u,l,s,f,p,h,d,y,v,m,g,b,x,w,j,S,A,P,k=r.constructor,_=r.s==o.s?1:-1,T=r.d,M=o.d;if(!r.s)return new k(r);if(!o.s)throw Error(c+"Division by zero");for(s=0,l=r.e-o.e,A=M.length,j=T.length,y=(d=new k(_)).d=[];M[s]==(T[s]||0);)++s;if(M[s]>(T[s]||0)&&--l,(b=null==i?i=k.precision:a?i+(O(r)-O(o))+1:i)<0)return new k(0);if(b=b/7+2|0,s=0,1==A)for(f=0,M=M[0],b++;(s1&&(M=t(M,f),T=t(T,f),A=M.length,j=T.length),w=A,m=(v=T.slice(0,A)).length;m=1e7/2&&++S;do f=0,(u=e(M,v,A,m))<0?(g=v[0],A!=m&&(g=1e7*g+(v[1]||0)),(f=g/S|0)>1?(f>=1e7&&(f=1e7-1),h=(p=t(M,f)).length,m=v.length,1==(u=e(p,v,h,m))&&(f--,n(p,A16)throw Error(s+O(t));if(!t.s)return new h(i);for(null==e?(u=!1,c=d):c=e,a=new h(.03125);t.abs().gte(.1);)t=t.times(a),f+=5;for(c+=Math.log(p(2,f))/Math.LN10*2+5|0,n=r=o=new h(i),h.precision=c;;){if(r=E(r.times(t),c),n=n.times(++l),g((a=o.plus(b(r,n,c))).d).slice(0,c)===g(o.d).slice(0,c)){for(;f--;)o=E(o.times(o),c);return h.precision=d,null==e?(u=!0,E(o,d)):o}o=a}}function O(t){for(var e=7*t.e,n=t.d[0];n>=10;n/=10)e++;return e}function w(t,e,n){if(e>t.LN10.sd())throw u=!0,n&&(t.precision=n),Error(c+"LN10 precision limit exceeded");return E(new t(t.LN10),e)}function j(t){for(var e="";t--;)e+="0";return e}function S(t,e){var n,r,o,a,l,s,f,p,h,d=1,y=t,v=y.d,m=y.constructor,x=m.precision;if(y.s<1)throw Error(c+(y.s?"NaN":"-Infinity"));if(y.eq(i))return new m(0);if(null==e?(u=!1,p=x):p=e,y.eq(10))return null==e&&(u=!0),w(m,p);if(p+=10,m.precision=p,r=(n=g(v)).charAt(0),!(15e14>Math.abs(a=O(y))))return f=w(m,p+2,x).times(a+""),y=S(new m(r+"."+n.slice(1)),p-10).plus(f),m.precision=x,null==e?(u=!0,E(y,x)):y;for(;r<7&&1!=r||1==r&&n.charAt(1)>3;)r=(n=g((y=y.times(t)).d)).charAt(0),d++;for(a=O(y),r>1?(y=new m("0."+n),a++):y=new m(r+"."+n.slice(1)),s=l=y=b(y.minus(i),y.plus(i),p),h=E(y.times(y),p),o=3;;){if(l=E(l.times(h),p),g((f=s.plus(b(l,new m(o),p))).d).slice(0,p)===g(s.d).slice(0,p))return s=s.times(2),0!==a&&(s=s.plus(w(m,p+2,x).times(a+""))),s=b(s,new m(d),p),m.precision=x,null==e?(u=!0,E(s,x)):s;s=f,o+=2}}function A(t,e){var n,r,o;for((n=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(n<0&&(n=r),n+=+e.slice(r+1),e=e.substring(0,r)):n<0&&(n=e.length),r=0;48===e.charCodeAt(r);)++r;for(o=e.length;48===e.charCodeAt(o-1);)--o;if(e=e.slice(r,o)){if(o-=r,n=n-r-1,t.e=f(n/7),t.d=[],r=(n+1)%7,n<0&&(r+=7),rd||t.e<-d))throw Error(s+n)}else t.s=0,t.e=0,t.d=[0];return t}function E(t,e,n){var r,o,i,a,c,l,h,y,v=t.d;for(a=1,i=v[0];i>=10;i/=10)a++;if((r=e-a)<0)r+=7,o=e,h=v[y=0];else{if((y=Math.ceil((r+1)/7))>=(i=v.length))return t;for(a=1,h=i=v[y];i>=10;i/=10)a++;r%=7,o=r-7+a}if(void 0!==n&&(c=h/(i=p(10,a-o-1))%10|0,l=e<0||void 0!==v[y+1]||h%i,l=n<4?(c||l)&&(0==n||n==(t.s<0?3:2)):c>5||5==c&&(4==n||l||6==n&&(r>0?o>0?h/p(10,a-o):0:v[y-1])%10&1||n==(t.s<0?8:7))),e<1||!v[0])return l?(i=O(t),v.length=1,e=e-i-1,v[0]=p(10,(7-e%7)%7),t.e=f(-e/7)||0):(v.length=1,v[0]=t.e=t.s=0),t;if(0==r?(v.length=y,i=1,y--):(v.length=y+1,i=p(10,7-r),v[y]=o>0?(h/p(10,a-o)%p(10,o)|0)*i:0),l)for(;;){if(0==y){1e7==(v[0]+=i)&&(v[0]=1,++t.e);break}if(v[y]+=i,1e7!=v[y])break;v[y--]=0,i=1}for(r=v.length;0===v[--r];)v.pop();if(u&&(t.e>d||t.e<-d))throw Error(s+O(t));return t}function P(t,e){var n,r,o,i,a,c,l,s,f,p,h=t.constructor,d=h.precision;if(!t.s||!e.s)return e.s?e.s=-e.s:e=new h(t),u?E(e,d):e;if(l=t.d,p=e.d,r=e.e,s=t.e,l=l.slice(),a=s-r){for((f=a<0)?(n=l,a=-a,c=p.length):(n=p,r=s,c=l.length),a>(o=Math.max(Math.ceil(d/7),c)+2)&&(a=o,n.length=1),n.reverse(),o=a;o--;)n.push(0);n.reverse()}else{for((f=(o=l.length)<(c=p.length))&&(c=o),o=0;o0;--o)l[c++]=0;for(o=p.length;o>a;){if(l[--o]0?i=i.charAt(0)+"."+i.slice(1)+j(r):a>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(o<0?"e":"e+")+o):o<0?(i="0."+j(-o-1)+i,n&&(r=n-a)>0&&(i+=j(r))):o>=a?(i+=j(o+1-a),n&&(r=n-o-1)>0&&(i=i+"."+j(r))):((r=o+1)0&&(o+1===a&&(i+="."),i+=j(r))),t.s<0?"-"+i:i}function _(t,e){if(t.length>e)return t.length=e,!0}function T(t){if(!t||"object"!=typeof t)throw Error(c+"Object expected");var e,n,r,o=["precision",1,1e9,"rounding",0,8,"toExpNeg",-1/0,0,"toExpPos",0,1/0];for(e=0;e=o[e+1]&&r<=o[e+2])this[n]=r;else throw Error(l+n+": "+r)}if(void 0!==(r=t[n="LN10"])){if(r==Math.LN10)this[n]=new this(r);else throw Error(l+n+": "+r)}return this}(a=function t(e){var n,r,o;function i(t){if(!(this instanceof i))return new i(t);if(this.constructor=i,t instanceof i){this.s=t.s,this.e=t.e,this.d=(t=t.d)?t.slice():t;return}if("number"==typeof t){if(0*t!=0)throw Error(l+t);if(t>0)this.s=1;else if(t<0)t=-t,this.s=-1;else{this.s=0,this.e=0,this.d=[0];return}if(t===~~t&&t<1e7){this.e=0,this.d=[t];return}return A(this,t.toString())}if("string"!=typeof t)throw Error(l+t);if(45===t.charCodeAt(0)?(t=t.slice(1),this.s=-1):this.s=1,h.test(t))A(this,t);else throw Error(l+t)}if(i.prototype=y,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=t,i.config=i.set=T,void 0===e&&(e={}),e)for(n=0,o=["precision","rounding","toExpNeg","toExpPos","LN10"];n-1}},56883:function(t){t.exports=function(t,e,n){for(var r=-1,o=null==t?0:t.length;++r0&&i(s)?n>1?t(s,n-1,i,a,u):r(u,s):a||(u[u.length]=s)}return u}},63321:function(t,e,n){var r=n(33023)();t.exports=r},98060:function(t,e,n){var r=n(63321),o=n(43228);t.exports=function(t,e){return t&&r(t,e,o)}},92167:function(t,e,n){var r=n(67906),o=n(70235);t.exports=function(t,e){e=r(e,t);for(var n=0,i=e.length;null!=t&&ne}},93012:function(t){t.exports=function(t,e){return null!=t&&e in Object(t)}},47909:function(t,e,n){var r=n(8235),o=n(31953),i=n(35281);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},90370:function(t,e,n){var r=n(54506),o=n(10303);t.exports=function(t){return o(t)&&"[object Arguments]"==r(t)}},56318:function(t,e,n){var r=n(6791),o=n(10303);t.exports=function t(e,n,i,a,u){return e===n||(null!=e&&null!=n&&(o(e)||o(n))?r(e,n,i,a,t,u):e!=e&&n!=n)}},6791:function(t,e,n){var r=n(85885),o=n(97638),i=n(88030),a=n(64974),u=n(81690),c=n(25614),l=n(98051),s=n(9792),f="[object Arguments]",p="[object Array]",h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,y,v,m){var g=c(t),b=c(e),x=g?p:u(t),O=b?p:u(e);x=x==f?h:x,O=O==f?h:O;var w=x==h,j=O==h,S=x==O;if(S&&l(t)){if(!l(e))return!1;g=!0,w=!1}if(S&&!w)return m||(m=new r),g||s(t)?o(t,e,n,y,v,m):i(t,e,x,n,y,v,m);if(!(1&n)){var A=w&&d.call(t,"__wrapped__"),E=j&&d.call(e,"__wrapped__");if(A||E){var P=A?t.value():t,k=E?e.value():e;return m||(m=new r),v(P,k,n,y,m)}}return!!S&&(m||(m=new r),a(t,e,n,y,v,m))}},62538:function(t,e,n){var r=n(85885),o=n(56318);t.exports=function(t,e,n,i){var a=n.length,u=a,c=!i;if(null==t)return!u;for(t=Object(t);a--;){var l=n[a];if(c&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++ao?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(o);++r=200){var y=e?null:u(t);if(y)return c(y);p=!1,s=a,d=new r}else d=e?[]:h;t:for(;++l=o?t:r(t,e,n)}},1536:function(t,e,n){var r=n(78371);t.exports=function(t,e){if(t!==e){var n=void 0!==t,o=null===t,i=t==t,a=r(t),u=void 0!==e,c=null===e,l=e==e,s=r(e);if(!c&&!s&&!a&&t>e||a&&u&&l&&!c&&!s||o&&u&&l||!n&&l||!i)return 1;if(!o&&!a&&!s&&t=c)return l;return l*("desc"==n[o]?-1:1)}}return t.index-e.index}},92077:function(t,e,n){var r=n(74288)["__core-js_shared__"];t.exports=r},97930:function(t,e,n){var r=n(5629);t.exports=function(t,e){return function(n,o){if(null==n)return n;if(!r(n))return t(n,o);for(var i=n.length,a=e?i:-1,u=Object(n);(e?a--:++a-1?u[c?e[l]:l]:void 0}}},35464:function(t,e,n){var r=n(19608),o=n(49639),i=n(175);t.exports=function(t){return function(e,n,a){return a&&"number"!=typeof a&&o(e,n,a)&&(n=a=void 0),e=i(e),void 0===n?(n=e,e=0):n=i(n),a=void 0===a?es))return!1;var p=c.get(t),h=c.get(e);if(p&&h)return p==e&&h==t;var d=-1,y=!0,v=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++d-1&&t%1==0&&t-1}},13368:function(t,e,n){var r=n(24457);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},38764:function(t,e,n){var r=n(9855),o=n(99078),i=n(88675);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},78615:function(t,e,n){var r=n(1507);t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},83391:function(t,e,n){var r=n(1507);t.exports=function(t){return r(this,t).get(t)}},53483:function(t,e,n){var r=n(1507);t.exports=function(t){return r(this,t).has(t)}},74724:function(t,e,n){var r=n(1507);t.exports=function(t,e){var n=r(this,t),o=n.size;return n.set(t,e),this.size+=n.size==o?0:1,this}},22523:function(t){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}},47073:function(t){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},23787:function(t,e,n){var r=n(50967);t.exports=function(t){var e=r(t,function(t){return 500===n.size&&n.clear(),t}),n=e.cache;return e}},20453:function(t,e,n){var r=n(39866)(Object,"create");t.exports=r},77184:function(t,e,n){var r=n(45070)(Object.keys,Object);t.exports=r},39931:function(t,e,n){t=n.nmd(t);var r=n(17071),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,a=i&&i.exports===o&&r.process,u=function(){try{var t=i&&i.require&&i.require("util").types;if(t)return t;return a&&a.binding&&a.binding("util")}catch(t){}}();t.exports=u},80910:function(t){var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},45070:function(t){t.exports=function(t,e){return function(n){return t(e(n))}}},49478:function(t,e,n){var r=n(60493),o=Math.max;t.exports=function(t,e,n){return e=o(void 0===e?t.length-1:e,0),function(){for(var i=arguments,a=-1,u=o(i.length-e,0),c=Array(u);++a0){if(++n>=800)return arguments[0]}else n=0;return t.apply(void 0,arguments)}}},84092:function(t,e,n){var r=n(99078);t.exports=function(){this.__data__=new r,this.size=0}},31663:function(t){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},69135:function(t){t.exports=function(t){return this.__data__.get(t)}},39552:function(t){t.exports=function(t){return this.__data__.has(t)}},63960:function(t,e,n){var r=n(99078),o=n(88675),i=n(76219);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},35281:function(t){t.exports=function(t,e,n){for(var r=n-1,o=t.length;++r=e||n<0||v&&r>=s}function x(){var t,n,r,i=o();if(b(i))return O(i);p=setTimeout(x,(t=i-h,n=i-d,r=e-t,v?u(r,s-n):r))}function O(t){return(p=void 0,m&&c)?g(t):(c=l=void 0,f)}function w(){var t,n=o(),r=b(n);if(c=arguments,l=this,h=n,r){if(void 0===p)return d=t=h,p=setTimeout(x,e),y?g(t):f;if(v)return clearTimeout(p),p=setTimeout(x,e),g(h)}return void 0===p&&(p=setTimeout(x,e)),f}return e=i(e)||0,r(n)&&(y=!!n.leading,s=(v="maxWait"in n)?a(i(n.maxWait)||0,e):s,m="trailing"in n?!!n.trailing:m),w.cancel=function(){void 0!==p&&clearTimeout(p),d=0,c=h=l=p=void 0},w.flush=function(){return void 0===p?f:O(o())},w}},37560:function(t){t.exports=function(t,e){return t===e||t!=t&&e!=e}},32242:function(t,e,n){var r=n(78897),o=n(28935),i=n(88157),a=n(25614),u=n(49639);t.exports=function(t,e,n){var c=a(t)?r:o;return n&&u(t,e,n)&&(e=void 0),c(t,i(e,3))}},84173:function(t,e,n){var r=n(82602)(n(12152));t.exports=r},12152:function(t,e,n){var r=n(8235),o=n(88157),i=n(85759),a=Math.max;t.exports=function(t,e,n){var u=null==t?0:t.length;if(!u)return -1;var c=null==n?0:i(n);return c<0&&(c=a(u+c,0)),r(t,o(e,3),c)}},11314:function(t,e,n){var r=n(72569),o=n(89238);t.exports=function(t,e){return r(o(t,e),1)}},13735:function(t,e,n){var r=n(92167);t.exports=function(t,e,n){var o=null==t?void 0:r(t,e);return void 0===o?n:o}},17764:function(t,e,n){var r=n(93012),o=n(59592);t.exports=function(t,e){return null!=t&&o(t,e,r)}},79586:function(t){t.exports=function(t){return t}},56569:function(t,e,n){var r=n(90370),o=n(10303),i=Object.prototype,a=i.hasOwnProperty,u=i.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(t){return o(t)&&a.call(t,"callee")&&!u.call(t,"callee")};t.exports=c},25614:function(t){var e=Array.isArray;t.exports=e},5629:function(t,e,n){var r=n(86757),o=n(13973);t.exports=function(t){return null!=t&&o(t.length)&&!r(t)}},24342:function(t,e,n){var r=n(54506),o=n(10303);t.exports=function(t){return!0===t||!1===t||o(t)&&"[object Boolean]"==r(t)}},98051:function(t,e,n){t=n.nmd(t);var r=n(74288),o=n(7406),i=e&&!e.nodeType&&e,a=i&&t&&!t.nodeType&&t,u=a&&a.exports===i?r.Buffer:void 0,c=u?u.isBuffer:void 0;t.exports=c||o},21652:function(t,e,n){var r=n(56318);t.exports=function(t,e){return r(t,e)}},86757:function(t,e,n){var r=n(54506),o=n(28302);t.exports=function(t){if(!o(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},13973:function(t){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},82559:function(t,e,n){var r=n(22345);t.exports=function(t){return r(t)&&t!=+t}},77571:function(t){t.exports=function(t){return null==t}},22345:function(t,e,n){var r=n(54506),o=n(10303);t.exports=function(t){return"number"==typeof t||o(t)&&"[object Number]"==r(t)}},28302:function(t){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},10303:function(t){t.exports=function(t){return null!=t&&"object"==typeof t}},90231:function(t,e,n){var r=n(54506),o=n(62602),i=n(10303),a=Object.prototype,u=Function.prototype.toString,c=a.hasOwnProperty,l=u.call(Object);t.exports=function(t){if(!i(t)||"[object Object]"!=r(t))return!1;var e=o(t);if(null===e)return!0;var n=c.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&u.call(n)==l}},42715:function(t,e,n){var r=n(54506),o=n(25614),i=n(10303);t.exports=function(t){return"string"==typeof t||!o(t)&&i(t)&&"[object String]"==r(t)}},78371:function(t,e,n){var r=n(54506),o=n(10303);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},9792:function(t,e,n){var r=n(59332),o=n(23305),i=n(39931),a=i&&i.isTypedArray,u=a?o(a):r;t.exports=u},43228:function(t,e,n){var r=n(28579),o=n(4578),i=n(5629);t.exports=function(t){return i(t)?r(t):o(t)}},86185:function(t){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},89238:function(t,e,n){var r=n(73819),o=n(88157),i=n(24240),a=n(25614);t.exports=function(t,e){return(a(t)?r:i)(t,o(e,3))}},41443:function(t,e,n){var r=n(83023),o=n(98060),i=n(88157);t.exports=function(t,e){var n={};return e=i(e,3),o(t,function(t,o,i){r(n,o,e(t,o,i))}),n}},95645:function(t,e,n){var r=n(67646),o=n(58905),i=n(79586);t.exports=function(t){return t&&t.length?r(t,i,o):void 0}},35802:function(t,e,n){var r=n(67646),o=n(58905),i=n(88157);t.exports=function(t,e){return t&&t.length?r(t,i(e,2),o):void 0}},50967:function(t,e,n){var r=n(76219);function o(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw TypeError("Expected a function");var n=function(){var r=arguments,o=e?e.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=t.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(o.Cache||r),n}o.Cache=r,t.exports=o},99008:function(t,e,n){var r=n(67646),o=n(20121),i=n(79586);t.exports=function(t){return t&&t.length?r(t,i,o):void 0}},37891:function(t,e,n){var r=n(67646),o=n(88157),i=n(20121);t.exports=function(t,e){return t&&t.length?r(t,o(e,2),i):void 0}},93810:function(t){t.exports=function(){}},11121:function(t,e,n){var r=n(74288);t.exports=function(){return r.Date.now()}},22350:function(t,e,n){var r=n(18155),o=n(73584),i=n(67352),a=n(70235);t.exports=function(t){return i(t)?r(a(t)):o(t)}},99676:function(t,e,n){var r=n(35464)();t.exports=r},33645:function(t,e,n){var r=n(25253),o=n(88157),i=n(12327),a=n(25614),u=n(49639);t.exports=function(t,e,n){var c=a(t)?r:i;return n&&u(t,e,n)&&(e=void 0),c(t,o(e,3))}},34935:function(t,e,n){var r=n(72569),o=n(84046),i=n(44843),a=n(49639),u=i(function(t,e){if(null==t)return[];var n=e.length;return n>1&&a(t,e[0],e[1])?e=[]:n>2&&a(e[0],e[1],e[2])&&(e=[e[0]]),o(t,r(e,1),[])});t.exports=u},55716:function(t){t.exports=function(){return[]}},7406:function(t){t.exports=function(){return!1}},37065:function(t,e,n){var r=n(7310),o=n(28302);t.exports=function(t,e,n){var i=!0,a=!0;if("function"!=typeof t)throw TypeError("Expected a function");return o(n)&&(i="leading"in n?!!n.leading:i,a="trailing"in n?!!n.trailing:a),r(t,e,{leading:i,maxWait:e,trailing:a})}},175:function(t,e,n){var r=n(6660),o=1/0;t.exports=function(t){return t?(t=r(t))===o||t===-o?(t<0?-1:1)*17976931348623157e292:t==t?t:0:0===t?t:0}},85759:function(t,e,n){var r=n(175);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},6660:function(t,e,n){var r=n(55041),o=n(28302),i=n(78371),a=0/0,u=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^0o[0-7]+$/i,s=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return a;if(o(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=o(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=r(t);var n=c.test(t);return n||l.test(t)?s(t.slice(2),n?2:8):u.test(t)?a:+t}},3641:function(t,e,n){var r=n(65020);t.exports=function(t){return null==t?"":r(t)}},47230:function(t,e,n){var r=n(88157),o=n(13826);t.exports=function(t,e){return t&&t.length?o(t,r(e,2)):[]}},75551:function(t,e,n){var r=n(80675)("toUpperCase");t.exports=r},39763:function(t,e,n){"use strict";n.d(e,{Z:function(){return a}});var r=n(2265),o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let i=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),a=(t,e)=>{let n=(0,r.forwardRef)((n,a)=>{let{color:u="currentColor",size:c=24,strokeWidth:l=2,absoluteStrokeWidth:s,className:f="",children:p,...h}=n;return(0,r.createElement)("svg",{ref:a,...o,width:c,height:c,stroke:u,strokeWidth:s?24*Number(l)/Number(c):l,className:["lucide","lucide-".concat(i(t)),f].join(" "),...h},[...e.map(t=>{let[e,n]=t;return(0,r.createElement)(e,n)}),...Array.isArray(p)?p:[p]])});return n.displayName="".concat(t),n}},22252:function(t,e,n){"use strict";n.d(e,{Z:function(){return r}});let r=(0,n(39763).Z)("AlertCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},65302:function(t,e,n){"use strict";n.d(e,{Z:function(){return r}});let r=(0,n(39763).Z)("CheckCircle",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},45131:function(t,e,n){"use strict";n.d(e,{Z:function(){return r}});let r=(0,n(39763).Z)("XCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},99376:function(t,e,n){"use strict";var r=n(35475);n.o(r,"usePathname")&&n.d(e,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(e,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(e,{useSearchParams:function(){return r.useSearchParams}})},48049:function(t,e,n){"use strict";var r=n(14397);function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,i,a){if(a!==r){var u=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function e(){return t}t.isRequired=t;var n={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},40718:function(t,e,n){t.exports=n(48049)()},14397:function(t){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},52181:function(t,e,n){"use strict";function r(){var t=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=t&&this.setState(t)}function o(t){this.setState((function(e){var n=this.constructor.getDerivedStateFromProps(t,e);return null!=n?n:null}).bind(this))}function i(t,e){try{var n=this.props,r=this.state;this.props=t,this.state=e,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,r)}finally{this.props=n,this.state=r}}function a(t){var e=t.prototype;if(!e||!e.isReactComponent)throw Error("Can only polyfill class components");if("function"!=typeof t.getDerivedStateFromProps&&"function"!=typeof e.getSnapshotBeforeUpdate)return t;var n=null,a=null,u=null;if("function"==typeof e.componentWillMount?n="componentWillMount":"function"==typeof e.UNSAFE_componentWillMount&&(n="UNSAFE_componentWillMount"),"function"==typeof e.componentWillReceiveProps?a="componentWillReceiveProps":"function"==typeof e.UNSAFE_componentWillReceiveProps&&(a="UNSAFE_componentWillReceiveProps"),"function"==typeof e.componentWillUpdate?u="componentWillUpdate":"function"==typeof e.UNSAFE_componentWillUpdate&&(u="UNSAFE_componentWillUpdate"),null!==n||null!==a||null!==u)throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+(t.displayName||t.name)+" uses "+("function"==typeof t.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()")+" but also contains the following legacy lifecycles:"+(null!==n?"\n "+n:"")+(null!==a?"\n "+a:"")+(null!==u?"\n "+u:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks");if("function"==typeof t.getDerivedStateFromProps&&(e.componentWillMount=r,e.componentWillReceiveProps=o),"function"==typeof e.getSnapshotBeforeUpdate){if("function"!=typeof e.componentDidUpdate)throw Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");e.componentWillUpdate=i;var c=e.componentDidUpdate;e.componentDidUpdate=function(t,e,n){var r=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;c.call(this,t,e,r)}}return t}n.r(e),n.d(e,{polyfill:function(){return a}}),r.__suppressDeprecationWarning=!0,o.__suppressDeprecationWarning=!0,i.__suppressDeprecationWarning=!0},71910:function(t,e,n){"use strict";n.d(e,{ZP:function(){return tW},bO:function(){return Y}});var r=n(2265),o=n(40718),i=n.n(o);let{getOwnPropertyNames:a,getOwnPropertySymbols:u}=Object,{hasOwnProperty:c}=Object.prototype;function l(t,e){return function(n,r,o){return t(n,r,o)&&e(n,r,o)}}function s(t){return function(e,n,r){if(!e||!n||"object"!=typeof e||"object"!=typeof n)return t(e,n,r);let{cache:o}=r,i=o.get(e),a=o.get(n);if(i&&a)return i===n&&a===e;o.set(e,n),o.set(n,e);let u=t(e,n,r);return o.delete(e),o.delete(n),u}}function f(t){return a(t).concat(u(t))}let p=Object.hasOwn||((t,e)=>c.call(t,e));function h(t,e){return t===e||!t&&!e&&t!=t&&e!=e}let{getOwnPropertyDescriptor:d,keys:y}=Object;function v(t,e){return t.byteLength===e.byteLength&&k(new Uint8Array(t),new Uint8Array(e))}function m(t,e,n){let r=t.length;if(e.length!==r)return!1;for(;r-- >0;)if(!n.equals(t[r],e[r],r,r,t,e,n))return!1;return!0}function g(t,e){return t.byteLength===e.byteLength&&k(new Uint8Array(t.buffer,t.byteOffset,t.byteLength),new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}function b(t,e){return h(t.getTime(),e.getTime())}function x(t,e){return t.name===e.name&&t.message===e.message&&t.cause===e.cause&&t.stack===e.stack}function O(t,e){return t===e}function w(t,e,n){let r,o;let i=t.size;if(i!==e.size)return!1;if(!i)return!0;let a=Array(i),u=t.entries(),c=0;for(;(r=u.next())&&!r.done;){let i=e.entries(),u=!1,l=0;for(;(o=i.next())&&!o.done;){if(a[l]){l++;continue}let i=r.value,s=o.value;if(n.equals(i[0],s[0],c,l,t,e,n)&&n.equals(i[1],s[1],i[0],s[0],t,e,n)){u=a[l]=!0;break}l++}if(!u)return!1;c++}return!0}function j(t,e,n){let r=y(t),o=r.length;if(y(e).length!==o)return!1;for(;o-- >0;)if(!T(t,e,n,r[o]))return!1;return!0}function S(t,e,n){let r,o,i;let a=f(t),u=a.length;if(f(e).length!==u)return!1;for(;u-- >0;)if(!T(t,e,n,r=a[u])||(o=d(t,r),i=d(e,r),(o||i)&&(!o||!i||o.configurable!==i.configurable||o.enumerable!==i.enumerable||o.writable!==i.writable)))return!1;return!0}function A(t,e){return h(t.valueOf(),e.valueOf())}function E(t,e){return t.source===e.source&&t.flags===e.flags}function P(t,e,n){let r,o;let i=t.size;if(i!==e.size)return!1;if(!i)return!0;let a=Array(i),u=t.values();for(;(r=u.next())&&!r.done;){let i=e.values(),u=!1,c=0;for(;(o=i.next())&&!o.done;){if(!a[c]&&n.equals(r.value,o.value,r.value,o.value,t,e,n)){u=a[c]=!0;break}c++}if(!u)return!1}return!0}function k(t,e){let n=t.byteLength;if(e.byteLength!==n||t.byteOffset!==e.byteOffset)return!1;for(;n-- >0;)if(t[n]!==e[n])return!1;return!0}function _(t,e){return t.hostname===e.hostname&&t.pathname===e.pathname&&t.protocol===e.protocol&&t.port===e.port&&t.hash===e.hash&&t.username===e.username&&t.password===e.password}function T(t,e,n,r){return("_owner"===r||"__o"===r||"__v"===r)&&(!!t.$$typeof||!!e.$$typeof)||p(e,r)&&n.equals(t[r],e[r],r,r,t,e,n)}let M={"[object Int8Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Int16Array]":!0,"[object Uint16Array]":!0,"[object Int32Array]":!0,"[object Uint32Array]":!0,"[object Float16Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0,"[object BigInt64Array]":!0,"[object BigUint64Array]":!0},C=Object.prototype.toString,N=D();function D(t={}){let{circular:e=!1,createInternalComparator:n,createState:r,strict:o=!1}=t,i=function({areArrayBuffersEqual:t,areArraysEqual:e,areDataViewsEqual:n,areDatesEqual:r,areErrorsEqual:o,areFunctionsEqual:i,areMapsEqual:a,areNumbersEqual:u,areObjectsEqual:c,arePrimitiveWrappersEqual:l,areRegExpsEqual:s,areSetsEqual:f,areTypedArraysEqual:p,areUrlsEqual:h,unknownTagComparators:d}){return function(y,v,m){if(y===v)return!0;if(null==y||null==v)return!1;let g=typeof y;if(g!==typeof v)return!1;if("object"!==g)return"number"===g?u(y,v,m):"function"===g&&i(y,v,m);let b=y.constructor;if(b!==v.constructor)return!1;if(b===Object)return c(y,v,m);if(Array.isArray(y))return e(y,v,m);if(b===Date)return r(y,v,m);if(b===RegExp)return s(y,v,m);if(b===Map)return a(y,v,m);if(b===Set)return f(y,v,m);let x=C.call(y);if("[object Date]"===x)return r(y,v,m);if("[object RegExp]"===x)return s(y,v,m);if("[object Map]"===x)return a(y,v,m);if("[object Set]"===x)return f(y,v,m);if("[object Object]"===x)return"function"!=typeof y.then&&"function"!=typeof v.then&&c(y,v,m);if("[object URL]"===x)return h(y,v,m);if("[object Error]"===x)return o(y,v,m);if("[object Arguments]"===x)return c(y,v,m);if(M[x])return p(y,v,m);if("[object ArrayBuffer]"===x)return t(y,v,m);if("[object DataView]"===x)return n(y,v,m);if("[object Boolean]"===x||"[object Number]"===x||"[object String]"===x)return l(y,v,m);if(d){let t=d[x];if(!t){let e=null!=y?y[Symbol.toStringTag]:void 0;e&&(t=d[e])}if(t)return t(y,v,m)}return!1}}(function({circular:t,createCustomConfig:e,strict:n}){let r={areArrayBuffersEqual:v,areArraysEqual:n?S:m,areDataViewsEqual:g,areDatesEqual:b,areErrorsEqual:x,areFunctionsEqual:O,areMapsEqual:n?l(w,S):w,areNumbersEqual:h,areObjectsEqual:n?S:j,arePrimitiveWrappersEqual:A,areRegExpsEqual:E,areSetsEqual:n?l(P,S):P,areTypedArraysEqual:n?l(k,S):k,areUrlsEqual:_,unknownTagComparators:void 0};if(e&&(r=Object.assign({},r,e(r))),t){let t=s(r.areArraysEqual),e=s(r.areMapsEqual),n=s(r.areObjectsEqual),o=s(r.areSetsEqual);r=Object.assign({},r,{areArraysEqual:t,areMapsEqual:e,areObjectsEqual:n,areSetsEqual:o})}return r}(t)),a=n?n(i):function(t,e,n,r,o,a,u){return i(t,e,u)};return function({circular:t,comparator:e,createState:n,equals:r,strict:o}){if(n)return function(i,a){let{cache:u=t?new WeakMap:void 0,meta:c}=n();return e(i,a,{cache:u,equals:r,meta:c,strict:o})};if(t)return function(t,n){return e(t,n,{cache:new WeakMap,equals:r,meta:void 0,strict:o})};let i={cache:void 0,equals:r,meta:void 0,strict:o};return function(t,n){return e(t,n,i)}}({circular:e,comparator:i,createState:r,equals:a,strict:o})}function I(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=-1;requestAnimationFrame(function r(o){if(n<0&&(n=o),o-n>e)t(o),n=-1;else{var i;i=r,"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(i)}})}function L(t){return(L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function R(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);nh}),D({strict:!0,createInternalComparator:()=>h}),D({circular:!0,createInternalComparator:()=>h}),D({circular:!0,createInternalComparator:()=>h,strict:!0});var $=["Webkit","Moz","O","ms"],W=["-webkit-","-moz-","-o-","-ms-"],Z=["transform","transformOrigin","transition"],G=function(t){return t},q=function(t,e){if(-1===Z.indexOf(t))return F({},t,Number.isNaN(e)?0:e);var n="transition"===t,r=t.replace(/(\w)/,function(t){return t.toUpperCase()}),o=e;return $.reduce(function(t,i,a){return n&&(o=e.replace(/(transform|transform-origin)/gim,"".concat(W[a],"$1"))),U(U({},t),{},F({},i+r,o))},{})},V=function(t,e){return Object.keys(e).reduce(function(n,r){return U(U({},n),{},F({},r,t(r,e[r])))},{})},Y=function(t){return Object.keys(t).reduce(function(t,e){return U(U({},t),q(e,t[e]))},t)},H=function(t,e,n){return t.map(function(t){return"".concat(t.replace(/([A-Z])/g,function(t){return"-".concat(t.toLowerCase())})," ").concat(e,"ms ").concat(n)}).join(",")},X=function(t,e,n,r,o,i,a,u){};function K(t,e){if(t){if("string"==typeof t)return J(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return J(t,e)}}function J(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n=0&&t<=1}),"[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s",r);var p=te(i,u),h=te(a,c),d=(t=i,e=u,function(n){var r;return tt([].concat(function(t){if(Array.isArray(t))return J(t)}(r=Q(t,e).map(function(t,e){return t*e}).slice(1))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||K(r)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[0]),n)}),y=function(t){for(var e=t>1?1:t,n=e,r=0;r<8;++r){var o,i=p(n)-e,a=d(n);if(1e-4>Math.abs(i-e)||a<1e-4)break;n=(o=n-i/a)>1?1:o<0?0:o}return h(n)};return y.isStepper=!1,y},tr=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.stiff,n=void 0===e?100:e,r=t.damping,o=void 0===r?8:r,i=t.dt,a=void 0===i?17:i,u=function(t,e,r){var i=r+(-(t-e)*n-r*o)*a/1e3,u=r*a/1e3+t;return 1e-4>Math.abs(u-e)&&1e-4>Math.abs(i)?[e,0]:[u,i]};return u.isStepper=!0,u.dt=a,u},to=function(){for(var t=arguments.length,e=Array(t),n=0;nt.length)&&(e=t.length);for(var n=0,r=Array(e);nt.length)&&(e=t.length);for(var n=0,r=Array(e);n0?n[o-1]:r,p=l||Object.keys(c);if("function"==typeof u||"spring"===u)return[].concat(tg(t),[e.runJSAnimation.bind(e,{from:f.style,to:c,duration:i,easing:u}),i]);var h=H(p,i,u),d=tO(tO(tO({},f.style),c),{},{transition:h});return[].concat(tg(t),[d,i,s]).filter(G)},[a,Math.max(void 0===u?0:u,r)])),[t.onAnimationEnd]))}},{key:"runAnimation",value:function(t){if(!this.manager){var e,n,r;this.manager=(e=function(){return null},n=!1,r=function t(r){if(!n){if(Array.isArray(r)){if(!r.length)return;var o=function(t){if(Array.isArray(t))return t}(r)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||function(t,e){if(t){if("string"==typeof t)return R(t,void 0);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return R(t,void 0)}}(r)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),i=o[0],a=o.slice(1);if("number"==typeof i){I(t.bind(null,a),i);return}t(i),I(t.bind(null,a));return}"object"===L(r)&&e(r),"function"==typeof r&&r()}},{stop:function(){n=!0},start:function(t){n=!1,r(t)},subscribe:function(t){return e=t,function(){e=function(){return null}}}})}var o=t.begin,i=t.duration,a=t.attributeName,u=t.to,c=t.easing,l=t.onAnimationStart,s=t.onAnimationEnd,f=t.steps,p=t.children,h=this.manager;if(this.unSubscribe=h.subscribe(this.handleStyleChange),"function"==typeof c||"function"==typeof p||"spring"===c){this.runJSAnimation(t);return}if(f.length>1){this.runStepAnimation(t);return}var d=a?tw({},a,u):u,y=H(Object.keys(d),i,c);h.start([l,o,tO(tO({},d),{},{transition:y}),i,s])}},{key:"render",value:function(){var t=this.props,e=t.children,n=(t.begin,t.duration),o=(t.attributeName,t.easing,t.isActive),i=(t.steps,t.from,t.to,t.canBegin,t.onAnimationEnd,t.shouldReAnimate,t.onAnimationReStart,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,tm)),a=r.Children.count(e),u=Y(this.state.style);if("function"==typeof e)return e(u);if(!o||0===a||n<=0)return e;var c=function(t){var e=t.props,n=e.style,o=e.className;return(0,r.cloneElement)(t,tO(tO({},i),{},{style:tO(tO({},void 0===n?{}:n),u),className:o}))};return 1===a?c(r.Children.only(e)):r.createElement("div",null,r.Children.map(e,function(t){return c(t)}))}}],function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=t.steps,n=t.duration;return e&&e.length?e.reduce(function(t,e){return t+(Number.isFinite(e.duration)&&e.duration>0?e.duration:0)},0):Number.isFinite(n)?n:0},tF=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&tI(t,e)}(i,t);var e,n,o=(e=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}(),function(){var t,n=tR(i);return t=e?Reflect.construct(n,arguments,tR(this).constructor):n.apply(this,arguments),function(t,e){if(e&&("object"===tM(e)||"function"==typeof e))return e;if(void 0!==e)throw TypeError("Derived constructors may only return object or undefined");return tL(t)}(this,t)});function i(){var t;return!function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,i),tB(tL(t=o.call(this)),"handleEnter",function(e,n){var r=t.props,o=r.appearOptions,i=r.enterOptions;t.handleStyleActive(n?o:i)}),tB(tL(t),"handleExit",function(){var e=t.props.leaveOptions;t.handleStyleActive(e)}),t.state={isActive:!1},t}return n=[{key:"handleStyleActive",value:function(t){if(t){var e=t.onAnimationEnd?function(){t.onAnimationEnd()}:null;this.setState(tD(tD({},t),{},{onAnimationEnd:e,isActive:!0}))}}},{key:"parseTimeout",value:function(){var t=this.props,e=t.appearOptions,n=t.enterOptions,r=t.leaveOptions;return tU(e)+tU(n)+tU(r)}},{key:"render",value:function(){var t=this,e=this.props,n=e.children,o=(e.appearOptions,e.enterOptions,e.leaveOptions,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,tT));return r.createElement(t_.Transition,tC({},o,{onEnter:this.handleEnter,onExit:this.handleExit,timeout:this.parseTimeout()}),function(){return r.createElement(tk,t.state,r.Children.only(n))})}}],function(t,e){for(var n=0;n=0||(o[n]=t[n]);return o}(t,["children","in"]),a=r.default.Children.toArray(e),u=a[0],c=a[1];return delete o.onEnter,delete o.onEntering,delete o.onEntered,delete o.onExit,delete o.onExiting,delete o.onExited,r.default.createElement(i.default,o,n?r.default.cloneElement(u,{key:"first",onEnter:this.handleEnter,onEntering:this.handleEntering,onEntered:this.handleEntered}):r.default.cloneElement(c,{key:"second",onEnter:this.handleExit,onEntering:this.handleExiting,onEntered:this.handleExited}))},e}(r.default.Component);u.propTypes={},e.default=u,t.exports=e.default},20536:function(t,e,n){"use strict";e.__esModule=!0,e.default=e.EXITING=e.ENTERED=e.ENTERING=e.EXITED=e.UNMOUNTED=void 0;var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t){for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};r.get||r.set?Object.defineProperty(e,n,r):e[n]=t[n]}}return e.default=t,e}(n(40718)),o=u(n(2265)),i=u(n(54887)),a=n(52181);function u(t){return t&&t.__esModule?t:{default:t}}n(32601);var c="unmounted";e.UNMOUNTED=c;var l="exited";e.EXITED=l;var s="entering";e.ENTERING=s;var f="entered";e.ENTERED=f;var p="exiting";e.EXITING=p;var h=function(t){function e(e,n){r=t.call(this,e,n)||this;var r,o,i=n.transitionGroup,a=i&&!i.isMounting?e.enter:e.appear;return r.appearStatus=null,e.in?a?(o=l,r.appearStatus=s):o=f:o=e.unmountOnExit||e.mountOnEnter?c:l,r.state={status:o},r.nextCallback=null,r}e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t;var n=e.prototype;return n.getChildContext=function(){return{transitionGroup:null}},e.getDerivedStateFromProps=function(t,e){return t.in&&e.status===c?{status:l}:null},n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(t){var e=null;if(t!==this.props){var n=this.state.status;this.props.in?n!==s&&n!==f&&(e=s):(n===s||n===f)&&(e=p)}this.updateStatus(!1,e)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var t,e,n,r=this.props.timeout;return t=e=n=r,null!=r&&"number"!=typeof r&&(t=r.exit,e=r.enter,n=void 0!==r.appear?r.appear:e),{exit:t,enter:e,appear:n}},n.updateStatus=function(t,e){if(void 0===t&&(t=!1),null!==e){this.cancelNextCallback();var n=i.default.findDOMNode(this);e===s?this.performEnter(n,t):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===l&&this.setState({status:c})},n.performEnter=function(t,e){var n=this,r=this.props.enter,o=this.context.transitionGroup?this.context.transitionGroup.isMounting:e,i=this.getTimeouts(),a=o?i.appear:i.enter;if(!e&&!r){this.safeSetState({status:f},function(){n.props.onEntered(t)});return}this.props.onEnter(t,o),this.safeSetState({status:s},function(){n.props.onEntering(t,o),n.onTransitionEnd(t,a,function(){n.safeSetState({status:f},function(){n.props.onEntered(t,o)})})})},n.performExit=function(t){var e=this,n=this.props.exit,r=this.getTimeouts();if(!n){this.safeSetState({status:l},function(){e.props.onExited(t)});return}this.props.onExit(t),this.safeSetState({status:p},function(){e.props.onExiting(t),e.onTransitionEnd(t,r.exit,function(){e.safeSetState({status:l},function(){e.props.onExited(t)})})})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(t,e){e=this.setNextCallback(e),this.setState(t,e)},n.setNextCallback=function(t){var e=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,e.nextCallback=null,t(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(t,e,n){this.setNextCallback(n);var r=null==e&&!this.props.addEndListener;if(!t||r){setTimeout(this.nextCallback,0);return}this.props.addEndListener&&this.props.addEndListener(t,this.nextCallback),null!=e&&setTimeout(this.nextCallback,e)},n.render=function(){var t=this.state.status;if(t===c)return null;var e=this.props,n=e.children,r=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(e,["children"]);if(delete r.in,delete r.mountOnEnter,delete r.unmountOnExit,delete r.appear,delete r.enter,delete r.exit,delete r.timeout,delete r.addEndListener,delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,"function"==typeof n)return n(t,r);var i=o.default.Children.only(n);return o.default.cloneElement(i,r)},e}(o.default.Component);function d(){}h.contextTypes={transitionGroup:r.object},h.childContextTypes={transitionGroup:function(){}},h.propTypes={},h.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:d,onEntering:d,onEntered:d,onExit:d,onExiting:d,onExited:d},h.UNMOUNTED=0,h.EXITED=1,h.ENTERING=2,h.ENTERED=3,h.EXITING=4;var y=(0,a.polyfill)(h);e.default=y},38244:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=u(n(40718)),o=u(n(2265)),i=n(52181),a=n(28710);function u(t){return t&&t.__esModule?t:{default:t}}function c(){return(c=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["component","childFactory"]),i=s(this.state.children).map(n);return(delete r.appear,delete r.enter,delete r.exit,null===e)?i:o.default.createElement(e,r,i)},e}(o.default.Component);f.childContextTypes={transitionGroup:r.default.object.isRequired},f.propTypes={},f.defaultProps={component:"div",childFactory:function(t){return t}};var p=(0,i.polyfill)(f);e.default=p,t.exports=e.default},30719:function(t,e,n){"use strict";var r=u(n(33664)),o=u(n(31601)),i=u(n(38244)),a=u(n(20536));function u(t){return t&&t.__esModule?t:{default:t}}t.exports={Transition:a.default,TransitionGroup:i.default,ReplaceTransition:o.default,CSSTransition:r.default}},28710:function(t,e,n){"use strict";e.__esModule=!0,e.getChildMapping=o,e.mergeChildMappings=i,e.getInitialChildMapping=function(t,e){return o(t.children,function(n){return(0,r.cloneElement)(n,{onExited:e.bind(null,n),in:!0,appear:a(n,"appear",t),enter:a(n,"enter",t),exit:a(n,"exit",t)})})},e.getNextChildMapping=function(t,e,n){var u=o(t.children),c=i(e,u);return Object.keys(c).forEach(function(o){var i=c[o];if((0,r.isValidElement)(i)){var l=o in e,s=o in u,f=e[o],p=(0,r.isValidElement)(f)&&!f.props.in;s&&(!l||p)?c[o]=(0,r.cloneElement)(i,{onExited:n.bind(null,i),in:!0,exit:a(i,"exit",t),enter:a(i,"enter",t)}):s||!l||p?s&&l&&(0,r.isValidElement)(f)&&(c[o]=(0,r.cloneElement)(i,{onExited:n.bind(null,i),in:f.props.in,exit:a(i,"exit",t),enter:a(i,"enter",t)})):c[o]=(0,r.cloneElement)(i,{in:!1})}}),c};var r=n(2265);function o(t,e){var n=Object.create(null);return t&&r.Children.map(t,function(t){return t}).forEach(function(t){n[t.key]=e&&(0,r.isValidElement)(t)?e(t):t}),n}function i(t,e){function n(n){return n in e?e[n]:t[n]}t=t||{},e=e||{};var r,o=Object.create(null),i=[];for(var a in t)a in e?i.length&&(o[a]=i,i=[]):i.push(a);var u={};for(var c in e){if(o[c])for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,O),i=parseInt("".concat(n),10),a=parseInt("".concat(r),10),u=parseInt("".concat(e.height||o.height),10),c=parseInt("".concat(e.width||o.width),10);return S(S(S(S(S({},e),o),i?{x:i}:{}),a?{y:a}:{}),{},{height:u,width:c,name:e.name,radius:e.radius})}function E(t){return r.createElement(b.bn,w({shapeType:"rectangle",propTransformer:A,activeClassName:"recharts-active-bar"},t))}var P=["value","background"];function k(t){return(k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _(){return(_=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,P);if(!u)return null;var l=M(M(M(M(M({},c),{},{fill:"#eee"},u),a),(0,g.bw)(t.props,e,n)),{},{onAnimationStart:t.handleAnimationStart,onAnimationEnd:t.handleAnimationEnd,dataKey:o,index:n,key:"background-bar-".concat(n),className:"recharts-bar-background-rectangle"});return r.createElement(E,_({option:t.props.background,isActive:n===i},l))})}},{key:"renderErrorBar",value:function(t,e){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var n=this.props,o=n.data,i=n.xAxis,a=n.yAxis,u=n.layout,c=n.children,l=(0,y.NN)(c,f.W);if(!l)return null;var p="vertical"===u?o[0].height/2:o[0].width/2,h=function(t,e){var n=Array.isArray(t.value)?t.value[1]:t.value;return{x:t.x,y:t.y,value:n,errorVal:(0,m.F$)(t,e)}};return r.createElement(s.m,{clipPath:t?"url(#clipPath-".concat(e,")"):null},l.map(function(t){return r.cloneElement(t,{key:"error-bar-".concat(e,"-").concat(t.props.dataKey),data:o,xAxis:i,yAxis:a,layout:u,offset:p,dataPointFormatter:h})}))}},{key:"render",value:function(){var t=this.props,e=t.hide,n=t.data,i=t.className,a=t.xAxis,u=t.yAxis,c=t.left,f=t.top,p=t.width,d=t.height,y=t.isAnimationActive,v=t.background,m=t.id;if(e||!n||!n.length)return null;var g=this.state.isAnimationFinished,b=(0,o.Z)("recharts-bar",i),x=a&&a.allowDataOverflow,O=u&&u.allowDataOverflow,w=x||O,j=l()(m)?this.id:m;return r.createElement(s.m,{className:b},x||O?r.createElement("defs",null,r.createElement("clipPath",{id:"clipPath-".concat(j)},r.createElement("rect",{x:x?c:c-p/2,y:O?f:f-d/2,width:x?p:2*p,height:O?d:2*d}))):null,r.createElement(s.m,{className:"recharts-bar-rectangles",clipPath:w?"url(#clipPath-".concat(j,")"):null},v?this.renderBackground():null,this.renderRectangles()),this.renderErrorBar(w,j),(!y||g)&&h.e.renderCallByParent(this.props,n))}}],a=[{key:"getDerivedStateFromProps",value:function(t,e){return t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curData:t.data,prevData:e.curData}:t.data!==e.curData?{curData:t.data}:null}}],n&&C(p.prototype,n),a&&C(p,a),Object.defineProperty(p,"prototype",{writable:!1}),p}(r.PureComponent);L(B,"displayName","Bar"),L(B,"defaultProps",{xAxisId:0,yAxisId:0,legendType:"rect",minPointSize:0,hide:!1,data:[],layout:"vertical",activeBar:!0,isAnimationActive:!v.x.isSsr,animationBegin:0,animationDuration:400,animationEasing:"ease"}),L(B,"getComposedData",function(t){var e=t.props,n=t.item,r=t.barPosition,o=t.bandSize,i=t.xAxis,a=t.yAxis,u=t.xAxisTicks,c=t.yAxisTicks,l=t.stackedData,s=t.dataStartIndex,f=t.displayedData,h=t.offset,v=(0,m.Bu)(r,n);if(!v)return null;var g=e.layout,b=n.props,x=b.dataKey,O=b.children,w=b.minPointSize,j="horizontal"===g?a:i,S=l?j.scale.domain():null,A=(0,m.Yj)({numericAxis:j}),E=(0,y.NN)(O,p.b),P=f.map(function(t,e){var r,f,p,h,y,b;if(l?r=(0,m.Vv)(l[s+e],S):Array.isArray(r=(0,m.F$)(t,x))||(r=[A,r]),"horizontal"===g){var O,j=[a.scale(r[0]),a.scale(r[1])],P=j[0],k=j[1];f=(0,m.Fy)({axis:i,ticks:u,bandSize:o,offset:v.offset,entry:t,index:e}),p=null!==(O=null!=k?k:P)&&void 0!==O?O:void 0,h=v.size;var _=P-k;if(y=Number.isNaN(_)?0:_,b={x:f,y:a.y,width:h,height:a.height},Math.abs(w)>0&&Math.abs(y)0&&Math.abs(h)=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function h(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function d(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=Array(e);n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,a),v=(0,i.L6)(y),m=f.map(function(t){var i,a,f=p(t,s),y=f.x,m=f.y,g=f.value,b=f.errorVal;if(!b)return null;var x=[];if(Array.isArray(b)){var O=function(t){if(Array.isArray(t))return t}(b)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,u=[],c=!0,l=!1;try{for(i=(n=n.call(t)).next;!(c=(r=i.call(n)).done)&&(u.push(r.value),2!==u.length);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(b,2)||function(t,e){if(t){if("string"==typeof t)return c(t,2);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(t,2)}}(b,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();i=O[0],a=O[1]}else i=a=b;if("vertical"===n){var w=h.scale,j=m+e,S=j+l,A=j-l,E=w(g-i),P=w(g+a);x.push({x1:P,y1:S,x2:P,y2:A}),x.push({x1:E,y1:j,x2:P,y2:j}),x.push({x1:E,y1:S,x2:E,y2:A})}else if("horizontal"===n){var k=d.scale,_=y+e,T=_-l,M=_+l,C=k(g-i),N=k(g+a);x.push({x1:T,y1:N,x2:M,y2:N}),x.push({x1:_,y1:C,x2:_,y2:N}),x.push({x1:T,y1:C,x2:M,y2:C})}return r.createElement(o.m,u({className:"recharts-errorBar",key:"bar-".concat(x.map(function(t){return"".concat(t.x1,"-").concat(t.x2,"-").concat(t.y1,"-").concat(t.y2)}))},v),x.map(function(t){return r.createElement("line",u({},t,{key:"line-".concat(t.x1,"-").concat(t.x2,"-").concat(t.y1,"-").concat(t.y2)}))}))});return r.createElement(o.m,{className:"recharts-errorBars"},m)}l.defaultProps={stroke:"black",strokeWidth:1.5,width:5,offset:0,layout:"horizontal"},l.displayName="ErrorBar"},54061:function(t,e,n){"use strict";n.d(e,{x:function(){return D}});var r=n(2265),o=n(71910),i=n(86757),a=n.n(i),u=n(77571),c=n.n(u),l=n(21652),s=n.n(l),f=n(61994),p=n(57165),h=n(81889),d=n(9841),y=n(58772),v=n(13137),m=n(16630),g=n(82944),b=n(34067),x=n(85355),O=["type","layout","connectNulls","ref"];function w(t){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function j(){return(j=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=Array(e);ni){u=[].concat(E(r.slice(0,c)),[i-s]);break}var f=u.length%2==0?[0,a]:[a];return[].concat(E(l.repeat(r,Math.floor(e/o))),E(u),f).map(function(t){return"".concat(t,"px")}).join(", ")}),C(T(t),"id",(0,m.EL)("recharts-line-")),C(T(t),"pathRef",function(e){t.mainCurve=e}),C(T(t),"handleAnimationEnd",function(){t.setState({isAnimationFinished:!0}),t.props.onAnimationEnd&&t.props.onAnimationEnd()}),C(T(t),"handleAnimationStart",function(){t.setState({isAnimationFinished:!1}),t.props.onAnimationStart&&t.props.onAnimationStart()}),t}return n=[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var t=this.getTotalLength();this.setState({totalLength:t})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var t=this.getTotalLength();t!==this.state.totalLength&&this.setState({totalLength:t})}}},{key:"getTotalLength",value:function(){var t=this.mainCurve;try{return t&&t.getTotalLength&&t.getTotalLength()||0}catch(t){return 0}}},{key:"renderErrorBar",value:function(t,e){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var n=this.props,o=n.points,i=n.xAxis,a=n.yAxis,u=n.layout,c=n.children,l=(0,g.NN)(c,v.W);if(!l)return null;var s=function(t,e){return{x:t.x,y:t.y,value:t.value,errorVal:(0,x.F$)(t.payload,e)}};return r.createElement(d.m,{clipPath:t?"url(#clipPath-".concat(e,")"):null},l.map(function(t){return r.cloneElement(t,{key:"bar-".concat(t.props.dataKey),data:o,xAxis:i,yAxis:a,layout:u,dataPointFormatter:s})}))}},{key:"renderDots",value:function(t,e,n){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var o=this.props,i=o.dot,a=o.points,u=o.dataKey,c=(0,g.L6)(this.props),s=(0,g.L6)(i,!0),f=a.map(function(t,e){var n=A(A(A({key:"dot-".concat(e),r:3},c),s),{},{value:t.value,dataKey:u,cx:t.x,cy:t.y,index:e,payload:t.payload});return l.renderDotItem(i,n)}),p={clipPath:t?"url(#clipPath-".concat(e?"":"dots-").concat(n,")"):null};return r.createElement(d.m,j({className:"recharts-line-dots",key:"dots"},p),f)}},{key:"renderCurveStatically",value:function(t,e,n,o){var i=this.props,a=i.type,u=i.layout,c=i.connectNulls,l=(i.ref,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(i,O)),s=A(A(A({},(0,g.L6)(l,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:e?"url(#clipPath-".concat(n,")"):null,points:t},o),{},{type:a,layout:u,connectNulls:c});return r.createElement(p.H,j({},s,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(t,e){var n=this,i=this.props,a=i.points,u=i.strokeDasharray,c=i.isAnimationActive,l=i.animationBegin,s=i.animationDuration,f=i.animationEasing,p=i.animationId,h=i.animateNewValues,d=i.width,y=i.height,v=this.state,g=v.prevPoints,b=v.totalLength;return r.createElement(o.ZP,{begin:l,duration:s,isActive:c,easing:f,from:{t:0},to:{t:1},key:"line-".concat(p),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(r){var o,i=r.t;if(g){var c=g.length/a.length,l=a.map(function(t,e){var n=Math.floor(e*c);if(g[n]){var r=g[n],o=(0,m.k4)(r.x,t.x),a=(0,m.k4)(r.y,t.y);return A(A({},t),{},{x:o(i),y:a(i)})}if(h){var u=(0,m.k4)(2*d,t.x),l=(0,m.k4)(y/2,t.y);return A(A({},t),{},{x:u(i),y:l(i)})}return A(A({},t),{},{x:t.x,y:t.y})});return n.renderCurveStatically(l,t,e)}var s=(0,m.k4)(0,b)(i);if(u){var f="".concat(u).split(/[,\s]+/gim).map(function(t){return parseFloat(t)});o=n.getStrokeDasharray(s,b,f)}else o=n.generateSimpleStrokeDasharray(b,s);return n.renderCurveStatically(a,t,e,{strokeDasharray:o})})}},{key:"renderCurve",value:function(t,e){var n=this.props,r=n.points,o=n.isAnimationActive,i=this.state,a=i.prevPoints,u=i.totalLength;return o&&r&&r.length&&(!a&&u>0||!s()(a,r))?this.renderCurveWithAnimation(t,e):this.renderCurveStatically(r,t,e)}},{key:"render",value:function(){var t,e=this.props,n=e.hide,o=e.dot,i=e.points,a=e.className,u=e.xAxis,l=e.yAxis,s=e.top,p=e.left,h=e.width,v=e.height,m=e.isAnimationActive,b=e.id;if(n||!i||!i.length)return null;var x=this.state.isAnimationFinished,O=1===i.length,w=(0,f.Z)("recharts-line",a),j=u&&u.allowDataOverflow,S=l&&l.allowDataOverflow,A=j||S,E=c()(b)?this.id:b,P=null!==(t=(0,g.L6)(o))&&void 0!==t?t:{r:3,strokeWidth:2},k=P.r,_=P.strokeWidth,T=((0,g.$k)(o)?o:{}).clipDot,M=void 0===T||T,C=2*(void 0===k?3:k)+(void 0===_?2:_);return r.createElement(d.m,{className:w},j||S?r.createElement("defs",null,r.createElement("clipPath",{id:"clipPath-".concat(E)},r.createElement("rect",{x:j?p:p-h/2,y:S?s:s-v/2,width:j?h:2*h,height:S?v:2*v})),!M&&r.createElement("clipPath",{id:"clipPath-dots-".concat(E)},r.createElement("rect",{x:p-C/2,y:s-C/2,width:h+C,height:v+C}))):null,!O&&this.renderCurve(A,E),this.renderErrorBar(A,E),(O||o)&&this.renderDots(A,M,E),(!m||x)&&y.e.renderCallByParent(this.props,i))}}],i=[{key:"getDerivedStateFromProps",value:function(t,e){return t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curPoints:t.points,prevPoints:e.curPoints}:t.points!==e.curPoints?{curPoints:t.points}:null}},{key:"repeat",value:function(t,e){for(var n=t.length%2!=0?[].concat(E(t),[0]):t,r=[],o=0;ot.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&void 0!==arguments[0]?arguments[0]:[],e=[[]];return t.forEach(function(t){y(t)?e[e.length-1].push(t):e[e.length-1].length>0&&e.push([])}),y(t[0])&&e[e.length-1].push(t[0]),e[e.length-1].length<=0&&(e=e.slice(0,-1)),e},m=function(t,e){var n=v(t);e&&(n=[n.reduce(function(t,e){return[].concat(h(t),h(e))},[])]);var r=n.map(function(t){return t.reduce(function(t,e,n){return"".concat(t).concat(0===n?"M":"L").concat(e.x,",").concat(e.y)},"")}).join("");return 1===n.length?"".concat(r,"Z"):r},g=function(t,e,n){var r=m(t,n);return"".concat("Z"===r.slice(-1)?r.slice(0,-1):r,"L").concat(m(e.reverse(),n).slice(1))},b=function(t){var e=t.points,n=t.className,r=t.baseLinePoints,i=t.connectNulls,a=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,f);if(!e||!e.length)return null;var u=(0,l.Z)("recharts-polygon",n);if(r&&r.length){var c=a.stroke&&"none"!==a.stroke,h=g(e,r,i);return o.createElement("g",{className:u},o.createElement("path",p({},(0,s.L6)(a,!0),{fill:"Z"===h.slice(-1)?a.fill:"none",stroke:"none",d:h})),c?o.createElement("path",p({},(0,s.L6)(a,!0),{fill:"none",d:m(e,i)})):null,c?o.createElement("path",p({},(0,s.L6)(a,!0),{fill:"none",d:m(r,i)})):null)}var d=m(e,i);return o.createElement("path",p({},(0,s.L6)(a,!0),{fill:"Z"===d.slice(-1)?a.fill:"none",className:u,d:d}))},x=n(58811),O=n(41637),w=n(39206);function j(t){return(j="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function S(){return(S=Object.assign?Object.assign.bind():function(t){for(var e=1;e1e-5?"outer"===e?"start":"end":n<-.00001?"outer"===e?"end":"start":"middle"}},{key:"renderAxisLine",value:function(){var t=this.props,e=t.cx,n=t.cy,r=t.radius,i=t.axisLine,a=t.axisLineType,u=E(E({},(0,s.L6)(this.props)),{},{fill:"none"},(0,s.L6)(i));if("circle"===a)return o.createElement(c.o,S({className:"recharts-polar-angle-axis-line"},u,{cx:e,cy:n,r:r}));var l=this.props.ticks.map(function(t){return(0,w.op)(e,n,r,t.coordinate)});return o.createElement(b,S({className:"recharts-polar-angle-axis-line"},u,{points:l}))}},{key:"renderTicks",value:function(){var t=this,e=this.props,n=e.ticks,r=e.tick,i=e.tickLine,a=e.tickFormatter,c=e.stroke,f=(0,s.L6)(this.props),p=(0,s.L6)(r),h=E(E({},f),{},{fill:"none"},(0,s.L6)(i)),d=n.map(function(e,n){var s=t.getTickLineCoord(e),d=E(E(E({textAnchor:t.getTickTextAnchor(e)},f),{},{stroke:"none",fill:c},p),{},{index:n,payload:e,x:s.x2,y:s.y2});return o.createElement(u.m,S({className:"recharts-polar-angle-axis-tick",key:"tick-".concat(e.coordinate)},(0,O.bw)(t.props,e,n)),i&&o.createElement("line",S({className:"recharts-polar-angle-axis-tick-line"},h,s)),r&&l.renderTickItem(r,d,a?a(e.value,n):e.value))});return o.createElement(u.m,{className:"recharts-polar-angle-axis-ticks"},d)}},{key:"render",value:function(){var t=this.props,e=t.ticks,n=t.radius,r=t.axisLine;return!(n<=0)&&e&&e.length?o.createElement(u.m,{className:"recharts-polar-angle-axis"},r&&this.renderAxisLine(),this.renderTicks()):null}}],r=[{key:"renderTickItem",value:function(t,e,n){return o.isValidElement(t)?o.cloneElement(t,e):a()(t)?t(e):o.createElement(x.x,S({},e,{className:"recharts-polar-angle-axis-tick-value"}),n)}}],n&&P(l.prototype,n),r&&P(l,r),Object.defineProperty(l,"prototype",{writable:!1}),l}(o.PureComponent);T(N,"displayName","PolarAngleAxis"),T(N,"axisType","angleAxis"),T(N,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var D=n(35802),I=n.n(D),L=n(37891),R=n.n(L),B=n(26680),z=["cx","cy","angle","ticks","axisLine"],U=["ticks","tick","angle","tickFormatter","stroke"];function F(t){return(F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function $(){return($=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function q(t,e){for(var n=0;nt*o)return!1;var i=n();return t*(e-t*i/2-r)>=0&&t*(e+t*i/2-o)<=0}function _(t){return(_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function T(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function M(t){for(var e=1;e=2?(0,j.uY)(s[1].coordinate-s[0].coordinate):1,w=(r="width"===g,o=f.x,i=f.y,a=f.width,c=f.height,1===O?{start:r?o:i,end:r?o+a:i+c}:{start:r?o+a:i+c,end:r?o:i});return"equidistantPreserveStart"===d?function(t,e,n,r,o){for(var i,a=(r||[]).slice(),u=e.start,c=e.end,l=0,s=1,f=u;s<=a.length;)if(i=function(){var e,i=null==r?void 0:r[l];if(void 0===i)return{v:P(r,s)};var a=l,p=function(){return void 0===e&&(e=n(i,a)),e},h=i.coordinate,d=0===l||k(t,h,p,f,c);d||(l=0,f=u,s+=1),d&&(f=h+t*(p()/2+o),l+=s)}())return i.v;return[]}(O,w,x,s,p):("preserveStart"===d||"preserveStartEnd"===d?function(t,e,n,r,o,i){var a=(r||[]).slice(),u=a.length,c=e.start,l=e.end;if(i){var s=r[u-1],f=n(s,u-1),p=t*(s.coordinate+t*f/2-l);a[u-1]=s=M(M({},s),{},{tickCoord:p>0?s.coordinate-p*t:s.coordinate}),k(t,s.tickCoord,function(){return f},c,l)&&(l=s.tickCoord-t*(f/2+o),a[u-1]=M(M({},s),{},{isShow:!0}))}for(var h=i?u-1:u,d=function(e){var r,i=a[e],u=function(){return void 0===r&&(r=n(i,e)),r};if(0===e){var s=t*(i.coordinate-t*u()/2-c);a[e]=i=M(M({},i),{},{tickCoord:s<0?i.coordinate-s*t:i.coordinate})}else a[e]=i=M(M({},i),{},{tickCoord:i.coordinate});k(t,i.tickCoord,u,c,l)&&(c=i.tickCoord+t*(u()/2+o),a[e]=M(M({},i),{},{isShow:!0}))},y=0;y0?l.coordinate-f*t:l.coordinate})}else i[e]=l=M(M({},l),{},{tickCoord:l.coordinate});k(t,l.tickCoord,s,u,c)&&(c=l.tickCoord-t*(s()/2+o),i[e]=M(M({},l),{},{isShow:!0}))},s=a-1;s>=0;s--)l(s);return i}(O,w,x,s,p)).filter(function(t){return t.isShow})}var N=n(48777),D=n(9841),I=n(8147),L=n(22190),R=n(57165),B=n(82944);function z(t){return(z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var U=["x","y","top","left","width","height","className"];function F(){return(F=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,U));return(0,j.hj)(n)&&(0,j.hj)(i)&&(0,j.hj)(f)&&(0,j.hj)(h)&&(0,j.hj)(u)&&(0,j.hj)(l)?r.createElement("path",F({},(0,B.L6)(y,!0),{className:(0,x.Z)("recharts-cross",d),d:"M".concat(n,",").concat(u,"v").concat(h,"M").concat(l,",").concat(i,"h").concat(f)})):null},Z=n(60474),G=n(81889),q=n(73649),V=n(46485),Y=n(58811),H=n(26680),X=n(41637),K=["viewBox"],J=["viewBox"],Q=["ticks"];function tt(t){return(tt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function te(){return(te=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function ti(t,e){for(var n=0;n0?this.props:f)),o<=0||i<=0||!p||!p.length)?null:r.createElement(D.m,{className:(0,x.Z)("recharts-cartesian-axis",c),ref:function(e){t.layerReference=e}},n&&this.renderAxisLine(),this.renderTicks(p,this.state.fontSize,this.state.letterSpacing),H._.renderCallByParent(this.props))}}],o=[{key:"renderTickItem",value:function(t,e,n){return r.isValidElement(t)?r.cloneElement(t,e):u()(t)?t(e):r.createElement(Y.x,te({},e,{className:"recharts-cartesian-axis-tick-value"}),n)}}],n&&ti(a.prototype,n),o&&ti(a,o),Object.defineProperty(a,"prototype",{writable:!1}),a}(r.Component);tc(ts,"displayName","CartesianAxis"),tc(ts,"defaultProps",{x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd"});var tf=n(55284),tp=n(85355);function th(t){return(th="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function td(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function ty(t){for(var e=1;e0&&e.handleDrag(t.changedTouches[0])}),tP(tA(e),"handleDragEnd",function(){e.setState({isTravellerMoving:!1,isSlideMoving:!1},function(){var t=e.props,n=t.endIndex,r=t.onDragEnd,o=t.startIndex;null==r||r({endIndex:n,startIndex:o})}),e.detachDragEndListener()}),tP(tA(e),"handleLeaveWrapper",function(){(e.state.isTravellerMoving||e.state.isSlideMoving)&&(e.leaveTimer=window.setTimeout(e.handleDragEnd,e.props.leaveTimeOut))}),tP(tA(e),"handleEnterSlideOrTraveller",function(){e.setState({isTextActive:!0})}),tP(tA(e),"handleLeaveSlideOrTraveller",function(){e.setState({isTextActive:!1})}),tP(tA(e),"handleSlideDragStart",function(t){var n=tT(t)?t.changedTouches[0]:t;e.setState({isTravellerMoving:!1,isSlideMoving:!0,slideMoveStartX:n.pageX}),e.attachDragEndListener()}),e.travellerDragStartHandlers={startX:e.handleTravellerDragStart.bind(tA(e),"startX"),endX:e.handleTravellerDragStart.bind(tA(e),"endX")},e.state={},e}return n=[{key:"componentWillUnmount",value:function(){this.leaveTimer&&(clearTimeout(this.leaveTimer),this.leaveTimer=null),this.detachDragEndListener()}},{key:"getIndex",value:function(t){var e=t.startX,n=t.endX,r=this.state.scaleValues,o=this.props,i=o.gap,u=o.data.length-1,c=a.getIndexInRange(r,Math.min(e,n)),l=a.getIndexInRange(r,Math.max(e,n));return{startIndex:c-c%i,endIndex:l===u?u:l-l%i}}},{key:"getTextOfTick",value:function(t){var e=this.props,n=e.data,r=e.tickFormatter,o=e.dataKey,i=(0,tp.F$)(n[t],o,t);return u()(r)?r(i,t):i}},{key:"attachDragEndListener",value:function(){window.addEventListener("mouseup",this.handleDragEnd,!0),window.addEventListener("touchend",this.handleDragEnd,!0),window.addEventListener("mousemove",this.handleDrag,!0)}},{key:"detachDragEndListener",value:function(){window.removeEventListener("mouseup",this.handleDragEnd,!0),window.removeEventListener("touchend",this.handleDragEnd,!0),window.removeEventListener("mousemove",this.handleDrag,!0)}},{key:"handleSlideDrag",value:function(t){var e=this.state,n=e.slideMoveStartX,r=e.startX,o=e.endX,i=this.props,a=i.x,u=i.width,c=i.travellerWidth,l=i.startIndex,s=i.endIndex,f=i.onChange,p=t.pageX-n;p>0?p=Math.min(p,a+u-c-o,a+u-c-r):p<0&&(p=Math.max(p,a-r,a-o));var h=this.getIndex({startX:r+p,endX:o+p});(h.startIndex!==l||h.endIndex!==s)&&f&&f(h),this.setState({startX:r+p,endX:o+p,slideMoveStartX:t.pageX})}},{key:"handleTravellerDragStart",value:function(t,e){var n=tT(e)?e.changedTouches[0]:e;this.setState({isSlideMoving:!1,isTravellerMoving:!0,movingTravellerId:t,brushMoveStartX:n.pageX}),this.attachDragEndListener()}},{key:"handleTravellerMove",value:function(t){var e,n=this.state,r=n.brushMoveStartX,o=n.movingTravellerId,i=n.endX,a=n.startX,u=this.state[o],c=this.props,l=c.x,s=c.width,f=c.travellerWidth,p=c.onChange,h=c.gap,d=c.data,y={startX:this.state.startX,endX:this.state.endX},v=t.pageX-r;v>0?v=Math.min(v,l+s-f-u):v<0&&(v=Math.max(v,l-u)),y[o]=u+v;var m=this.getIndex(y),g=m.startIndex,b=m.endIndex,x=function(){var t=d.length-1;return"startX"===o&&(i>a?g%h==0:b%h==0)||ia?b%h==0:g%h==0)||i>a&&b===t};this.setState((tP(e={},o,u+v),tP(e,"brushMoveStartX",t.pageX),e),function(){p&&x()&&p(m)})}},{key:"handleTravellerMoveKeyboard",value:function(t,e){var n=this,r=this.state,o=r.scaleValues,i=r.startX,a=r.endX,u=this.state[e],c=o.indexOf(u);if(-1!==c){var l=c+t;if(-1!==l&&!(l>=o.length)){var s=o[l];"startX"===e&&s>=a||"endX"===e&&s<=i||this.setState(tP({},e,s),function(){n.props.onChange(n.getIndex({startX:n.state.startX,endX:n.state.endX}))})}}}},{key:"renderBackground",value:function(){var t=this.props,e=t.x,n=t.y,o=t.width,i=t.height,a=t.fill,u=t.stroke;return r.createElement("rect",{stroke:u,fill:a,x:e,y:n,width:o,height:i})}},{key:"renderPanorama",value:function(){var t=this.props,e=t.x,n=t.y,o=t.width,i=t.height,a=t.data,u=t.children,c=t.padding,l=r.Children.only(u);return l?r.cloneElement(l,{x:e,y:n,width:o,height:i,margin:c,compact:!0,data:a}):null}},{key:"renderTravellerLayer",value:function(t,e){var n=this,o=this.props,i=o.y,u=o.travellerWidth,c=o.height,l=o.traveller,s=o.ariaLabel,f=o.data,p=o.startIndex,h=o.endIndex,d=Math.max(t,this.props.x),y=tw(tw({},(0,B.L6)(this.props)),{},{x:d,y:i,width:u,height:c}),v=s||"Min value: ".concat(f[p].name,", Max value: ").concat(f[h].name);return r.createElement(D.m,{tabIndex:0,role:"slider","aria-label":v,"aria-valuenow":t,className:"recharts-brush-traveller",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.travellerDragStartHandlers[e],onTouchStart:this.travellerDragStartHandlers[e],onKeyDown:function(t){["ArrowLeft","ArrowRight"].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),n.handleTravellerMoveKeyboard("ArrowRight"===t.key?1:-1,e))},onFocus:function(){n.setState({isTravellerFocused:!0})},onBlur:function(){n.setState({isTravellerFocused:!1})},style:{cursor:"col-resize"}},a.renderTraveller(l,y))}},{key:"renderSlide",value:function(t,e){var n=this.props,o=n.y,i=n.height,a=n.stroke,u=n.travellerWidth;return r.createElement("rect",{className:"recharts-brush-slide",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.handleSlideDragStart,onTouchStart:this.handleSlideDragStart,style:{cursor:"move"},stroke:"none",fill:a,fillOpacity:.2,x:Math.min(t,e)+u,y:o,width:Math.max(Math.abs(e-t)-u,0),height:i})}},{key:"renderText",value:function(){var t=this.props,e=t.startIndex,n=t.endIndex,o=t.y,i=t.height,a=t.travellerWidth,u=t.stroke,c=this.state,l=c.startX,s=c.endX,f={pointerEvents:"none",fill:u};return r.createElement(D.m,{className:"recharts-brush-texts"},r.createElement(Y.x,tx({textAnchor:"end",verticalAnchor:"middle",x:Math.min(l,s)-5,y:o+i/2},f),this.getTextOfTick(e)),r.createElement(Y.x,tx({textAnchor:"start",verticalAnchor:"middle",x:Math.max(l,s)+a+5,y:o+i/2},f),this.getTextOfTick(n)))}},{key:"render",value:function(){var t=this.props,e=t.data,n=t.className,o=t.children,i=t.x,a=t.y,u=t.width,c=t.height,l=t.alwaysShowText,s=this.state,f=s.startX,p=s.endX,h=s.isTextActive,d=s.isSlideMoving,y=s.isTravellerMoving,v=s.isTravellerFocused;if(!e||!e.length||!(0,j.hj)(i)||!(0,j.hj)(a)||!(0,j.hj)(u)||!(0,j.hj)(c)||u<=0||c<=0)return null;var m=(0,x.Z)("recharts-brush",n),g=1===r.Children.count(o),b=tg("userSelect","none");return r.createElement(D.m,{className:m,onMouseLeave:this.handleLeaveWrapper,onTouchMove:this.handleTouchMove,style:b},this.renderBackground(),g&&this.renderPanorama(),this.renderSlide(f,p),this.renderTravellerLayer(f,"startX"),this.renderTravellerLayer(p,"endX"),(h||d||y||v||l)&&this.renderText())}}],o=[{key:"renderDefaultTraveller",value:function(t){var e=t.x,n=t.y,o=t.width,i=t.height,a=t.stroke,u=Math.floor(n+i/2)-1;return r.createElement(r.Fragment,null,r.createElement("rect",{x:e,y:n,width:o,height:i,fill:a,stroke:"none"}),r.createElement("line",{x1:e+1,y1:u,x2:e+o-1,y2:u,fill:"none",stroke:"#fff"}),r.createElement("line",{x1:e+1,y1:u+2,x2:e+o-1,y2:u+2,fill:"none",stroke:"#fff"}))}},{key:"renderTraveller",value:function(t,e){return r.isValidElement(t)?r.cloneElement(t,e):u()(t)?t(e):a.renderDefaultTraveller(e)}},{key:"getDerivedStateFromProps",value:function(t,e){var n=t.data,r=t.width,o=t.x,i=t.travellerWidth,a=t.updateId,u=t.startIndex,c=t.endIndex;if(n!==e.prevData||a!==e.prevUpdateId)return tw({prevData:n,prevTravellerWidth:i,prevUpdateId:a,prevX:o,prevWidth:r},n&&n.length?t_({data:n,width:r,x:o,travellerWidth:i,startIndex:u,endIndex:c}):{scale:null,scaleValues:null});if(e.scale&&(r!==e.prevWidth||o!==e.prevX||i!==e.prevTravellerWidth)){e.scale.range([o,o+r-i]);var l=e.scale.domain().map(function(t){return e.scale(t)});return{prevData:n,prevTravellerWidth:i,prevUpdateId:a,prevX:o,prevWidth:r,startX:e.scale(t.startIndex),endX:e.scale(t.endIndex),scaleValues:l}}return null}},{key:"getIndexInRange",value:function(t,e){for(var n=t.length,r=0,o=n-1;o-r>1;){var i=Math.floor((r+o)/2);t[i]>e?o=i:r=i}return e>=t[o]?o:r}}],n&&tj(a.prototype,n),o&&tj(a,o),Object.defineProperty(a,"prototype",{writable:!1}),a}(r.PureComponent);tP(tM,"displayName","Brush"),tP(tM,"defaultProps",{height:40,travellerWidth:5,gap:1,fill:"#fff",stroke:"#666",padding:{top:1,right:1,bottom:1,left:1},leaveTimeOut:1e3,alwaysShowText:!1});var tC=n(38569),tN=function(t,e){var n=t.alwaysShow,r=t.ifOverflow;return n&&(r="extendDomain"),r===e},tD=n(1175);function tI(t){return(tI="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function tL(){return(tL=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=Array(e);nt.length)&&(e=t.length);for(var n=0,r=Array(e);n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function el(t,e){return(el=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function es(t){if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function ef(t){return(ef=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function ep(t){return function(t){if(Array.isArray(t))return ed(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||eh(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function eh(t,e){if(t){if("string"==typeof t)return ed(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ed(t,e)}}function ed(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n0?i:t&&t.length&&(0,j.hj)(r)&&(0,j.hj)(o)?t.slice(r,o+1):[]};function eS(t){return"number"===t?[0,"auto"]:void 0}var eA=function(t,e,n,r){var o=t.graphicalItems,i=t.tooltipAxis,a=ej(e,t);return n<0||!o||!o.length||n>=a.length?null:o.reduce(function(o,u){if(u.props.hide)return o;var c,l,s=null!==(c=u.props.data)&&void 0!==c?c:e;if(s&&t.dataStartIndex+t.dataEndIndex!==0&&(s=s.slice(t.dataStartIndex,t.dataEndIndex+1)),i.dataKey&&!i.allowDuplicatedCategory){var f=void 0===s?a:s;l=(0,j.Ap)(f,i.dataKey,r)}else l=s&&s[n]||a[n];return l?[].concat(ep(o),[(0,tp.Qo)(u,l)]):o},[])},eE=function(t,e,n,r){var o=r||{x:t.chartX,y:t.chartY},i="horizontal"===n?o.x:"vertical"===n?o.y:"centric"===n?o.angle:o.radius,a=t.orderedTooltipTicks,u=t.tooltipAxis,c=t.tooltipTicks,l=(0,tp.VO)(i,a,c,u);if(l>=0&&c){var s=c[l]&&c[l].value,f=eA(t,e,l,s),p=ew(n,a,l,o);return{activeTooltipIndex:l,activeLabel:s,activePayload:f,activeCoordinate:p}}return null},eP=function(t,e){var n=e.axes,r=e.graphicalItems,o=e.axisType,a=e.axisIdKey,u=e.stackGroups,c=e.dataStartIndex,s=e.dataEndIndex,f=t.layout,p=t.children,h=t.stackOffset,d=(0,tp.NA)(f,o);return n.reduce(function(e,n){var y=n.props,v=y.type,m=y.dataKey,g=y.allowDataOverflow,b=y.allowDuplicatedCategory,x=y.scale,O=y.ticks,w=y.includeHidden,S=n.props[a];if(e[S])return e;var A=ej(t.data,{graphicalItems:r.filter(function(t){return t.props[a]===S}),dataStartIndex:c,dataEndIndex:s}),E=A.length;(function(t,e,n){if("number"===n&&!0===e&&Array.isArray(t)){var r=null==t?void 0:t[0],o=null==t?void 0:t[1];if(r&&o&&(0,j.hj)(r)&&(0,j.hj)(o))return!0}return!1})(n.props.domain,g,v)&&(_=(0,tp.LG)(n.props.domain,null,g),d&&("number"===v||"auto"!==x)&&(M=(0,tp.gF)(A,m,"category")));var P=eS(v);if(!_||0===_.length){var k,_,T,M,C,N=null!==(C=n.props.domain)&&void 0!==C?C:P;if(m){if(_=(0,tp.gF)(A,m,v),"category"===v&&d){var D=(0,j.bv)(_);b&&D?(T=_,_=l()(0,E)):b||(_=(0,tp.ko)(N,_,n).reduce(function(t,e){return t.indexOf(e)>=0?t:[].concat(ep(t),[e])},[]))}else if("category"===v)_=b?_.filter(function(t){return""!==t&&!i()(t)}):(0,tp.ko)(N,_,n).reduce(function(t,e){return t.indexOf(e)>=0||""===e||i()(e)?t:[].concat(ep(t),[e])},[]);else if("number"===v){var I=(0,tp.ZI)(A,r.filter(function(t){return t.props[a]===S&&(w||!t.props.hide)}),m,o,f);I&&(_=I)}d&&("number"===v||"auto"!==x)&&(M=(0,tp.gF)(A,m,"category"))}else _=d?l()(0,E):u&&u[S]&&u[S].hasStack&&"number"===v?"expand"===h?[0,1]:(0,tp.EB)(u[S].stackGroups,c,s):(0,tp.s6)(A,r.filter(function(t){return t.props[a]===S&&(w||!t.props.hide)}),v,f,!0);"number"===v?(_=t5(p,_,S,o,O),N&&(_=(0,tp.LG)(N,_,g))):"category"===v&&N&&_.every(function(t){return N.indexOf(t)>=0})&&(_=N)}return ev(ev({},e),{},em({},S,ev(ev({},n.props),{},{axisType:o,domain:_,categoricalDomain:M,duplicateDomain:T,originalDomain:null!==(k=n.props.domain)&&void 0!==k?k:P,isCategorical:d,layout:f})))},{})},ek=function(t,e){var n=e.graphicalItems,r=e.Axis,o=e.axisType,i=e.axisIdKey,a=e.stackGroups,u=e.dataStartIndex,c=e.dataEndIndex,s=t.layout,p=t.children,h=ej(t.data,{graphicalItems:n,dataStartIndex:u,dataEndIndex:c}),d=h.length,y=(0,tp.NA)(s,o),v=-1;return n.reduce(function(t,e){var m,g=e.props[i],b=eS("number");return t[g]?t:(v++,m=y?l()(0,d):a&&a[g]&&a[g].hasStack?t5(p,m=(0,tp.EB)(a[g].stackGroups,u,c),g,o):t5(p,m=(0,tp.LG)(b,(0,tp.s6)(h,n.filter(function(t){return t.props[i]===g&&!t.props.hide}),"number",s),r.defaultProps.allowDataOverflow),g,o),ev(ev({},t),{},em({},g,ev(ev({axisType:o},r.defaultProps),{},{hide:!0,orientation:f()(eb,"".concat(o,".").concat(v%2),null),domain:m,originalDomain:b,isCategorical:y,layout:s}))))},{})},e_=function(t,e){var n=e.axisType,r=void 0===n?"xAxis":n,o=e.AxisComp,i=e.graphicalItems,a=e.stackGroups,u=e.dataStartIndex,c=e.dataEndIndex,l=t.children,s="".concat(r,"Id"),f=(0,B.NN)(l,o),p={};return f&&f.length?p=eP(t,{axes:f,graphicalItems:i,axisType:r,axisIdKey:s,stackGroups:a,dataStartIndex:u,dataEndIndex:c}):i&&i.length&&(p=ek(t,{Axis:o,graphicalItems:i,axisType:r,axisIdKey:s,stackGroups:a,dataStartIndex:u,dataEndIndex:c})),p},eT=function(t){var e=(0,j.Kt)(t),n=(0,tp.uY)(e,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:h()(n,function(t){return t.coordinate}),tooltipAxis:e,tooltipAxisBandSize:(0,tp.zT)(e,n)}},eM=function(t){var e=t.children,n=t.defaultShowTooltip,r=(0,B.sP)(e,tM),o=0,i=0;return t.data&&0!==t.data.length&&(i=t.data.length-1),r&&r.props&&(r.props.startIndex>=0&&(o=r.props.startIndex),r.props.endIndex>=0&&(i=r.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:o,dataEndIndex:i,activeTooltipIndex:-1,isTooltipActive:!!n}},eC=function(t){return"horizontal"===t?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:"vertical"===t?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:"centric"===t?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},eN=function(t,e){var n=t.props,r=t.graphicalItems,o=t.xAxisMap,i=void 0===o?{}:o,a=t.yAxisMap,u=void 0===a?{}:a,c=n.width,l=n.height,s=n.children,p=n.margin||{},h=(0,B.sP)(s,tM),d=(0,B.sP)(s,L.D),y=Object.keys(u).reduce(function(t,e){var n=u[e],r=n.orientation;return n.mirror||n.hide?t:ev(ev({},t),{},em({},r,t[r]+n.width))},{left:p.left||0,right:p.right||0}),v=Object.keys(i).reduce(function(t,e){var n=i[e],r=n.orientation;return n.mirror||n.hide?t:ev(ev({},t),{},em({},r,f()(t,"".concat(r))+n.height))},{top:p.top||0,bottom:p.bottom||0}),m=ev(ev({},v),y),g=m.bottom;h&&(m.bottom+=h.props.height||tM.defaultProps.height),d&&e&&(m=(0,tp.By)(m,r,n,e));var b=c-m.left-m.right,x=l-m.top-m.bottom;return ev(ev({brushBottom:g},m),{},{width:Math.max(b,0),height:Math.max(x,0)})},eD=function(t){var e,n=t.chartName,o=t.GraphicalChild,a=t.defaultTooltipEventType,c=void 0===a?"axis":a,l=t.validateTooltipEventTypes,s=void 0===l?["axis"]:l,p=t.axisComponents,h=t.legendContent,d=t.formatAxisMap,v=t.defaultProps,g=function(t,e){var n=e.graphicalItems,r=e.stackGroups,o=e.offset,a=e.updateId,u=e.dataStartIndex,c=e.dataEndIndex,l=t.barSize,s=t.layout,f=t.barGap,h=t.barCategoryGap,d=t.maxBarSize,y=eC(s),v=y.numericAxisName,m=y.cateAxisName,g=!!n&&!!n.length&&n.some(function(t){var e=(0,B.Gf)(t&&t.type);return e&&e.indexOf("Bar")>=0})&&(0,tp.pt)({barSize:l,stackGroups:r}),b=[];return n.forEach(function(n,l){var y,x=ej(t.data,{graphicalItems:[n],dataStartIndex:u,dataEndIndex:c}),O=n.props,w=O.dataKey,j=O.maxBarSize,S=n.props["".concat(v,"Id")],A=n.props["".concat(m,"Id")],E=p.reduce(function(t,r){var o,i=e["".concat(r.axisType,"Map")],a=n.props["".concat(r.axisType,"Id")];i&&i[a]||"zAxis"===r.axisType||function(t,e){if(!t)throw Error("Invariant failed")}(!1);var u=i[a];return ev(ev({},t),{},(em(o={},r.axisType,u),em(o,"".concat(r.axisType,"Ticks"),(0,tp.uY)(u)),o))},{}),P=E[m],k=E["".concat(m,"Ticks")],_=r&&r[S]&&r[S].hasStack&&(0,tp.O3)(n,r[S].stackGroups),T=(0,B.Gf)(n.type).indexOf("Bar")>=0,M=(0,tp.zT)(P,k),C=[];if(T){var N,D,I=i()(j)?d:j,L=null!==(N=null!==(D=(0,tp.zT)(P,k,!0))&&void 0!==D?D:I)&&void 0!==N?N:0;C=(0,tp.qz)({barGap:f,barCategoryGap:h,bandSize:L!==M?L:M,sizeList:g[A],maxBarSize:I}),L!==M&&(C=C.map(function(t){return ev(ev({},t),{},{position:ev(ev({},t.position),{},{offset:t.position.offset-L/2})})}))}var R=n&&n.type&&n.type.getComposedData;R&&b.push({props:ev(ev({},R(ev(ev({},E),{},{displayedData:x,props:t,dataKey:w,item:n,bandSize:M,barPosition:C,offset:o,stackedData:_,layout:s,dataStartIndex:u,dataEndIndex:c}))),{},(em(y={key:n.key||"item-".concat(l)},v,E[v]),em(y,m,E[m]),em(y,"animationId",a),y)),childIndex:(0,B.$R)(n,t.children),item:n})}),b},A=function(t,e){var r=t.props,i=t.dataStartIndex,a=t.dataEndIndex,u=t.updateId;if(!(0,B.TT)({props:r}))return null;var c=r.children,l=r.layout,s=r.stackOffset,f=r.data,h=r.reverseStackOrder,y=eC(l),v=y.numericAxisName,m=y.cateAxisName,b=(0,B.NN)(c,o),x=(0,tp.wh)(f,b,"".concat(v,"Id"),"".concat(m,"Id"),s,h),O=p.reduce(function(t,e){var n="".concat(e.axisType,"Map");return ev(ev({},t),{},em({},n,e_(r,ev(ev({},e),{},{graphicalItems:b,stackGroups:e.axisType===v&&x,dataStartIndex:i,dataEndIndex:a}))))},{}),w=eN(ev(ev({},O),{},{props:r,graphicalItems:b}),null==e?void 0:e.legendBBox);Object.keys(O).forEach(function(t){O[t]=d(r,O[t],w,t.replace("Map",""),n)});var j=eT(O["".concat(m,"Map")]),S=g(r,ev(ev({},O),{},{dataStartIndex:i,dataEndIndex:a,updateId:u,graphicalItems:b,stackGroups:x,offset:w}));return ev(ev({formattedGraphicalItems:S,graphicalItems:b,offset:w,stackGroups:x},j),O)};return e=function(t){(function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&el(t,e)})(l,t);var e,o,a=(e=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}(),function(){var t,n=ef(l);return t=e?Reflect.construct(n,arguments,ef(this).constructor):n.apply(this,arguments),function(t,e){if(e&&("object"===ei(e)||"function"==typeof e))return e;if(void 0!==e)throw TypeError("Derived constructors may only return object or undefined");return es(t)}(this,t)});function l(t){var e,o,c;return function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,l),em(es(c=a.call(this,t)),"eventEmitterSymbol",Symbol("rechartsEventEmitter")),em(es(c),"accessibilityManager",new ee),em(es(c),"handleLegendBBoxUpdate",function(t){if(t){var e=c.state,n=e.dataStartIndex,r=e.dataEndIndex,o=e.updateId;c.setState(ev({legendBBox:t},A({props:c.props,dataStartIndex:n,dataEndIndex:r,updateId:o},ev(ev({},c.state),{},{legendBBox:t}))))}}),em(es(c),"handleReceiveSyncEvent",function(t,e,n){c.props.syncId===t&&(n!==c.eventEmitterSymbol||"function"==typeof c.props.syncMethod)&&c.applySyncEvent(e)}),em(es(c),"handleBrushChange",function(t){var e=t.startIndex,n=t.endIndex;if(e!==c.state.dataStartIndex||n!==c.state.dataEndIndex){var r=c.state.updateId;c.setState(function(){return ev({dataStartIndex:e,dataEndIndex:n},A({props:c.props,dataStartIndex:e,dataEndIndex:n,updateId:r},c.state))}),c.triggerSyncEvent({dataStartIndex:e,dataEndIndex:n})}}),em(es(c),"handleMouseEnter",function(t){var e=c.getMouseInfo(t);if(e){var n=ev(ev({},e),{},{isTooltipActive:!0});c.setState(n),c.triggerSyncEvent(n);var r=c.props.onMouseEnter;u()(r)&&r(n,t)}}),em(es(c),"triggeredAfterMouseMove",function(t){var e=c.getMouseInfo(t),n=e?ev(ev({},e),{},{isTooltipActive:!0}):{isTooltipActive:!1};c.setState(n),c.triggerSyncEvent(n);var r=c.props.onMouseMove;u()(r)&&r(n,t)}),em(es(c),"handleItemMouseEnter",function(t){c.setState(function(){return{isTooltipActive:!0,activeItem:t,activePayload:t.tooltipPayload,activeCoordinate:t.tooltipPosition||{x:t.cx,y:t.cy}}})}),em(es(c),"handleItemMouseLeave",function(){c.setState(function(){return{isTooltipActive:!1}})}),em(es(c),"handleMouseMove",function(t){t.persist(),c.throttleTriggeredAfterMouseMove(t)}),em(es(c),"handleMouseLeave",function(t){var e={isTooltipActive:!1};c.setState(e),c.triggerSyncEvent(e);var n=c.props.onMouseLeave;u()(n)&&n(e,t)}),em(es(c),"handleOuterEvent",function(t){var e,n=(0,B.Bh)(t),r=f()(c.props,"".concat(n));n&&u()(r)&&r(null!==(e=/.*touch.*/i.test(n)?c.getMouseInfo(t.changedTouches[0]):c.getMouseInfo(t))&&void 0!==e?e:{},t)}),em(es(c),"handleClick",function(t){var e=c.getMouseInfo(t);if(e){var n=ev(ev({},e),{},{isTooltipActive:!0});c.setState(n),c.triggerSyncEvent(n);var r=c.props.onClick;u()(r)&&r(n,t)}}),em(es(c),"handleMouseDown",function(t){var e=c.props.onMouseDown;u()(e)&&e(c.getMouseInfo(t),t)}),em(es(c),"handleMouseUp",function(t){var e=c.props.onMouseUp;u()(e)&&e(c.getMouseInfo(t),t)}),em(es(c),"handleTouchMove",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&c.throttleTriggeredAfterMouseMove(t.changedTouches[0])}),em(es(c),"handleTouchStart",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&c.handleMouseDown(t.changedTouches[0])}),em(es(c),"handleTouchEnd",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&c.handleMouseUp(t.changedTouches[0])}),em(es(c),"triggerSyncEvent",function(t){void 0!==c.props.syncId&&t7.emit(t4,c.props.syncId,t,c.eventEmitterSymbol)}),em(es(c),"applySyncEvent",function(t){var e=c.props,n=e.layout,r=e.syncMethod,o=c.state.updateId,i=t.dataStartIndex,a=t.dataEndIndex;if(void 0!==t.dataStartIndex||void 0!==t.dataEndIndex)c.setState(ev({dataStartIndex:i,dataEndIndex:a},A({props:c.props,dataStartIndex:i,dataEndIndex:a,updateId:o},c.state)));else if(void 0!==t.activeTooltipIndex){var u=t.chartX,l=t.chartY,s=t.activeTooltipIndex,f=c.state,p=f.offset,h=f.tooltipTicks;if(!p)return;if("function"==typeof r)s=r(h,t);else if("value"===r){s=-1;for(var d=0;d=0){if(s.dataKey&&!s.allowDuplicatedCategory){var P="function"==typeof s.dataKey?function(t){return"function"==typeof s.dataKey?s.dataKey(t.payload):null}:"payload.".concat(s.dataKey.toString());_=(0,j.Ap)(v,P,p),T=m&&g&&(0,j.Ap)(g,P,p)}else _=null==v?void 0:v[f],T=m&&g&&g[f];if(S||w){var k=void 0!==t.props.activeIndex?t.props.activeIndex:f;return[(0,r.cloneElement)(t,ev(ev(ev({},o.props),A),{},{activeIndex:k})),null,null]}if(!i()(_))return[E].concat(ep(c.renderActivePoints({item:o,activePoint:_,basePoint:T,childIndex:f,isRange:m})))}else{var _,T,M,C=(null!==(M=c.getItemByXY(c.state.activeCoordinate))&&void 0!==M?M:{graphicalItem:E}).graphicalItem,N=C.item,D=void 0===N?t:N,L=C.childIndex,R=ev(ev(ev({},o.props),A),{},{activeIndex:L});return[(0,r.cloneElement)(D,R),null,null]}}return m?[E,null,null]:[E,null]}),em(es(c),"renderCustomized",function(t,e,n){return(0,r.cloneElement)(t,ev(ev({key:"recharts-customized-".concat(n)},c.props),c.state))}),em(es(c),"renderMap",{CartesianGrid:{handler:c.renderGrid,once:!0},ReferenceArea:{handler:c.renderReferenceElement},ReferenceLine:{handler:c.renderReferenceElement},ReferenceDot:{handler:c.renderReferenceElement},XAxis:{handler:c.renderXAxis},YAxis:{handler:c.renderYAxis},Brush:{handler:c.renderBrush,once:!0},Bar:{handler:c.renderGraphicChild},Line:{handler:c.renderGraphicChild},Area:{handler:c.renderGraphicChild},Radar:{handler:c.renderGraphicChild},RadialBar:{handler:c.renderGraphicChild},Scatter:{handler:c.renderGraphicChild},Pie:{handler:c.renderGraphicChild},Funnel:{handler:c.renderGraphicChild},Tooltip:{handler:c.renderCursor,once:!0},PolarGrid:{handler:c.renderPolarGrid,once:!0},PolarAngleAxis:{handler:c.renderPolarAxis},PolarRadiusAxis:{handler:c.renderPolarAxis},Customized:{handler:c.renderCustomized}}),c.clipPathId="".concat(null!==(e=t.id)&&void 0!==e?e:(0,j.EL)("recharts"),"-clip"),c.throttleTriggeredAfterMouseMove=y()(c.triggeredAfterMouseMove,null!==(o=t.throttleDelay)&&void 0!==o?o:1e3/60),c.state={},c}return o=[{key:"componentDidMount",value:function(){var t,e;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:null!==(t=this.props.margin.left)&&void 0!==t?t:0,top:null!==(e=this.props.margin.top)&&void 0!==e?e:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout})}},{key:"getSnapshotBeforeUpdate",value:function(t,e){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==e.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==t.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==t.margin){var n,r;this.accessibilityManager.setDetails({offset:{left:null!==(n=this.props.margin.left)&&void 0!==n?n:0,top:null!==(r=this.props.margin.top)&&void 0!==r?r:0}})}return null}},{key:"componentDidUpdate",value:function(){}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var t=(0,B.sP)(this.props.children,I.u);if(t&&"boolean"==typeof t.props.shared){var e=t.props.shared?"axis":"item";return s.indexOf(e)>=0?e:c}return c}},{key:"getMouseInfo",value:function(t){if(!this.container)return null;var e=this.container,n=e.getBoundingClientRect(),r=(0,S.os)(n),o={chartX:Math.round(t.pageX-r.left),chartY:Math.round(t.pageY-r.top)},i=n.width/e.offsetWidth||1,a=this.inRange(o.chartX,o.chartY,i);if(!a)return null;var u=this.state,c=u.xAxisMap,l=u.yAxisMap;if("axis"!==this.getTooltipEventType()&&c&&l){var s=(0,j.Kt)(c).scale,f=(0,j.Kt)(l).scale,p=s&&s.invert?s.invert(o.chartX):null,h=f&&f.invert?f.invert(o.chartY):null;return ev(ev({},o),{},{xValue:p,yValue:h})}var d=eE(this.state,this.props.data,this.props.layout,a);return d?ev(ev({},o),d):null}},{key:"inRange",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=this.props.layout,o=t/n,i=e/n;if("horizontal"===r||"vertical"===r){var a=this.state.offset;return o>=a.left&&o<=a.left+a.width&&i>=a.top&&i<=a.top+a.height?{x:o,y:i}:null}var u=this.state,c=u.angleAxisMap,l=u.radiusAxisMap;if(c&&l){var s=(0,j.Kt)(c);return(0,O.z3)({x:o,y:i},s)}return null}},{key:"parseEventsOfWrapper",value:function(){var t=this.props.children,e=this.getTooltipEventType(),n=(0,B.sP)(t,I.u),r={};return n&&"axis"===e&&(r="click"===n.props.trigger?{onClick:this.handleClick}:{onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd}),ev(ev({},(0,X.Ym)(this.props,this.handleOuterEvent)),r)}},{key:"addListener",value:function(){t7.on(t4,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){t7.removeListener(t4,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(t,e,n){for(var r=this.state.formattedGraphicalItems,o=0,i=r.length;ot.length)&&(e=t.length);for(var n=0,r=Array(e);n=0?1:-1;"insideStart"===u?(o=g+S*l,a=O):"insideEnd"===u?(o=b-S*l,a=!O):"end"===u&&(o=b+S*l,a=O),a=j<=0?a:!a;var A=(0,d.op)(p,y,w,o),E=(0,d.op)(p,y,w,o+(a?1:-1)*359),P="M".concat(A.x,",").concat(A.y,"\n A").concat(w,",").concat(w,",0,1,").concat(a?0:1,",\n ").concat(E.x,",").concat(E.y),k=i()(t.id)?(0,h.EL)("recharts-radial-line-"):t.id;return r.createElement("text",x({},n,{dominantBaseline:"central",className:(0,s.Z)("recharts-radial-bar-label",f)}),r.createElement("defs",null,r.createElement("path",{id:k,d:P})),r.createElement("textPath",{xlinkHref:"#".concat(k)},e))},j=function(t){var e=t.viewBox,n=t.offset,r=t.position,o=e.cx,i=e.cy,a=e.innerRadius,u=e.outerRadius,c=(e.startAngle+e.endAngle)/2;if("outside"===r){var l=(0,d.op)(o,i,u+n,c),s=l.x;return{x:s,y:l.y,textAnchor:s>=o?"start":"end",verticalAnchor:"middle"}}if("center"===r)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"middle"};if("centerTop"===r)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"start"};if("centerBottom"===r)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"end"};var f=(0,d.op)(o,i,(a+u)/2,c);return{x:f.x,y:f.y,textAnchor:"middle",verticalAnchor:"middle"}},S=function(t){var e=t.viewBox,n=t.parentViewBox,r=t.offset,o=t.position,i=e.x,a=e.y,u=e.width,c=e.height,s=c>=0?1:-1,f=s*r,p=s>0?"end":"start",d=s>0?"start":"end",y=u>=0?1:-1,v=y*r,m=y>0?"end":"start",g=y>0?"start":"end";if("top"===o)return b(b({},{x:i+u/2,y:a-s*r,textAnchor:"middle",verticalAnchor:p}),n?{height:Math.max(a-n.y,0),width:u}:{});if("bottom"===o)return b(b({},{x:i+u/2,y:a+c+f,textAnchor:"middle",verticalAnchor:d}),n?{height:Math.max(n.y+n.height-(a+c),0),width:u}:{});if("left"===o){var x={x:i-v,y:a+c/2,textAnchor:m,verticalAnchor:"middle"};return b(b({},x),n?{width:Math.max(x.x-n.x,0),height:c}:{})}if("right"===o){var O={x:i+u+v,y:a+c/2,textAnchor:g,verticalAnchor:"middle"};return b(b({},O),n?{width:Math.max(n.x+n.width-O.x,0),height:c}:{})}var w=n?{width:u,height:c}:{};return"insideLeft"===o?b({x:i+v,y:a+c/2,textAnchor:g,verticalAnchor:"middle"},w):"insideRight"===o?b({x:i+u-v,y:a+c/2,textAnchor:m,verticalAnchor:"middle"},w):"insideTop"===o?b({x:i+u/2,y:a+f,textAnchor:"middle",verticalAnchor:d},w):"insideBottom"===o?b({x:i+u/2,y:a+c-f,textAnchor:"middle",verticalAnchor:p},w):"insideTopLeft"===o?b({x:i+v,y:a+f,textAnchor:g,verticalAnchor:d},w):"insideTopRight"===o?b({x:i+u-v,y:a+f,textAnchor:m,verticalAnchor:d},w):"insideBottomLeft"===o?b({x:i+v,y:a+c-f,textAnchor:g,verticalAnchor:p},w):"insideBottomRight"===o?b({x:i+u-v,y:a+c-f,textAnchor:m,verticalAnchor:p},w):l()(o)&&((0,h.hj)(o.x)||(0,h.hU)(o.x))&&((0,h.hj)(o.y)||(0,h.hU)(o.y))?b({x:i+(0,h.h1)(o.x,u),y:a+(0,h.h1)(o.y,c),textAnchor:"end",verticalAnchor:"end"},w):b({x:i+u/2,y:a+c/2,textAnchor:"middle",verticalAnchor:"middle"},w)};function A(t){var e,n=t.offset,o=b({offset:void 0===n?5:n},function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,v)),a=o.viewBox,c=o.position,l=o.value,d=o.children,y=o.content,m=o.className,g=o.textBreakAll;if(!a||i()(l)&&i()(d)&&!(0,r.isValidElement)(y)&&!u()(y))return null;if((0,r.isValidElement)(y))return(0,r.cloneElement)(y,o);if(u()(y)){if(e=(0,r.createElement)(y,o),(0,r.isValidElement)(e))return e}else e=O(o);var A="cx"in a&&(0,h.hj)(a.cx),E=(0,p.L6)(o,!0);if(A&&("insideStart"===c||"insideEnd"===c||"end"===c))return w(o,e,E);var P=A?j(o):S(o);return r.createElement(f.x,x({className:(0,s.Z)("recharts-label",void 0===m?"":m)},E,P,{breakAll:g}),e)}A.displayName="Label";var E=function(t){var e=t.cx,n=t.cy,r=t.angle,o=t.startAngle,i=t.endAngle,a=t.r,u=t.radius,c=t.innerRadius,l=t.outerRadius,s=t.x,f=t.y,p=t.top,d=t.left,y=t.width,v=t.height,m=t.clockWise,g=t.labelViewBox;if(g)return g;if((0,h.hj)(y)&&(0,h.hj)(v)){if((0,h.hj)(s)&&(0,h.hj)(f))return{x:s,y:f,width:y,height:v};if((0,h.hj)(p)&&(0,h.hj)(d))return{x:p,y:d,width:y,height:v}}return(0,h.hj)(s)&&(0,h.hj)(f)?{x:s,y:f,width:0,height:0}:(0,h.hj)(e)&&(0,h.hj)(n)?{cx:e,cy:n,startAngle:o||r||0,endAngle:i||r||0,innerRadius:c||0,outerRadius:l||u||a||0,clockWise:m}:t.viewBox?t.viewBox:{}};A.parseViewBox=E,A.renderCallByParent=function(t,e){var n,o,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(!t||!t.children&&i&&!t.label)return null;var a=t.children,c=E(t),s=(0,p.NN)(a,A).map(function(t,n){return(0,r.cloneElement)(t,{viewBox:e||c,key:"label-".concat(n)})});return i?[(n=t.label,o=e||c,n?!0===n?r.createElement(A,{key:"label-implicit",viewBox:o}):(0,h.P2)(n)?r.createElement(A,{key:"label-implicit",viewBox:o,value:n}):(0,r.isValidElement)(n)?n.type===A?(0,r.cloneElement)(n,{key:"label-implicit",viewBox:o}):r.createElement(A,{key:"label-implicit",content:n,viewBox:o}):u()(n)?r.createElement(A,{key:"label-implicit",content:n,viewBox:o}):l()(n)?r.createElement(A,x({viewBox:o},n,{key:"label-implicit"})):null:null)].concat(function(t){if(Array.isArray(t))return m(t)}(s)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(s)||function(t,e){if(t){if("string"==typeof t)return m(t,void 0);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return m(t,void 0)}}(s)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):s}},58772:function(t,e,n){"use strict";n.d(e,{e:function(){return A}});var r=n(2265),o=n(77571),i=n.n(o),a=n(28302),u=n.n(a),c=n(86757),l=n.n(c),s=n(86185),f=n.n(s),p=n(26680),h=n(9841),d=n(82944),y=n(85355);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var m=["valueAccessor"],g=["data","dataKey","clockWise","id","textBreakAll"];function b(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var S=function(t){return Array.isArray(t.value)?f()(t.value):t.value};function A(t){var e=t.valueAccessor,n=void 0===e?S:e,o=j(t,m),a=o.data,u=o.dataKey,c=o.clockWise,l=o.id,s=o.textBreakAll,f=j(o,g);return a&&a.length?r.createElement(h.m,{className:"recharts-label-list"},a.map(function(t,e){var o=i()(u)?n(t,e):(0,y.F$)(t&&t.payload,u),a=i()(l)?{}:{id:"".concat(l,"-").concat(e)};return r.createElement(p._,x({},(0,d.L6)(t,!0),f,a,{parentViewBox:t.parentViewBox,value:o,textBreakAll:s,viewBox:p._.parseViewBox(i()(c)?t:w(w({},t),{},{clockWise:c})),key:"label-".concat(e),index:e}))})):null}A.displayName="LabelList",A.renderCallByParent=function(t,e){var n,o=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(!t||!t.children&&o&&!t.label)return null;var i=t.children,a=(0,d.NN)(i,A).map(function(t,n){return(0,r.cloneElement)(t,{data:e,key:"labelList-".concat(n)})});return o?[(n=t.label)?!0===n?r.createElement(A,{key:"labelList-implicit",data:e}):r.isValidElement(n)||l()(n)?r.createElement(A,{key:"labelList-implicit",data:e,content:n}):u()(n)?r.createElement(A,x({data:e},n,{key:"labelList-implicit"})):null:null].concat(function(t){if(Array.isArray(t))return b(t)}(a)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(a)||function(t,e){if(t){if("string"==typeof t)return b(t,void 0);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return b(t,void 0)}}(a)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):a}},22190:function(t,e,n){"use strict";n.d(e,{D:function(){return C}});var r=n(2265),o=n(86757),i=n.n(o),a=n(61994),u=n(1175),c=n(48777),l=n(14870),s=n(41637);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(){return(p=Object.assign?Object.assign.bind():function(t){for(var e=1;e');var O=e.inactive?h:e.color;return r.createElement("li",p({className:b,style:y,key:"legend-item-".concat(n)},(0,s.bw)(t.props,e,n)),r.createElement(c.T,{width:o,height:o,viewBox:d,style:m},t.renderIcon(e)),r.createElement("span",{className:"recharts-legend-item-text",style:{color:O}},g?g(x,e,n):x))})}},{key:"render",value:function(){var t=this.props,e=t.payload,n=t.layout,o=t.align;return e&&e.length?r.createElement("ul",{className:"recharts-default-legend",style:{padding:0,margin:0,textAlign:"horizontal"===n?o:"left"}},this.renderItems()):null}}],function(t,e){for(var n=0;n1||Math.abs(e.height-this.lastBoundingBox.height)>1)&&(this.lastBoundingBox.width=e.width,this.lastBoundingBox.height=e.height,t&&t(e))}else(-1!==this.lastBoundingBox.width||-1!==this.lastBoundingBox.height)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,t&&t(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?S({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(t){var e,n,r=this.props,o=r.layout,i=r.align,a=r.verticalAlign,u=r.margin,c=r.chartWidth,l=r.chartHeight;return t&&(void 0!==t.left&&null!==t.left||void 0!==t.right&&null!==t.right)||(e="center"===i&&"vertical"===o?{left:((c||0)-this.getBBoxSnapshot().width)/2}:"right"===i?{right:u&&u.right||0}:{left:u&&u.left||0}),t&&(void 0!==t.top&&null!==t.top||void 0!==t.bottom&&null!==t.bottom)||(n="middle"===a?{top:((l||0)-this.getBBoxSnapshot().height)/2}:"bottom"===a?{bottom:u&&u.bottom||0}:{top:u&&u.top||0}),S(S({},e),n)}},{key:"render",value:function(){var t=this,e=this.props,n=e.content,o=e.width,i=e.height,a=e.wrapperStyle,u=e.payloadUniqBy,c=e.payload,l=S(S({position:"absolute",width:o||"auto",height:i||"auto"},this.getDefaultPosition(a)),a);return r.createElement("div",{className:"recharts-legend-wrapper",style:l,ref:function(e){t.wrapperNode=e}},function(t,e){if(r.isValidElement(t))return r.cloneElement(t,e);if("function"==typeof t)return r.createElement(t,e);e.ref;var n=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,w);return r.createElement(g,n)}(n,S(S({},this.props),{},{payload:(0,x.z)(c,u,M)})))}}],o=[{key:"getWithHeight",value:function(t,e){var n=t.props.layout;return"vertical"===n&&(0,b.hj)(t.props.height)?{height:t.props.height}:"horizontal"===n?{width:t.props.width||e}:null}}],n&&A(a.prototype,n),o&&A(a,o),Object.defineProperty(a,"prototype",{writable:!1}),a}(r.PureComponent);_(C,"displayName","Legend"),_(C,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"bottom"})},47625:function(t,e,n){"use strict";n.d(e,{h:function(){return y}});var r=n(61994),o=n(2265),i=n(37065),a=n.n(i),u=n(14326),c=n(16630),l=n(1175),s=n(82944);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function h(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&(t=a()(t,A,{trailing:!0,leading:!1}));var e=new ResizeObserver(t),n=T.current.getBoundingClientRect();return I(n.width,n.height),e.observe(T.current),function(){e.disconnect()}},[I,A]);var L=(0,o.useMemo)(function(){var t=N.containerWidth,e=N.containerHeight;if(t<0||e<0)return null;(0,l.Z)((0,c.hU)(v)||(0,c.hU)(g),"The width(%s) and height(%s) are both fixed numbers,\n maybe you don't need to use a ResponsiveContainer.",v,g),(0,l.Z)(!i||i>0,"The aspect(%s) must be greater than zero.",i);var n=(0,c.hU)(v)?t:v,r=(0,c.hU)(g)?e:g;i&&i>0&&(n?r=n/i:r&&(n=r*i),w&&r>w&&(r=w)),(0,l.Z)(n>0||r>0,"The width(%s) and height(%s) of chart should be greater than 0,\n please check the style of container, or the props width(%s) and height(%s),\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\n height and width.",n,r,v,g,x,O,i);var a=!Array.isArray(j)&&(0,u.isElement)(j)&&(0,s.Gf)(j.type).endsWith("Chart");return o.Children.map(j,function(t){return(0,u.isElement)(t)?(0,o.cloneElement)(t,h({width:n,height:r},a?{style:h({height:"100%",width:"100%",maxHeight:r,maxWidth:n},t.props.style)}:{})):t})},[i,j,g,w,O,x,N,v]);return o.createElement("div",{id:E?"".concat(E):void 0,className:(0,r.Z)("recharts-responsive-container",P),style:h(h({},void 0===_?{}:_),{},{width:v,height:g,minWidth:x,minHeight:O,maxHeight:w}),ref:T},L)})},58811:function(t,e,n){"use strict";n.d(e,{x:function(){return R}});var r=n(2265),o=n(77571),i=n.n(o),a=n(61994),u=n(16630),c=n(34067),l=n(82944),s=n(4094);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,u=[],c=!0,l=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(u.push(r.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return h(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(t,e)}}(t,e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function _(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,u=[],c=!0,l=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(u.push(r.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return T(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return T(t,e)}}(t,e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&void 0!==arguments[0]?arguments[0]:[];return t.reduce(function(t,e){var i=e.word,a=e.width,u=t[t.length-1];return u&&(null==r||o||u.width+a+na||e.reduce(function(t,e){return t.width>e.width?t:e}).width>Number(r),e]},y=0,v=c.length-1,m=0;y<=v&&m<=c.length-1;){var g=Math.floor((y+v)/2),b=_(d(g-1),2),x=b[0],O=b[1],w=_(d(g),1)[0];if(x||w||(y=g+1),x&&w&&(v=g-1),!x&&w){i=O;break}m++}return i||h},D=function(t){return[{words:i()(t)?[]:t.toString().split(M)}]},I=function(t){var e=t.width,n=t.scaleToFit,r=t.children,o=t.style,i=t.breakAll,a=t.maxLines;if((e||n)&&!c.x.isSsr){var u=C({breakAll:i,children:r,style:o});return u?N({breakAll:i,children:r,maxLines:a,style:o},u.wordsWithComputedWidth,u.spaceWidth,e,n):D(r)}return D(r)},L="#808080",R=function(t){var e,n=t.x,o=void 0===n?0:n,i=t.y,c=void 0===i?0:i,s=t.lineHeight,f=void 0===s?"1em":s,p=t.capHeight,h=void 0===p?"0.71em":p,d=t.scaleToFit,y=void 0!==d&&d,v=t.textAnchor,m=t.verticalAnchor,g=t.fill,b=void 0===g?L:g,x=k(t,A),O=(0,r.useMemo)(function(){return I({breakAll:x.breakAll,children:x.children,maxLines:x.maxLines,scaleToFit:y,style:x.style,width:x.width})},[x.breakAll,x.children,x.maxLines,y,x.style,x.width]),w=x.dx,j=x.dy,_=x.angle,T=x.className,M=x.breakAll,C=k(x,E);if(!(0,u.P2)(o)||!(0,u.P2)(c))return null;var N=o+((0,u.hj)(w)?w:0),D=c+((0,u.hj)(j)?j:0);switch(void 0===m?"end":m){case"start":e=S("calc(".concat(h,")"));break;case"middle":e=S("calc(".concat((O.length-1)/2," * -").concat(f," + (").concat(h," / 2))"));break;default:e=S("calc(".concat(O.length-1," * -").concat(f,")"))}var R=[];if(y){var B=O[0].width,z=x.width;R.push("scale(".concat(((0,u.hj)(z)?z/B:1)/B,")"))}return _&&R.push("rotate(".concat(_,", ").concat(N,", ").concat(D,")")),R.length&&(C.transform=R.join(" ")),r.createElement("text",P({},(0,l.L6)(C,!0),{x:N,y:D,className:(0,a.Z)("recharts-text",T),textAnchor:void 0===v?"start":v,fill:b.includes("url")?L:b}),O.map(function(t,n){var o=t.words.join(M?"":" ");return r.createElement("tspan",{x:N,dy:0===n?e:f,key:o},o)}))}},8147:function(t,e,n){"use strict";n.d(e,{u:function(){return F}});var r=n(2265),o=n(34935),i=n.n(o),a=n(77571),u=n.n(a),c=n(61994),l=n(16630);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);nc[r]+s?Math.max(f,c[r]):Math.max(p,c[r])}function w(t){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function j(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function S(t){for(var e=1;e1||Math.abs(t.height-this.lastBoundingBox.height)>1)&&(this.lastBoundingBox.width=t.width,this.lastBoundingBox.height=t.height)}else(-1!==this.lastBoundingBox.width||-1!==this.lastBoundingBox.height)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1)}},{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.handleKeyDown),this.updateBBox()}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.handleKeyDown)}},{key:"componentDidUpdate",value:function(){var t,e;this.props.active&&this.updateBBox(),this.state.dismissed&&((null===(t=this.props.coordinate)||void 0===t?void 0:t.x)!==this.state.dismissedAtCoordinate.x||(null===(e=this.props.coordinate)||void 0===e?void 0:e.y)!==this.state.dismissedAtCoordinate.y)&&(this.state.dismissed=!1)}},{key:"render",value:function(){var t,e,n,o,i,a,u,s,f,p,h,d,y,m,w,j,A,E,P,k,_,T=this,M=this.props,C=M.active,N=M.allowEscapeViewBox,D=M.animationDuration,I=M.animationEasing,L=M.children,R=M.coordinate,B=M.hasPayload,z=M.isAnimationActive,U=M.offset,F=M.position,$=M.reverseDirection,W=M.useTranslate3d,Z=M.viewBox,G=M.wrapperStyle,q=(m=(t={allowEscapeViewBox:N,coordinate:R,offsetTopLeft:U,position:F,reverseDirection:$,tooltipBox:{height:this.lastBoundingBox.height,width:this.lastBoundingBox.width},useTranslate3d:W,viewBox:Z}).allowEscapeViewBox,w=t.coordinate,j=t.offsetTopLeft,A=t.position,E=t.reverseDirection,P=t.tooltipBox,k=t.useTranslate3d,_=t.viewBox,P.height>0&&P.width>0&&w?(n=(e={translateX:d=O({allowEscapeViewBox:m,coordinate:w,key:"x",offsetTopLeft:j,position:A,reverseDirection:E,tooltipDimension:P.width,viewBox:_,viewBoxDimension:_.width}),translateY:y=O({allowEscapeViewBox:m,coordinate:w,key:"y",offsetTopLeft:j,position:A,reverseDirection:E,tooltipDimension:P.height,viewBox:_,viewBoxDimension:_.height}),useTranslate3d:k}).translateX,o=e.translateY,i=e.useTranslate3d,h=(0,v.bO)({transform:i?"translate3d(".concat(n,"px, ").concat(o,"px, 0)"):"translate(".concat(n,"px, ").concat(o,"px)")})):h=x,{cssProperties:h,cssClasses:(s=(a={translateX:d,translateY:y,coordinate:w}).coordinate,f=a.translateX,p=a.translateY,(0,c.Z)(b,(g(u={},"".concat(b,"-right"),(0,l.hj)(f)&&s&&(0,l.hj)(s.x)&&f>=s.x),g(u,"".concat(b,"-left"),(0,l.hj)(f)&&s&&(0,l.hj)(s.x)&&f=s.y),g(u,"".concat(b,"-top"),(0,l.hj)(p)&&s&&(0,l.hj)(s.y)&&p0;return r.createElement(T,{allowEscapeViewBox:o,animationDuration:i,animationEasing:a,isAnimationActive:s,active:n,coordinate:c,hasPayload:O,offset:f,position:d,reverseDirection:v,useTranslate3d:m,viewBox:g,wrapperStyle:b},(t=I(I({},this.props),{},{payload:x}),r.isValidElement(u)?r.cloneElement(u,t):"function"==typeof u?r.createElement(u,t):r.createElement(y,t)))}}],function(t,e){for(var n=0;n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,a),s=(0,o.Z)("recharts-layer",c);return r.createElement("g",u({className:s},(0,i.L6)(l,!0),{ref:e}),n)})},48777:function(t,e,n){"use strict";n.d(e,{T:function(){return c}});var r=n(2265),o=n(61994),i=n(82944),a=["children","width","height","viewBox","className","style","title","desc"];function u(){return(u=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,a),y=l||{width:n,height:c,x:0,y:0},v=(0,o.Z)("recharts-surface",s);return r.createElement("svg",u({},(0,i.L6)(d,!0,"svg"),{className:v,width:n,height:c,style:f,viewBox:"".concat(y.x," ").concat(y.y," ").concat(y.width," ").concat(y.height)}),r.createElement("title",null,p),r.createElement("desc",null,h),e)}},3574:function(t,e,n){"use strict";n.d(e,{b:function(){return B}});var r=n(2265),o=n(71910),i=n(13735),a=n.n(i),u=n(21652),c=n.n(u),l=n(77571),s=n.n(l),f=n(86757),p=n.n(f),h=n(61994),d=n(9841),y=n(57165),v=n(58811),m=n(26680),g=n(58772),b=n(20407),x=n(82944),O=n(34067),w=n(39206),j=n(16630),S=n(85355),A=n(1175),E=n(41637),P=n(11638);function k(t){return(k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _(){return(_=Object.assign?Object.assign.bind():function(t){for(var e=1;e0?a()(t,"paddingAngle",0):0;if(n){var c=(0,j.k4)(n.endAngle-n.startAngle,t.endAngle-t.startAngle),l=M(M({},t),{},{startAngle:u+r,endAngle:u+c(o)+r});i.push(l),u=l.endAngle}else{var s=t.endAngle,f=t.startAngle,h=(0,j.k4)(0,s-f)(o),d=M(M({},t),{},{startAngle:u+r,endAngle:u+h+r});i.push(d),u=d.endAngle}}),r.createElement(d.m,null,t.renderSectorsStatically(i))})}},{key:"attachKeyboardHandlers",value:function(t){var e=this;t.onkeydown=function(t){if(!t.altKey)switch(t.key){case"ArrowLeft":var n=++e.state.sectorToFocus%e.sectorRefs.length;e.sectorRefs[n].focus(),e.setState({sectorToFocus:n});break;case"ArrowRight":var r=--e.state.sectorToFocus<0?e.sectorRefs.length-1:e.state.sectorToFocus%e.sectorRefs.length;e.sectorRefs[r].focus(),e.setState({sectorToFocus:r});break;case"Escape":e.sectorRefs[e.state.sectorToFocus].blur(),e.setState({sectorToFocus:0})}}}},{key:"renderSectors",value:function(){var t=this.props,e=t.sectors,n=t.isAnimationActive,r=this.state.prevSectors;return n&&e&&e.length&&(!r||!c()(r,e))?this.renderSectorsWithAnimation():this.renderSectorsStatically(e)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var t=this,e=this.props,n=e.hide,o=e.sectors,i=e.className,a=e.label,u=e.cx,c=e.cy,l=e.innerRadius,s=e.outerRadius,f=e.isAnimationActive,p=this.state.isAnimationFinished;if(n||!o||!o.length||!(0,j.hj)(u)||!(0,j.hj)(c)||!(0,j.hj)(l)||!(0,j.hj)(s))return null;var y=(0,h.Z)("recharts-pie",i);return r.createElement(d.m,{tabIndex:this.props.rootTabIndex,className:y,ref:function(e){t.pieRef=e}},this.renderSectors(),a&&this.renderLabels(o),m._.renderCallByParent(this.props,null,!1),(!f||p)&&g.e.renderCallByParent(this.props,o,!1))}}],i=[{key:"getDerivedStateFromProps",value:function(t,e){return e.prevIsAnimationActive!==t.isAnimationActive?{prevIsAnimationActive:t.isAnimationActive,prevAnimationId:t.animationId,curSectors:t.sectors,prevSectors:[],isAnimationFinished:!0}:t.isAnimationActive&&t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curSectors:t.sectors,prevSectors:e.curSectors,isAnimationFinished:!0}:t.sectors!==e.curSectors?{curSectors:t.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(t,e){return t>e?"start":t=360?O:O-1)*f,P=i.reduce(function(t,e){var n=(0,S.F$)(e,x,0);return t+((0,j.hj)(n)?n:0)},0);return P>0&&(e=i.map(function(t,e){var r,o=(0,S.F$)(t,x,0),i=(0,S.F$)(t,h,e),a=((0,j.hj)(o)?o:0)/P,l=(r=e?n.endAngle+(0,j.uY)(g)*f*(0!==o?1:0):c)+(0,j.uY)(g)*((0!==o?v:0)+a*E),s=(r+l)/2,p=(m.innerRadius+m.outerRadius)/2,d=[{name:i,value:o,payload:t,dataKey:x,type:y}],b=(0,w.op)(m.cx,m.cy,p,s);return n=M(M(M({percent:a,cornerRadius:u,name:i,tooltipPayload:d,midAngle:s,middleRadius:p,tooltipPosition:b},t),m),{},{value:(0,S.F$)(t,x),startAngle:r,endAngle:l,payload:t,paddingAngle:(0,j.uY)(g)*f})})),M(M({},m),{},{sectors:e,data:i})})},57165:function(t,e,n){"use strict";n.d(e,{H:function(){return V}});var r=n(2265);function o(){}function i(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function a(t){this._context=t}function u(t){this._context=t}function c(t){this._context=t}a.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:i(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:i(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},u.prototype={areaStart:o,areaEnd:o,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:i(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},c.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:i(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class l{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function s(t){this._context=t}function f(t){this._context=t}function p(t){return new f(t)}function h(t,e,n){var r=t._x1-t._x0,o=e-t._x1,i=(t._y1-t._y0)/(r||o<0&&-0),a=(n-t._y1)/(o||r<0&&-0);return((i<0?-1:1)+(a<0?-1:1))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs((i*o+a*r)/(r+o)))||0}function d(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function y(t,e,n){var r=t._x0,o=t._y0,i=t._x1,a=t._y1,u=(i-r)/3;t._context.bezierCurveTo(r+u,o+u*e,i-u,a-u*n,i,a)}function v(t){this._context=t}function m(t){this._context=new g(t)}function g(t){this._context=t}function b(t){this._context=t}function x(t){var e,n,r=t.length-1,o=Array(r),i=Array(r),a=Array(r);for(o[0]=0,i[0]=2,a[0]=t[0]+2*t[1],e=1;e=0;--e)o[e]=(a[e]-o[e+1])/i[e];for(e=0,i[r-1]=(t[r]+o[r-1])/2;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var w=n(22516),j=n(76115),S=n(67790);function A(t){return t[0]}function E(t){return t[1]}function P(t,e){var n=(0,j.Z)(!0),r=null,o=p,i=null,a=(0,S.d)(u);function u(u){var c,l,s,f=(u=(0,w.Z)(u)).length,p=!1;for(null==r&&(i=o(s=a())),c=0;c<=f;++c)!(c=f;--p)u.point(m[p],g[p]);u.lineEnd(),u.areaEnd()}}v&&(m[s]=+t(h,s,l),g[s]=+e(h,s,l),u.point(r?+r(h,s,l):m[s],n?+n(h,s,l):g[s]))}if(d)return u=null,d+""||null}function s(){return P().defined(o).curve(a).context(i)}return t="function"==typeof t?t:void 0===t?A:(0,j.Z)(+t),e="function"==typeof e?e:void 0===e?(0,j.Z)(0):(0,j.Z)(+e),n="function"==typeof n?n:void 0===n?E:(0,j.Z)(+n),l.x=function(e){return arguments.length?(t="function"==typeof e?e:(0,j.Z)(+e),r=null,l):t},l.x0=function(e){return arguments.length?(t="function"==typeof e?e:(0,j.Z)(+e),l):t},l.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:(0,j.Z)(+t),l):r},l.y=function(t){return arguments.length?(e="function"==typeof t?t:(0,j.Z)(+t),n=null,l):e},l.y0=function(t){return arguments.length?(e="function"==typeof t?t:(0,j.Z)(+t),l):e},l.y1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:(0,j.Z)(+t),l):n},l.lineX0=l.lineY0=function(){return s().x(t).y(e)},l.lineY1=function(){return s().x(t).y(n)},l.lineX1=function(){return s().x(r).y(e)},l.defined=function(t){return arguments.length?(o="function"==typeof t?t:(0,j.Z)(!!t),l):o},l.curve=function(t){return arguments.length?(a=t,null!=i&&(u=a(i)),l):a},l.context=function(t){return arguments.length?(null==t?i=u=null:u=a(i=t),l):i},l}var _=n(75551),T=n.n(_),M=n(86757),C=n.n(M),N=n(61994),D=n(41637),I=n(82944),L=n(16630);function R(t){return(R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function B(){return(B=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=Array(e);n=0?1:-1,c=n>=0?1:-1,l=r>=0&&n>=0||r<0&&n<0?1:0;if(a>0&&o instanceof Array){for(var s=[0,0,0,0],f=0;f<4;f++)s[f]=o[f]>a?a:o[f];i="M".concat(t,",").concat(e+u*s[0]),s[0]>0&&(i+="A ".concat(s[0],",").concat(s[0],",0,0,").concat(l,",").concat(t+c*s[0],",").concat(e)),i+="L ".concat(t+n-c*s[1],",").concat(e),s[1]>0&&(i+="A ".concat(s[1],",").concat(s[1],",0,0,").concat(l,",\n ").concat(t+n,",").concat(e+u*s[1])),i+="L ".concat(t+n,",").concat(e+r-u*s[2]),s[2]>0&&(i+="A ".concat(s[2],",").concat(s[2],",0,0,").concat(l,",\n ").concat(t+n-c*s[2],",").concat(e+r)),i+="L ".concat(t+c*s[3],",").concat(e+r),s[3]>0&&(i+="A ".concat(s[3],",").concat(s[3],",0,0,").concat(l,",\n ").concat(t,",").concat(e+r-u*s[3])),i+="Z"}else if(a>0&&o===+o&&o>0){var p=Math.min(a,o);i="M ".concat(t,",").concat(e+u*p,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+c*p,",").concat(e,"\n L ").concat(t+n-c*p,",").concat(e,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+n,",").concat(e+u*p,"\n L ").concat(t+n,",").concat(e+r-u*p,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+n-c*p,",").concat(e+r,"\n L ").concat(t+c*p,",").concat(e+r,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t,",").concat(e+r-u*p," Z")}else i="M ".concat(t,",").concat(e," h ").concat(n," v ").concat(r," h ").concat(-n," Z");return i},h=function(t,e){if(!t||!e)return!1;var n=t.x,r=t.y,o=e.x,i=e.y,a=e.width,u=e.height;return!!(Math.abs(a)>0&&Math.abs(u)>0)&&n>=Math.min(o,o+a)&&n<=Math.max(o,o+a)&&r>=Math.min(i,i+u)&&r<=Math.max(i,i+u)},d={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},y=function(t){var e,n=f(f({},d),t),u=(0,r.useRef)(),s=function(t){if(Array.isArray(t))return t}(e=(0,r.useState)(-1))||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,u=[],c=!0,l=!1;try{for(i=(n=n.call(t)).next;!(c=(r=i.call(n)).done)&&(u.push(r.value),2!==u.length);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(e,2)||function(t,e){if(t){if("string"==typeof t)return l(t,2);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(t,2)}}(e,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=s[0],y=s[1];(0,r.useEffect)(function(){if(u.current&&u.current.getTotalLength)try{var t=u.current.getTotalLength();t&&y(t)}catch(t){}},[]);var v=n.x,m=n.y,g=n.width,b=n.height,x=n.radius,O=n.className,w=n.animationEasing,j=n.animationDuration,S=n.animationBegin,A=n.isAnimationActive,E=n.isUpdateAnimationActive;if(v!==+v||m!==+m||g!==+g||b!==+b||0===g||0===b)return null;var P=(0,o.Z)("recharts-rectangle",O);return E?r.createElement(i.ZP,{canBegin:h>0,from:{width:g,height:b,x:v,y:m},to:{width:g,height:b,x:v,y:m},duration:j,animationEasing:w,isActive:E},function(t){var e=t.width,o=t.height,l=t.x,s=t.y;return r.createElement(i.ZP,{canBegin:h>0,from:"0px ".concat(-1===h?1:h,"px"),to:"".concat(h,"px 0px"),attributeName:"strokeDasharray",begin:S,duration:j,isActive:A,easing:w},r.createElement("path",c({},(0,a.L6)(n,!0),{className:P,d:p(l,s,e,o,x),ref:u})))}):r.createElement("path",c({},(0,a.L6)(n,!0),{className:P,d:p(v,m,g,b,x)}))}},60474:function(t,e,n){"use strict";n.d(e,{L:function(){return v}});var r=n(2265),o=n(61994),i=n(82944),a=n(39206),u=n(16630);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(){return(l=Object.assign?Object.assign.bind():function(t){for(var e=1;e180),",").concat(+(c>s),",\n ").concat(p.x,",").concat(p.y,"\n ");if(o>0){var d=(0,a.op)(n,r,o,c),y=(0,a.op)(n,r,o,s);h+="L ".concat(y.x,",").concat(y.y,"\n A ").concat(o,",").concat(o,",0,\n ").concat(+(Math.abs(l)>180),",").concat(+(c<=s),",\n ").concat(d.x,",").concat(d.y," Z")}else h+="L ".concat(n,",").concat(r," Z");return h},d=function(t){var e=t.cx,n=t.cy,r=t.innerRadius,o=t.outerRadius,i=t.cornerRadius,a=t.forceCornerRadius,c=t.cornerIsExternal,l=t.startAngle,s=t.endAngle,f=(0,u.uY)(s-l),d=p({cx:e,cy:n,radius:o,angle:l,sign:f,cornerRadius:i,cornerIsExternal:c}),y=d.circleTangency,v=d.lineTangency,m=d.theta,g=p({cx:e,cy:n,radius:o,angle:s,sign:-f,cornerRadius:i,cornerIsExternal:c}),b=g.circleTangency,x=g.lineTangency,O=g.theta,w=c?Math.abs(l-s):Math.abs(l-s)-m-O;if(w<0)return a?"M ".concat(v.x,",").concat(v.y,"\n a").concat(i,",").concat(i,",0,0,1,").concat(2*i,",0\n a").concat(i,",").concat(i,",0,0,1,").concat(-(2*i),",0\n "):h({cx:e,cy:n,innerRadius:r,outerRadius:o,startAngle:l,endAngle:s});var j="M ".concat(v.x,",").concat(v.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(f<0),",").concat(y.x,",").concat(y.y,"\n A").concat(o,",").concat(o,",0,").concat(+(w>180),",").concat(+(f<0),",").concat(b.x,",").concat(b.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(f<0),",").concat(x.x,",").concat(x.y,"\n ");if(r>0){var S=p({cx:e,cy:n,radius:r,angle:l,sign:f,isExternal:!0,cornerRadius:i,cornerIsExternal:c}),A=S.circleTangency,E=S.lineTangency,P=S.theta,k=p({cx:e,cy:n,radius:r,angle:s,sign:-f,isExternal:!0,cornerRadius:i,cornerIsExternal:c}),_=k.circleTangency,T=k.lineTangency,M=k.theta,C=c?Math.abs(l-s):Math.abs(l-s)-P-M;if(C<0&&0===i)return"".concat(j,"L").concat(e,",").concat(n,"Z");j+="L".concat(T.x,",").concat(T.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(f<0),",").concat(_.x,",").concat(_.y,"\n A").concat(r,",").concat(r,",0,").concat(+(C>180),",").concat(+(f>0),",").concat(A.x,",").concat(A.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(f<0),",").concat(E.x,",").concat(E.y,"Z")}else j+="L".concat(e,",").concat(n,"Z");return j},y={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},v=function(t){var e,n=f(f({},y),t),a=n.cx,c=n.cy,s=n.innerRadius,p=n.outerRadius,v=n.cornerRadius,m=n.forceCornerRadius,g=n.cornerIsExternal,b=n.startAngle,x=n.endAngle,O=n.className;if(p0&&360>Math.abs(b-x)?d({cx:a,cy:c,innerRadius:s,outerRadius:p,cornerRadius:Math.min(S,j/2),forceCornerRadius:m,cornerIsExternal:g,startAngle:b,endAngle:x}):h({cx:a,cy:c,innerRadius:s,outerRadius:p,startAngle:b,endAngle:x}),r.createElement("path",l({},(0,i.L6)(n,!0),{className:w,d:e,role:"img"}))}},14870:function(t,e,n){"use strict";n.d(e,{v:function(){return N}});var r=n(2265),o=n(75551),i=n.n(o);let a=Math.cos,u=Math.sin,c=Math.sqrt,l=Math.PI,s=2*l;var f={draw(t,e){let n=c(e/l);t.moveTo(n,0),t.arc(0,0,n,0,s)}};let p=c(1/3),h=2*p,d=u(l/10)/u(7*l/10),y=u(s/10)*d,v=-a(s/10)*d,m=c(3),g=c(3)/2,b=1/c(12),x=(b/2+1)*3;var O=n(76115),w=n(67790);c(3),c(3);var j=n(61994),S=n(82944);function A(t){return(A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var E=["type","size","sizeType"];function P(){return(P=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,E)),{},{type:o,size:u,sizeType:l}),p=s.className,h=s.cx,d=s.cy,y=(0,S.L6)(s,!0);return h===+h&&d===+d&&u===+u?r.createElement("path",P({},y,{className:(0,j.Z)("recharts-symbols",p),transform:"translate(".concat(h,", ").concat(d,")"),d:(e=T["symbol".concat(i()(o))]||f,(function(t,e){let n=null,r=(0,w.d)(o);function o(){let o;if(n||(n=o=r()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),o)return n=null,o+""||null}return t="function"==typeof t?t:(0,O.Z)(t||f),e="function"==typeof e?e:(0,O.Z)(void 0===e?64:+e),o.type=function(e){return arguments.length?(t="function"==typeof e?e:(0,O.Z)(e),o):t},o.size=function(t){return arguments.length?(e="function"==typeof t?t:(0,O.Z)(+t),o):e},o.context=function(t){return arguments.length?(n=null==t?null:t,o):n},o})().type(e).size(C(u,l,o))())})):null};N.registerSymbol=function(t,e){T["symbol".concat(i()(t))]=e}},11638:function(t,e,n){"use strict";n.d(e,{bn:function(){return C},a3:function(){return z},lT:function(){return N},V$:function(){return D},w7:function(){return I}});var r=n(2265),o=n(86757),i=n.n(o),a=n(90231),u=n.n(a),c=n(24342),l=n.n(c),s=n(21652),f=n.n(s),p=n(73649),h=n(61994),d=n(71910),y=n(82944);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function m(){return(m=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=Array(e);n0,from:{upperWidth:0,lowerWidth:0,height:p,x:c,y:l},to:{upperWidth:s,lowerWidth:f,height:p,x:c,y:l},duration:j,animationEasing:b,isActive:A},function(t){var e=t.upperWidth,i=t.lowerWidth,u=t.height,c=t.x,l=t.y;return r.createElement(d.ZP,{canBegin:a>0,from:"0px ".concat(-1===a?1:a,"px"),to:"".concat(a,"px 0px"),attributeName:"strokeDasharray",begin:S,duration:j,easing:b},r.createElement("path",m({},(0,y.L6)(n,!0),{className:E,d:O(c,l,e,i,u),ref:o})))}):r.createElement("g",null,r.createElement("path",m({},(0,y.L6)(n,!0),{className:E,d:O(c,l,s,f,p)})))},S=n(60474),A=n(9841),E=n(14870),P=["option","shapeType","propTransformer","activeClassName","isActive"];function k(t){return(k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function T(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,P);if((0,r.isValidElement)(n))e=(0,r.cloneElement)(n,T(T({},f),(0,r.isValidElement)(n)?n.props:n));else if(i()(n))e=n(f);else if(u()(n)&&!l()(n)){var p=(void 0===a?function(t,e){return T(T({},e),t)}:a)(n,f);e=r.createElement(M,{shapeType:o,elementProps:p})}else e=r.createElement(M,{shapeType:o,elementProps:f});return s?r.createElement(A.m,{className:void 0===c?"recharts-active-shape":c},e):e}function N(t,e){return null!=e&&"trapezoids"in t.props}function D(t,e){return null!=e&&"sectors"in t.props}function I(t,e){return null!=e&&"points"in t.props}function L(t,e){var n,r,o=t.x===(null==e||null===(n=e.labelViewBox)||void 0===n?void 0:n.x)||t.x===e.x,i=t.y===(null==e||null===(r=e.labelViewBox)||void 0===r?void 0:r.y)||t.y===e.y;return o&&i}function R(t,e){var n=t.endAngle===e.endAngle,r=t.startAngle===e.startAngle;return n&&r}function B(t,e){var n=t.x===e.x,r=t.y===e.y,o=t.z===e.z;return n&&r&&o}function z(t){var e,n,r,o=t.activeTooltipItem,i=t.graphicalItem,a=t.itemData,u=(N(i,o)?e="trapezoids":D(i,o)?e="sectors":I(i,o)&&(e="points"),e),c=N(i,o)?null===(n=o.tooltipPayload)||void 0===n||null===(n=n[0])||void 0===n||null===(n=n.payload)||void 0===n?void 0:n.payload:D(i,o)?null===(r=o.tooltipPayload)||void 0===r||null===(r=r[0])||void 0===r||null===(r=r.payload)||void 0===r?void 0:r.payload:I(i,o)?o.payload:{},l=a.filter(function(t,e){var n=f()(c,t),r=i.props[u].filter(function(t){var e;return(N(i,o)?e=L:D(i,o)?e=R:I(i,o)&&(e=B),e)(t,o)}),a=i.props[u].indexOf(r[r.length-1]);return n&&e===a});return a.indexOf(l[l.length-1])}},25311:function(t,e,n){"use strict";n.d(e,{Ky:function(){return O},O1:function(){return g},_b:function(){return b},t9:function(){return m},xE:function(){return w}});var r=n(41443),o=n.n(r),i=n(32242),a=n.n(i),u=n(85355),c=n(82944),l=n(16630),s=n(31699);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(t,e){for(var n=0;n0&&(k=Math.min((t||0)-(_[e-1]||0),k))});var T=k/P,M="vertical"===b.layout?n.height:n.width;if("gap"===b.padding&&(c=T*M/2),"no-gap"===b.padding){var C=(0,l.h1)(t.barCategoryGap,T*M),N=T*M/2;c=N-C-(N-C)/M*C}}s="xAxis"===r?[n.left+(j.left||0)+(c||0),n.left+n.width-(j.right||0)-(c||0)]:"yAxis"===r?"horizontal"===f?[n.top+n.height-(j.bottom||0),n.top+(j.top||0)]:[n.top+(j.top||0)+(c||0),n.top+n.height-(j.bottom||0)-(c||0)]:b.range,A&&(s=[s[1],s[0]]);var D=(0,u.Hq)(b,o,m),I=D.scale,L=D.realScaleType;I.domain(O).range(s),(0,u.zF)(I);var R=(0,u.g$)(I,d(d({},b),{},{realScaleType:L}));"xAxis"===r?(g="top"===x&&!S||"bottom"===x&&S,p=n.left,h=v[E]-g*b.height):"yAxis"===r&&(g="left"===x&&!S||"right"===x&&S,p=v[E]-g*b.width,h=n.top);var B=d(d(d({},b),R),{},{realScaleType:L,x:p,y:h,scale:I,width:"xAxis"===r?n.width:b.width,height:"yAxis"===r?n.height:b.height});return B.bandSize=(0,u.zT)(B,R),b.hide||"xAxis"!==r?b.hide||(v[E]+=(g?-1:1)*B.width):v[E]+=(g?-1:1)*B.height,d(d({},i),{},y({},a,B))},{})},g=function(t,e){var n=t.x,r=t.y,o=e.x,i=e.y;return{x:Math.min(n,o),y:Math.min(r,i),width:Math.abs(o-n),height:Math.abs(i-r)}},b=function(t){return g({x:t.x1,y:t.y1},{x:t.x2,y:t.y2})},x=function(){var t,e;function n(t){!function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,n),this.scale=t}return t=[{key:"domain",get:function(){return this.scale.domain}},{key:"range",get:function(){return this.scale.range}},{key:"rangeMin",get:function(){return this.range()[0]}},{key:"rangeMax",get:function(){return this.range()[1]}},{key:"bandwidth",get:function(){return this.scale.bandwidth}},{key:"apply",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.bandAware,r=e.position;if(void 0!==t){if(r)switch(r){case"start":default:return this.scale(t);case"middle":var o=this.bandwidth?this.bandwidth()/2:0;return this.scale(t)+o;case"end":var i=this.bandwidth?this.bandwidth():0;return this.scale(t)+i}if(n){var a=this.bandwidth?this.bandwidth()/2:0;return this.scale(t)+a}return this.scale(t)}}},{key:"isInRange",value:function(t){var e=this.range(),n=e[0],r=e[e.length-1];return n<=r?t>=n&&t<=r:t>=r&&t<=n}}],e=[{key:"create",value:function(t){return new n(t)}}],t&&p(n.prototype,t),e&&p(n,e),Object.defineProperty(n,"prototype",{writable:!1}),n}();y(x,"EPS",1e-4);var O=function(t){var e=Object.keys(t).reduce(function(e,n){return d(d({},e),{},y({},n,x.create(t[n])))},{});return d(d({},e),{},{apply:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.bandAware,i=n.position;return o()(t,function(t,n){return e[n].apply(t,{bandAware:r,position:i})})},isInRange:function(t){return a()(t,function(t,n){return e[n].isInRange(t)})}})},w=function(t){var e=t.width,n=t.height,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=(r%180+180)%180*Math.PI/180,i=Math.atan(n/e);return Math.abs(o>i&&otx(e,t()).base(e.base()),tj.o.apply(e,arguments),e}},scaleOrdinal:function(){return tY.Z},scalePoint:function(){return f.x},scalePow:function(){return tQ},scaleQuantile:function(){return function t(){var e,n=[],r=[],o=[];function i(){var t=0,e=Math.max(1,r.length);for(o=Array(e-1);++t=1)return+n(t[r-1],r-1,t);var r,o=(r-1)*e,i=Math.floor(o),a=+n(t[i],i,t);return a+(+n(t[i+1],i+1,t)-a)*(o-i)}}(n,t/e);return a}function a(t){return null==t||isNaN(t=+t)?e:r[A(o,t)]}return a.invertExtent=function(t){var e=r.indexOf(t);return e<0?[NaN,NaN]:[e>0?o[e-1]:n[0],e=o?[i[o-1],r]:[i[e-1],i[e]]},u.unknown=function(t){return arguments.length&&(e=t),u},u.thresholds=function(){return i.slice()},u.copy=function(){return t().domain([n,r]).range(a).unknown(e)},tj.o.apply(tI(u),arguments)}},scaleRadial:function(){return function t(){var e,n=tw(),r=[0,1],o=!1;function i(t){var r,i=Math.sign(r=n(t))*Math.sqrt(Math.abs(r));return isNaN(i)?e:o?Math.round(i):i}return i.invert=function(t){return n.invert(t1(t))},i.domain=function(t){return arguments.length?(n.domain(t),i):n.domain()},i.range=function(t){return arguments.length?(n.range((r=Array.from(t,td)).map(t1)),i):r.slice()},i.rangeRound=function(t){return i.range(t).round(!0)},i.round=function(t){return arguments.length?(o=!!t,i):o},i.clamp=function(t){return arguments.length?(n.clamp(t),i):n.clamp()},i.unknown=function(t){return arguments.length?(e=t,i):e},i.copy=function(){return t(n.domain(),r).round(o).clamp(n.clamp()).unknown(e)},tj.o.apply(i,arguments),tI(i)}},scaleSequential:function(){return function t(){var e=tI(nY()(tv));return e.copy=function(){return nH(e,t())},tj.O.apply(e,arguments)}},scaleSequentialLog:function(){return function t(){var e=tZ(nY()).domain([1,10]);return e.copy=function(){return nH(e,t()).base(e.base())},tj.O.apply(e,arguments)}},scaleSequentialPow:function(){return nX},scaleSequentialQuantile:function(){return function t(){var e=[],n=tv;function r(t){if(null!=t&&!isNaN(t=+t))return n((A(e,t,1)-1)/(e.length-1))}return r.domain=function(t){if(!arguments.length)return e.slice();for(let n of(e=[],t))null==n||isNaN(n=+n)||e.push(n);return e.sort(b),r},r.interpolator=function(t){return arguments.length?(n=t,r):n},r.range=function(){return e.map((t,r)=>n(r/(e.length-1)))},r.quantiles=function(t){return Array.from({length:t+1},(n,r)=>(function(t,e,n){if(!(!(r=(t=Float64Array.from(function*(t,e){if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(yield e);else{let n=-1;for(let r of t)null!=(r=e(r,++n,t))&&(r=+r)>=r&&(yield r)}}(t,void 0))).length)||isNaN(e=+e))){if(e<=0||r<2)return t6(t);if(e>=1)return t2(t);var r,o=(r-1)*e,i=Math.floor(o),a=t2((function t(e,n,r=0,o=1/0,i){if(n=Math.floor(n),r=Math.floor(Math.max(0,r)),o=Math.floor(Math.min(e.length-1,o)),!(r<=n&&n<=o))return e;for(i=void 0===i?t5:function(t=b){if(t===b)return t5;if("function"!=typeof t)throw TypeError("compare is not a function");return(e,n)=>{let r=t(e,n);return r||0===r?r:(0===t(n,n))-(0===t(e,e))}}(i);o>r;){if(o-r>600){let a=o-r+1,u=n-r+1,c=Math.log(a),l=.5*Math.exp(2*c/3),s=.5*Math.sqrt(c*l*(a-l)/a)*(u-a/2<0?-1:1),f=Math.max(r,Math.floor(n-u*l/a+s)),p=Math.min(o,Math.floor(n+(a-u)*l/a+s));t(e,n,f,p,i)}let a=e[n],u=r,c=o;for(t3(e,r,n),i(e[o],a)>0&&t3(e,r,o);ui(e[u],a);)++u;for(;i(e[c],a)>0;)--c}0===i(e[r],a)?t3(e,r,c):t3(e,++c,o),c<=n&&(r=c+1),n<=c&&(o=c-1)}return e})(t,i).subarray(0,i+1));return a+(t6(t.subarray(i+1))-a)*(o-i)}})(e,r/t))},r.copy=function(){return t(n).domain(e)},tj.O.apply(r,arguments)}},scaleSequentialSqrt:function(){return nK},scaleSequentialSymlog:function(){return function t(){var e=tV(nY());return e.copy=function(){return nH(e,t()).constant(e.constant())},tj.O.apply(e,arguments)}},scaleSqrt:function(){return t0},scaleSymlog:function(){return function t(){var e=tV(tO());return e.copy=function(){return tx(e,t()).constant(e.constant())},tj.o.apply(e,arguments)}},scaleThreshold:function(){return function t(){var e,n=[.5],r=[0,1],o=1;function i(t){return null!=t&&t<=t?r[A(n,t,0,o)]:e}return i.domain=function(t){return arguments.length?(o=Math.min((n=Array.from(t)).length,r.length-1),i):n.slice()},i.range=function(t){return arguments.length?(r=Array.from(t),o=Math.min(n.length,r.length-1),i):r.slice()},i.invertExtent=function(t){var e=r.indexOf(t);return[n[e-1],n[e]]},i.unknown=function(t){return arguments.length?(e=t,i):e},i.copy=function(){return t().domain(n).range(r).unknown(e)},tj.o.apply(i,arguments)}},scaleTime:function(){return nq},scaleUtc:function(){return nV},tickFormat:function(){return tD}});var f=n(55284);let p=Math.sqrt(50),h=Math.sqrt(10),d=Math.sqrt(2);function y(t,e,n){let r,o,i;let a=(e-t)/Math.max(0,n),u=Math.floor(Math.log10(a)),c=a/Math.pow(10,u),l=c>=p?10:c>=h?5:c>=d?2:1;return(u<0?(r=Math.round(t*(i=Math.pow(10,-u)/l)),o=Math.round(e*i),r/ie&&--o,i=-i):(r=Math.round(t/(i=Math.pow(10,u)*l)),o=Math.round(e/i),r*ie&&--o),o0))return[];if(t===e)return[t];let r=e=o))return[];let u=i-o+1,c=Array(u);if(r){if(a<0)for(let t=0;te?1:t>=e?0:NaN}function x(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function O(t){let e,n,r;function o(t,r,o=0,i=t.length){if(o>>1;0>n(t[e],r)?o=e+1:i=e}while(ob(t(e),n),r=(e,n)=>t(e)-n):(e=t===b||t===x?t:w,n=t,r=t),{left:o,center:function(t,e,n=0,i=t.length){let a=o(t,e,n,i-1);return a>n&&r(t[a-1],e)>-r(t[a],e)?a-1:a},right:function(t,r,o=0,i=t.length){if(o>>1;0>=n(t[e],r)?o=e+1:i=e}while(o>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Z(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Z(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=N.exec(t))?new q(e[1],e[2],e[3],1):(e=D.exec(t))?new q(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=I.exec(t))?Z(e[1],e[2],e[3],e[4]):(e=L.exec(t))?Z(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=R.exec(t))?J(e[1],e[2]/100,e[3]/100,1):(e=B.exec(t))?J(e[1],e[2]/100,e[3]/100,e[4]):z.hasOwnProperty(t)?W(z[t]):"transparent"===t?new q(NaN,NaN,NaN,0):null}function W(t){return new q(t>>16&255,t>>8&255,255&t,1)}function Z(t,e,n,r){return r<=0&&(t=e=n=NaN),new q(t,e,n,r)}function G(t,e,n,r){var o;return 1==arguments.length?((o=t)instanceof k||(o=$(o)),o)?new q((o=o.rgb()).r,o.g,o.b,o.opacity):new q:new q(t,e,n,null==r?1:r)}function q(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function V(){return`#${K(this.r)}${K(this.g)}${K(this.b)}`}function Y(){let t=H(this.opacity);return`${1===t?"rgb(":"rgba("}${X(this.r)}, ${X(this.g)}, ${X(this.b)}${1===t?")":`, ${t})`}`}function H(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function X(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function K(t){return((t=X(t))<16?"0":"")+t.toString(16)}function J(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new tt(t,e,n,r)}function Q(t){if(t instanceof tt)return new tt(t.h,t.s,t.l,t.opacity);if(t instanceof k||(t=$(t)),!t)return new tt;if(t instanceof tt)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,o=Math.min(e,n,r),i=Math.max(e,n,r),a=NaN,u=i-o,c=(i+o)/2;return u?(a=e===i?(n-r)/u+(n0&&c<1?0:a,new tt(a,u,c,t.opacity)}function tt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function te(t){return(t=(t||0)%360)<0?t+360:t}function tn(t){return Math.max(0,Math.min(1,t||0))}function tr(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}function to(t,e,n,r,o){var i=t*t,a=i*t;return((1-3*t+3*i-a)*e+(4-6*i+3*a)*n+(1+3*t+3*i-3*a)*r+a*o)/6}E(k,$,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:U,formatHex:U,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Q(this).formatHsl()},formatRgb:F,toString:F}),E(q,G,P(k,{brighter(t){return t=null==t?1.4285714285714286:Math.pow(1.4285714285714286,t),new q(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new q(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new q(X(this.r),X(this.g),X(this.b),H(this.opacity))},displayable(){return -.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:V,formatHex:V,formatHex8:function(){return`#${K(this.r)}${K(this.g)}${K(this.b)}${K((isNaN(this.opacity)?1:this.opacity)*255)}`},formatRgb:Y,toString:Y})),E(tt,function(t,e,n,r){return 1==arguments.length?Q(t):new tt(t,e,n,null==r?1:r)},P(k,{brighter(t){return t=null==t?1.4285714285714286:Math.pow(1.4285714285714286,t),new tt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new tt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,o=2*n-r;return new q(tr(t>=240?t-240:t+120,o,r),tr(t,o,r),tr(t<120?t+240:t-120,o,r),this.opacity)},clamp(){return new tt(te(this.h),tn(this.s),tn(this.l),H(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=H(this.opacity);return`${1===t?"hsl(":"hsla("}${te(this.h)}, ${100*tn(this.s)}%, ${100*tn(this.l)}%${1===t?")":`, ${t})`}`}}));var ti=t=>()=>t;function ta(t,e){var n=e-t;return n?function(e){return t+e*n}:ti(isNaN(t)?e:t)}var tu=function t(e){var n,r=1==(n=+(n=e))?ta:function(t,e){var r,o,i;return e-t?(r=t,o=e,r=Math.pow(r,i=n),o=Math.pow(o,i)-r,i=1/i,function(t){return Math.pow(r+t*o,i)}):ti(isNaN(t)?e:t)};function o(t,e){var n=r((t=G(t)).r,(e=G(e)).r),o=r(t.g,e.g),i=r(t.b,e.b),a=ta(t.opacity,e.opacity);return function(e){return t.r=n(e),t.g=o(e),t.b=i(e),t.opacity=a(e),t+""}}return o.gamma=t,o}(1);function tc(t){return function(e){var n,r,o=e.length,i=Array(o),a=Array(o),u=Array(o);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),o=t[r],i=t[r+1],a=r>0?t[r-1]:2*o-i,u=ru&&(a=e.slice(u,a),l[c]?l[c]+=a:l[++c]=a),(o=o[0])===(i=i[0])?l[c]?l[c]+=i:l[++c]=i:(l[++c]=null,s.push({i:c,x:tl(o,i)})),u=tf.lastIndex;return ue&&(n=t,t=e,e=n),l=function(n){return Math.max(t,Math.min(e,n))}),r=c>2?tb:tg,o=i=null,f}function f(e){return null==e||isNaN(e=+e)?n:(o||(o=r(a.map(t),u,c)))(t(l(e)))}return f.invert=function(n){return l(e((i||(i=r(u,a.map(t),tl)))(n)))},f.domain=function(t){return arguments.length?(a=Array.from(t,td),s()):a.slice()},f.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},f.rangeRound=function(t){return u=Array.from(t),c=th,s()},f.clamp=function(t){return arguments.length?(l=!!t||tv,s()):l!==tv},f.interpolate=function(t){return arguments.length?(c=t,s()):c},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,s()}}function tw(){return tO()(tv,tv)}var tj=n(89999),tS=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function tA(t){var e;if(!(e=tS.exec(t)))throw Error("invalid format: "+t);return new tE({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function tE(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function tP(t,e){if(!isFinite(t)||0===t)return null;var n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"),r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function tk(t){return(t=tP(Math.abs(t)))?t[1]:NaN}function t_(t,e){var n=tP(t,e);if(!n)return t+"";var r=n[0],o=n[1];return o<0?"0."+Array(-o).join("0")+r:r.length>o+1?r.slice(0,o+1)+"."+r.slice(o+1):r+Array(o-r.length+2).join("0")}tA.prototype=tE.prototype,tE.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var tT={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>t_(100*t,e),r:t_,s:function(t,e){var n=tP(t,e);if(!n)return r=void 0,t.toPrecision(e);var o=n[0],i=n[1],a=i-(r=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=o.length;return a===u?o:a>u?o+Array(a-u+1).join("0"):a>0?o.slice(0,a)+"."+o.slice(a):"0."+Array(1-a).join("0")+tP(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function tM(t){return t}var tC=Array.prototype.map,tN=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function tD(t,e,n,r){var o,u,c=g(t,e,n);switch((r=tA(null==r?",f":r)).type){case"s":var l=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(u=Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(tk(l)/3)))-tk(Math.abs(c))))||(r.precision=u),a(r,l);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(u=Math.max(0,tk(Math.abs(Math.max(Math.abs(t),Math.abs(e)))-(o=Math.abs(o=c)))-tk(o))+1)||(r.precision=u-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(u=Math.max(0,-tk(Math.abs(c))))||(r.precision=u-("%"===r.type)*2)}return i(r)}function tI(t){var e=t.domain;return t.ticks=function(t){var n=e();return v(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return tD(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,o,i=e(),a=0,u=i.length-1,c=i[a],l=i[u],s=10;for(l0;){if((o=m(c,l,n))===r)return i[a]=c,i[u]=l,e(i);if(o>0)c=Math.floor(c/o)*o,l=Math.ceil(l/o)*o;else if(o<0)c=Math.ceil(c*o)/o,l=Math.floor(l*o)/o;else break;r=o}return t},t}function tL(){var t=tw();return t.copy=function(){return tx(t,tL())},tj.o.apply(t,arguments),tI(t)}function tR(t,e){t=t.slice();var n,r=0,o=t.length-1,i=t[r],a=t[o];return a-t(-e,n)}function tZ(t){let e,n;let r=t(tB,tz),o=r.domain,a=10;function u(){var i,u;return e=(i=a)===Math.E?Math.log:10===i&&Math.log10||2===i&&Math.log2||(i=Math.log(i),t=>Math.log(t)/i),n=10===(u=a)?t$:u===Math.E?Math.exp:t=>Math.pow(u,t),o()[0]<0?(e=tW(e),n=tW(n),t(tU,tF)):t(tB,tz),r}return r.base=function(t){return arguments.length?(a=+t,u()):a},r.domain=function(t){return arguments.length?(o(t),u()):o()},r.ticks=t=>{let r,i;let u=o(),c=u[0],l=u[u.length-1],s=l0){for(;f<=p;++f)for(r=1;rl)break;d.push(i)}}else for(;f<=p;++f)for(r=a-1;r>=1;--r)if(!((i=f>0?r/n(-f):r*n(f))l)break;d.push(i)}2*d.length{if(null==t&&(t=10),null==o&&(o=10===a?"s":","),"function"!=typeof o&&(a%1||null!=(o=tA(o)).precision||(o.trim=!0),o=i(o)),t===1/0)return o;let u=Math.max(1,a*t/r.ticks().length);return t=>{let r=t/n(Math.round(e(t)));return r*ao(tR(o(),{floor:t=>n(Math.floor(e(t))),ceil:t=>n(Math.ceil(e(t)))})),r}function tG(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function tq(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function tV(t){var e=1,n=t(tG(1),tq(e));return n.constant=function(n){return arguments.length?t(tG(e=+n),tq(e)):e},tI(n)}i=(o=function(t){var e,n,o,i=void 0===t.grouping||void 0===t.thousands?tM:(e=tC.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var o=t.length,i=[],a=0,u=e[0],c=0;o>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),i.push(t.substring(o-=u,o+u)),!((c+=u+1)>r));)u=e[a=(a+1)%e.length];return i.reverse().join(n)}),a=void 0===t.currency?"":t.currency[0]+"",u=void 0===t.currency?"":t.currency[1]+"",c=void 0===t.decimal?".":t.decimal+"",l=void 0===t.numerals?tM:(o=tC.call(t.numerals,String),function(t){return t.replace(/[0-9]/g,function(t){return o[+t]})}),s=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",p=void 0===t.nan?"NaN":t.nan+"";function h(t,e){var n=(t=tA(t)).fill,o=t.align,h=t.sign,d=t.symbol,y=t.zero,v=t.width,m=t.comma,g=t.precision,b=t.trim,x=t.type;"n"===x?(m=!0,x="g"):tT[x]||(void 0===g&&(g=12),b=!0,x="g"),(y||"0"===n&&"="===o)&&(y=!0,n="0",o="=");var O=(e&&void 0!==e.prefix?e.prefix:"")+("$"===d?a:"#"===d&&/[boxX]/.test(x)?"0"+x.toLowerCase():""),w=("$"===d?u:/[%p]/.test(x)?s:"")+(e&&void 0!==e.suffix?e.suffix:""),j=tT[x],S=/[defgprs%]/.test(x);function A(t){var e,a,u,s=O,d=w;if("c"===x)d=j(t)+d,t="";else{var A=(t=+t)<0||1/t<0;if(t=isNaN(t)?p:j(Math.abs(t),g),b&&(t=function(t){e:for(var e,n=t.length,r=1,o=-1;r0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t}(t)),A&&0==+t&&"+"!==h&&(A=!1),s=(A?"("===h?h:f:"-"===h||"("===h?"":h)+s,d=("s"!==x||isNaN(t)||void 0===r?"":tN[8+r/3])+d+(A&&"("===h?")":""),S){for(e=-1,a=t.length;++e(u=t.charCodeAt(e))||u>57){d=(46===u?c+t.slice(e+1):t.slice(e))+d,t=t.slice(0,e);break}}}m&&!y&&(t=i(t,1/0));var E=s.length+t.length+d.length,P=E>1)+s+t+d+P.slice(E);break;default:t=P+s+t+d}return l(t)}return g=void 0===g?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),A.toString=function(){return t+""},A}return{format:h,formatPrefix:function(t,e){var n=3*Math.max(-8,Math.min(8,Math.floor(tk(e)/3))),r=Math.pow(10,-n),o=h(((t=tA(t)).type="f",t),{suffix:tN[8+n/3]});return function(t){return o(r*t)}}}}({thousands:",",grouping:[3],currency:["$",""]})).format,a=o.formatPrefix;var tY=n(36967);function tH(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function tX(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function tK(t){return t<0?-t*t:t*t}function tJ(t){var e=t(tv,tv),n=1;return e.exponent=function(e){return arguments.length?1==(n=+e)?t(tv,tv):.5===n?t(tX,tK):t(tH(n),tH(1/n)):n},tI(e)}function tQ(){var t=tJ(tO());return t.copy=function(){return tx(t,tQ()).exponent(t.exponent())},tj.o.apply(t,arguments),t}function t0(){return tQ.apply(null,arguments).exponent(.5)}function t1(t){return Math.sign(t)*t*t}function t2(t,e){let n;if(void 0===e)for(let e of t)null!=e&&(n=e)&&(n=e);else{let r=-1;for(let o of t)null!=(o=e(o,++r,t))&&(n=o)&&(n=o)}return n}function t6(t,e){let n;if(void 0===e)for(let e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let o of t)null!=(o=e(o,++r,t))&&(n>o||void 0===n&&o>=o)&&(n=o)}return n}function t5(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(te?1:0)}function t3(t,e,n){let r=t[e];t[e]=t[n],t[n]=r}let t7=new Date,t4=new Date;function t8(t,e,n,r){function o(e){return t(e=0==arguments.length?new Date:new Date(+e)),e}return o.floor=e=>(t(e=new Date(+e)),e),o.ceil=n=>(t(n=new Date(n-1)),e(n,1),t(n),n),o.round=t=>{let e=o(t),n=o.ceil(t);return t-e(e(t=new Date(+t),null==n?1:Math.floor(n)),t),o.range=(n,r,i)=>{let a;let u=[];if(n=o.ceil(n),i=null==i?1:Math.floor(i),!(n0))return u;do u.push(a=new Date(+n)),e(n,i),t(n);while(at8(e=>{if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)},(t,r)=>{if(t>=t){if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}}),n&&(o.count=(e,r)=>(t7.setTime(+e),t4.setTime(+r),t(t7),t(t4),Math.floor(n(t7,t4))),o.every=t=>isFinite(t=Math.floor(t))&&t>0?t>1?o.filter(r?e=>r(e)%t==0:e=>o.count(0,e)%t==0):o:null),o}let t9=t8(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);t9.every=t=>isFinite(t=Math.floor(t))&&t>0?t>1?t8(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):t9:null,t9.range;let et=t8(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+1e3*e)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds());et.range;let ee=t8(t=>{t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},(t,e)=>{t.setTime(+t+6e4*e)},(t,e)=>(e-t)/6e4,t=>t.getMinutes());ee.range;let en=t8(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+6e4*e)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes());en.range;let er=t8(t=>{t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())},(t,e)=>{t.setTime(+t+36e5*e)},(t,e)=>(e-t)/36e5,t=>t.getHours());er.range;let eo=t8(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+36e5*e)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours());eo.range;let ei=t8(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1);ei.range;let ea=t8(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1);ea.range;let eu=t8(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5));function ec(t){return t8(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+7*e)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}eu.range;let el=ec(0),es=ec(1),ef=ec(2),ep=ec(3),eh=ec(4),ed=ec(5),ey=ec(6);function ev(t){return t8(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)},(t,e)=>(e-t)/6048e5)}el.range,es.range,ef.range,ep.range,eh.range,ed.range,ey.range;let em=ev(0),eg=ev(1),eb=ev(2),ex=ev(3),eO=ev(4),ew=ev(5),ej=ev(6);em.range,eg.range,eb.range,ex.range,eO.range,ew.range,ej.range;let eS=t8(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());eS.range;let eA=t8(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());eA.range;let eE=t8(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());eE.every=t=>isFinite(t=Math.floor(t))&&t>0?t8(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)}):null,eE.range;let eP=t8(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());function ek(t,e,n,r,o,i){let a=[[et,1,1e3],[et,5,5e3],[et,15,15e3],[et,30,3e4],[i,1,6e4],[i,5,3e5],[i,15,9e5],[i,30,18e5],[o,1,36e5],[o,3,108e5],[o,6,216e5],[o,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function u(e,n,r){let o=Math.abs(n-e)/r,i=O(([,,t])=>t).right(a,o);if(i===a.length)return t.every(g(e/31536e6,n/31536e6,r));if(0===i)return t9.every(Math.max(g(e,n,r),1));let[u,c]=a[o/a[i-1][2]isFinite(t=Math.floor(t))&&t>0?t8(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null,eP.range;let[e_,eT]=ek(eP,eA,em,eu,eo,en),[eM,eC]=ek(eE,eS,el,ei,er,ee);function eN(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function eD(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function eI(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}var eL={"-":"",_:" ",0:"0"},eR=/^\s*\d+/,eB=/^%/,ez=/[\\^$*+?|[\]().{}]/g;function eU(t,e,n){var r=t<0?"-":"",o=(r?-t:t)+"",i=o.length;return r+(i[t.toLowerCase(),e]))}function eZ(t,e,n){var r=eR.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function eG(t,e,n){var r=eR.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function eq(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function eV(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function eY(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function eH(t,e,n){var r=eR.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function eX(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function eK(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function eJ(t,e,n){var r=eR.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function eQ(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function e0(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function e1(t,e,n){var r=eR.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function e2(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function e6(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function e5(t,e,n){var r=eR.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function e3(t,e,n){var r=eR.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function e7(t,e,n){var r=eR.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function e4(t,e,n){var r=eB.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function e8(t,e,n){var r=eR.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function e9(t,e,n){var r=eR.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function nt(t,e){return eU(t.getDate(),e,2)}function ne(t,e){return eU(t.getHours(),e,2)}function nn(t,e){return eU(t.getHours()%12||12,e,2)}function nr(t,e){return eU(1+ei.count(eE(t),t),e,3)}function no(t,e){return eU(t.getMilliseconds(),e,3)}function ni(t,e){return no(t,e)+"000"}function na(t,e){return eU(t.getMonth()+1,e,2)}function nu(t,e){return eU(t.getMinutes(),e,2)}function nc(t,e){return eU(t.getSeconds(),e,2)}function nl(t){var e=t.getDay();return 0===e?7:e}function ns(t,e){return eU(el.count(eE(t)-1,t),e,2)}function nf(t){var e=t.getDay();return e>=4||0===e?eh(t):eh.ceil(t)}function np(t,e){return t=nf(t),eU(eh.count(eE(t),t)+(4===eE(t).getDay()),e,2)}function nh(t){return t.getDay()}function nd(t,e){return eU(es.count(eE(t)-1,t),e,2)}function ny(t,e){return eU(t.getFullYear()%100,e,2)}function nv(t,e){return eU((t=nf(t)).getFullYear()%100,e,2)}function nm(t,e){return eU(t.getFullYear()%1e4,e,4)}function ng(t,e){var n=t.getDay();return eU((t=n>=4||0===n?eh(t):eh.ceil(t)).getFullYear()%1e4,e,4)}function nb(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+eU(e/60|0,"0",2)+eU(e%60,"0",2)}function nx(t,e){return eU(t.getUTCDate(),e,2)}function nO(t,e){return eU(t.getUTCHours(),e,2)}function nw(t,e){return eU(t.getUTCHours()%12||12,e,2)}function nj(t,e){return eU(1+ea.count(eP(t),t),e,3)}function nS(t,e){return eU(t.getUTCMilliseconds(),e,3)}function nA(t,e){return nS(t,e)+"000"}function nE(t,e){return eU(t.getUTCMonth()+1,e,2)}function nP(t,e){return eU(t.getUTCMinutes(),e,2)}function nk(t,e){return eU(t.getUTCSeconds(),e,2)}function n_(t){var e=t.getUTCDay();return 0===e?7:e}function nT(t,e){return eU(em.count(eP(t)-1,t),e,2)}function nM(t){var e=t.getUTCDay();return e>=4||0===e?eO(t):eO.ceil(t)}function nC(t,e){return t=nM(t),eU(eO.count(eP(t),t)+(4===eP(t).getUTCDay()),e,2)}function nN(t){return t.getUTCDay()}function nD(t,e){return eU(eg.count(eP(t)-1,t),e,2)}function nI(t,e){return eU(t.getUTCFullYear()%100,e,2)}function nL(t,e){return eU((t=nM(t)).getUTCFullYear()%100,e,2)}function nR(t,e){return eU(t.getUTCFullYear()%1e4,e,4)}function nB(t,e){var n=t.getUTCDay();return eU((t=n>=4||0===n?eO(t):eO.ceil(t)).getUTCFullYear()%1e4,e,4)}function nz(){return"+0000"}function nU(){return"%"}function nF(t){return+t}function n$(t){return Math.floor(+t/1e3)}function nW(t){return new Date(t)}function nZ(t){return t instanceof Date?+t:+new Date(+t)}function nG(t,e,n,r,o,i,a,u,c,l){var s=tw(),f=s.invert,p=s.domain,h=l(".%L"),d=l(":%S"),y=l("%I:%M"),v=l("%I %p"),m=l("%a %d"),g=l("%b %d"),b=l("%B"),x=l("%Y");function O(t){return(c(t)1)for(var n,r,o,i=1,a=t[e[0]],u=a.length;i=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:nF,s:n$,S:nc,u:nl,U:ns,V:np,w:nh,W:nd,x:null,X:null,y:ny,Y:nm,Z:nb,"%":nU},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return i[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:nx,e:nx,f:nA,g:nL,G:nB,H:nO,I:nw,j:nj,L:nS,m:nE,M:nP,p:function(t){return o[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:nF,s:n$,S:nk,u:n_,U:nT,V:nC,w:nN,W:nD,x:null,X:null,y:nI,Y:nR,Z:nz,"%":nU},O={a:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=d.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=y.exec(e.slice(n));return r?(t.m=v.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return S(t,e,n,r)},d:e0,e:e0,f:e7,g:eX,G:eH,H:e2,I:e2,j:e1,L:e3,m:eQ,M:e6,p:function(t,e,n){var r=l.exec(e.slice(n));return r?(t.p=s.get(r[0].toLowerCase()),n+r[0].length):-1},q:eJ,Q:e8,s:e9,S:e5,u:eG,U:eq,V:eV,w:eZ,W:eY,x:function(t,e,r){return S(t,n,e,r)},X:function(t,e,n){return S(t,r,e,n)},y:eX,Y:eH,Z:eK,"%":e4};function w(t,e){return function(n){var r,o,i,a=[],u=-1,c=0,l=t.length;for(n instanceof Date||(n=new Date(+n));++u53)return null;"w"in i||(i.w=1),"Z"in i?(r=(o=(r=eD(eI(i.y,0,1))).getUTCDay())>4||0===o?eg.ceil(r):eg(r),r=ea.offset(r,(i.V-1)*7),i.y=r.getUTCFullYear(),i.m=r.getUTCMonth(),i.d=r.getUTCDate()+(i.w+6)%7):(r=(o=(r=eN(eI(i.y,0,1))).getDay())>4||0===o?es.ceil(r):es(r),r=ei.offset(r,(i.V-1)*7),i.y=r.getFullYear(),i.m=r.getMonth(),i.d=r.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),o="Z"in i?eD(eI(i.y,0,1)).getUTCDay():eN(eI(i.y,0,1)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,eD(i)):eN(i)}}function S(t,e,n,r){for(var o,i,a=0,u=e.length,c=n.length;a=c)return -1;if(37===(o=e.charCodeAt(a++))){if(!(i=O[(o=e.charAt(a++))in eL?e.charAt(a++):o])||(r=i(t,n,r))<0)return -1}else if(o!=n.charCodeAt(r++))return -1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),x.x=w(n,x),x.X=w(r,x),x.c=w(e,x),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=j(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=j(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})).format,u.parse,l=u.utcFormat,u.utcParse;var n2=n(22516),n6=n(76115);function n5(t){for(var e=t.length,n=Array(e);--e>=0;)n[e]=e;return n}function n3(t,e){return t[e]}function n7(t){let e=[];return e.key=t,e}var n4=n(95645),n8=n.n(n4),n9=n(99008),rt=n.n(n9),re=n(77571),rn=n.n(re),rr=n(86757),ro=n.n(rr),ri=n(42715),ra=n.n(ri),ru=n(13735),rc=n.n(ru),rl=n(11314),rs=n.n(rl),rf=n(82559),rp=n.n(rf),rh=n(75551),rd=n.n(rh),ry=n(21652),rv=n.n(ry),rm=n(34935),rg=n.n(rm),rb=n(61134),rx=n.n(rb);function rO(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n=e?n.apply(void 0,o):t(e-a,rA(function(){for(var t=arguments.length,e=Array(t),r=0;rt.length)&&(e=t.length);for(var n=0,r=Array(e);nr&&(o=r,i=n),[o,i]}function rB(t,e,n){if(t.lte(0))return new(rx())(0);var r=rC.getDigitCount(t.toNumber()),o=new(rx())(10).pow(r),i=t.div(o),a=1!==r?.05:.1,u=new(rx())(Math.ceil(i.div(a).toNumber())).add(n).mul(a).mul(o);return e?u:new(rx())(Math.ceil(u))}function rz(t,e,n){var r=1,o=new(rx())(t);if(!o.isint()&&n){var i=Math.abs(t);i<1?(r=new(rx())(10).pow(rC.getDigitCount(t)-1),o=new(rx())(Math.floor(o.div(r).toNumber())).mul(r)):i>1&&(o=new(rx())(Math.floor(t)))}else 0===t?o=new(rx())(Math.floor((e-1)/2)):n||(o=new(rx())(Math.floor(t)));var a=Math.floor((e-1)/2);return r_(rk(function(t){return o.add(new(rx())(t-a).mul(r)).toNumber()}),rP)(0,e)}var rU=rM(function(t){var e=rD(t,2),n=e[0],r=e[1],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=Math.max(o,2),u=rD(rR([n,r]),2),c=u[0],l=u[1];if(c===-1/0||l===1/0){var s=l===1/0?[c].concat(rN(rP(0,o-1).map(function(){return 1/0}))):[].concat(rN(rP(0,o-1).map(function(){return-1/0})),[l]);return n>r?rT(s):s}if(c===l)return rz(c,o,i);var f=function t(e,n,r,o){var i,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(!Number.isFinite((n-e)/(r-1)))return{step:new(rx())(0),tickMin:new(rx())(0),tickMax:new(rx())(0)};var u=rB(new(rx())(n).sub(e).div(r-1),o,a),c=Math.ceil((i=e<=0&&n>=0?new(rx())(0):(i=new(rx())(e).add(n).div(2)).sub(new(rx())(i).mod(u))).sub(e).div(u).toNumber()),l=Math.ceil(new(rx())(n).sub(i).div(u).toNumber()),s=c+l+1;return s>r?t(e,n,r,o,a+1):(s0?l+(r-s):l,c=n>0?c:c+(r-s)),{step:u,tickMin:i.sub(new(rx())(c).mul(u)),tickMax:i.add(new(rx())(l).mul(u))})}(c,l,a,i),p=f.step,h=f.tickMin,d=f.tickMax,y=rC.rangeStep(h,d.add(new(rx())(.1).mul(p)),p);return n>r?rT(y):y});rM(function(t){var e=rD(t,2),n=e[0],r=e[1],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=Math.max(o,2),u=rD(rR([n,r]),2),c=u[0],l=u[1];if(c===-1/0||l===1/0)return[n,r];if(c===l)return rz(c,o,i);var s=rB(new(rx())(l).sub(c).div(a-1),i,0),f=r_(rk(function(t){return new(rx())(c).add(new(rx())(t).mul(s)).toNumber()}),rP)(0,a).filter(function(t){return t>=c&&t<=l});return n>r?rT(f):f});var rF=rM(function(t,e){var n=rD(t,2),r=n[0],o=n[1],i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=rD(rR([r,o]),2),u=a[0],c=a[1];if(u===-1/0||c===1/0)return[r,o];if(u===c)return[u];var l=rB(new(rx())(c).sub(u).div(Math.max(e,2)-1),i,0),s=[].concat(rN(rC.rangeStep(new(rx())(u),new(rx())(c).sub(new(rx())(.99).mul(l)),l)),[c]);return r>o?rT(s):s}),r$=n(13137),rW=n(16630),rZ=n(82944),rG=n(38569);function rq(t){return(rq="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function rV(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function rY(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=Array(e);n1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=-1,a=null!==(e=null==n?void 0:n.length)&&void 0!==e?e:0;if(a<=1)return 0;if(o&&"angleAxis"===o.axisType&&1e-6>=Math.abs(Math.abs(o.range[1]-o.range[0])-360))for(var u=o.range,c=0;c0?r[c-1].coordinate:r[a-1].coordinate,s=r[c].coordinate,f=c>=a-1?r[0].coordinate:r[c+1].coordinate,p=void 0;if((0,rW.uY)(s-l)!==(0,rW.uY)(f-s)){var h=[];if((0,rW.uY)(f-s)===(0,rW.uY)(u[1]-u[0])){p=f;var d=s+u[1]-u[0];h[0]=Math.min(d,(d+l)/2),h[1]=Math.max(d,(d+l)/2)}else{p=l;var y=f+u[1]-u[0];h[0]=Math.min(s,(y+s)/2),h[1]=Math.max(s,(y+s)/2)}var v=[Math.min(s,(p+s)/2),Math.max(s,(p+s)/2)];if(t>v[0]&&t<=v[1]||t>=h[0]&&t<=h[1]){i=r[c].index;break}}else{var m=Math.min(l,f),g=Math.max(l,f);if(t>(m+s)/2&&t<=(g+s)/2){i=r[c].index;break}}}else for(var b=0;b0&&b(n[b].coordinate+n[b-1].coordinate)/2&&t<=(n[b].coordinate+n[b+1].coordinate)/2||b===a-1&&t>(n[b].coordinate+n[b-1].coordinate)/2){i=n[b].index;break}return i},r1=function(t){var e,n=t.type.displayName,r=t.props,o=r.stroke,i=r.fill;switch(n){case"Line":e=o;break;case"Area":case"Radar":e=o&&"none"!==o?o:i;break;default:e=i}return e},r2=function(t){var e=t.barSize,n=t.stackGroups,r=void 0===n?{}:n;if(!r)return{};for(var o={},i=Object.keys(r),a=0,u=i.length;a=0});if(y&&y.length){var v=y[0].props.barSize,m=y[0].props[d];o[m]||(o[m]=[]),o[m].push({item:y[0],stackList:y.slice(1),barSize:rn()(v)?e:v})}}return o},r6=function(t){var e,n=t.barGap,r=t.barCategoryGap,o=t.bandSize,i=t.sizeList,a=void 0===i?[]:i,u=t.maxBarSize,c=a.length;if(c<1)return null;var l=(0,rW.h1)(n,o,0,!0),s=[];if(a[0].barSize===+a[0].barSize){var f=!1,p=o/c,h=a.reduce(function(t,e){return t+e.barSize||0},0);(h+=(c-1)*l)>=o&&(h-=(c-1)*l,l=0),h>=o&&p>0&&(f=!0,p*=.9,h=c*p);var d={offset:((o-h)/2>>0)-l,size:0};e=a.reduce(function(t,e){var n={item:e.item,position:{offset:d.offset+d.size+l,size:f?p:e.barSize}},r=[].concat(rX(t),[n]);return d=r[r.length-1].position,e.stackList&&e.stackList.length&&e.stackList.forEach(function(t){r.push({item:t,position:d})}),r},s)}else{var y=(0,rW.h1)(r,o,0,!0);o-2*y-(c-1)*l<=0&&(l=0);var v=(o-2*y-(c-1)*l)/c;v>1&&(v>>=0);var m=u===+u?Math.min(v,u):v;e=a.reduce(function(t,e,n){var r=[].concat(rX(t),[{item:e.item,position:{offset:y+(v+l)*n+(v-m)/2,size:m}}]);return e.stackList&&e.stackList.length&&e.stackList.forEach(function(t){r.push({item:t,position:r[r.length-1].position})}),r},s)}return e},r5=function(t,e,n,r){var o=n.children,i=n.width,a=n.margin,u=i-(a.left||0)-(a.right||0),c=(0,rG.z)({children:o,legendWidth:u});if(c){var l=r||{},s=l.width,f=l.height,p=c.align,h=c.verticalAlign,d=c.layout;if(("vertical"===d||"horizontal"===d&&"middle"===h)&&"center"!==p&&(0,rW.hj)(t[p]))return rY(rY({},t),{},rH({},p,t[p]+(s||0)));if(("horizontal"===d||"vertical"===d&&"center"===p)&&"middle"!==h&&(0,rW.hj)(t[h]))return rY(rY({},t),{},rH({},h,t[h]+(f||0)))}return t},r3=function(t,e,n,r,o){var i=e.props.children,a=(0,rZ.NN)(i,r$.W).filter(function(t){var e;return e=t.props.direction,!!rn()(o)||("horizontal"===r?"yAxis"===o:"vertical"===r||"x"===e?"xAxis"===o:"y"!==e||"yAxis"===o)});if(a&&a.length){var u=a.map(function(t){return t.props.dataKey});return t.reduce(function(t,e){var r=rJ(e,n,0),o=Array.isArray(r)?[rt()(r),n8()(r)]:[r,r],i=u.reduce(function(t,n){var r=rJ(e,n,0),i=o[0]-Math.abs(Array.isArray(r)?r[0]:r),a=o[1]+Math.abs(Array.isArray(r)?r[1]:r);return[Math.min(i,t[0]),Math.max(a,t[1])]},[1/0,-1/0]);return[Math.min(i[0],t[0]),Math.max(i[1],t[1])]},[1/0,-1/0])}return null},r7=function(t,e,n,r,o){var i=e.map(function(e){return r3(t,e,n,o,r)}).filter(function(t){return!rn()(t)});return i&&i.length?i.reduce(function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]},[1/0,-1/0]):null},r4=function(t,e,n,r,o){var i=e.map(function(e){var i=e.props.dataKey;return"number"===n&&i&&r3(t,e,i,r)||rQ(t,i,n,o)});if("number"===n)return i.reduce(function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]},[1/0,-1/0]);var a={};return i.reduce(function(t,e){for(var n=0,r=e.length;n=2?2*(0,rW.uY)(a[0]-a[1])*c:c,e&&(t.ticks||t.niceTicks))?(t.ticks||t.niceTicks).map(function(t){return{coordinate:r(o?o.indexOf(t):t)+c,value:t,offset:c}}).filter(function(t){return!rp()(t.coordinate)}):t.isCategorical&&t.categoricalDomain?t.categoricalDomain.map(function(t,e){return{coordinate:r(t)+c,value:t,index:e,offset:c}}):r.ticks&&!n?r.ticks(t.tickCount).map(function(t){return{coordinate:r(t)+c,value:t,offset:c}}):r.domain().map(function(t,e){return{coordinate:r(t)+c,value:o?o[t]:t,index:e,offset:c}})},oe=new WeakMap,on=function(t,e){if("function"!=typeof e)return t;oe.has(t)||oe.set(t,new WeakMap);var n=oe.get(t);if(n.has(e))return n.get(e);var r=function(){t.apply(void 0,arguments),e.apply(void 0,arguments)};return n.set(e,r),r},or=function(t,e,n){var r=t.scale,o=t.type,i=t.layout,a=t.axisType;if("auto"===r)return"radial"===i&&"radiusAxis"===a?{scale:f.Z(),realScaleType:"band"}:"radial"===i&&"angleAxis"===a?{scale:tL(),realScaleType:"linear"}:"category"===o&&e&&(e.indexOf("LineChart")>=0||e.indexOf("AreaChart")>=0||e.indexOf("ComposedChart")>=0&&!n)?{scale:f.x(),realScaleType:"point"}:"category"===o?{scale:f.Z(),realScaleType:"band"}:{scale:tL(),realScaleType:"linear"};if(ra()(r)){var u="scale".concat(rd()(r));return{scale:(s[u]||f.x)(),realScaleType:s[u]?u:"point"}}return ro()(r)?{scale:r}:{scale:f.x(),realScaleType:"point"}},oo=function(t){var e=t.domain();if(e&&!(e.length<=2)){var n=e.length,r=t.range(),o=Math.min(r[0],r[1])-1e-4,i=Math.max(r[0],r[1])+1e-4,a=t(e[0]),u=t(e[n-1]);(ai||ui)&&t.domain([e[0],e[n-1]])}},oi=function(t,e){if(!t)return null;for(var n=0,r=t.length;nr)&&(o[1]=r),o[0]>r&&(o[0]=r),o[1]=0?(t[a][n][0]=o,t[a][n][1]=o+u,o=t[a][n][1]):(t[a][n][0]=i,t[a][n][1]=i+u,i=t[a][n][1])}},expand:function(t,e){if((r=t.length)>0){for(var n,r,o,i=0,a=t[0].length;i0){for(var n,r=0,o=t[e[0]],i=o.length;r0&&(r=(n=t[e[0]]).length)>0){for(var n,r,o,i=0,a=1;a=0?(t[i][n][0]=o,t[i][n][1]=o+a,o=t[i][n][1]):(t[i][n][0]=0,t[i][n][1]=0)}}},oc=function(t,e,n){var r=e.map(function(t){return t.props.dataKey}),o=ou[n];return(function(){var t=(0,n6.Z)([]),e=n5,n=n1,r=n3;function o(o){var i,a,u=Array.from(t.apply(this,arguments),n7),c=u.length,l=-1;for(let t of o)for(i=0,++l;i=0?0:o<0?o:r}return n[0]},od=function(t,e){var n=t.props.stackId;if((0,rW.P2)(n)){var r=e[n];if(r){var o=r.items.indexOf(t);return o>=0?r.stackedData[o]:null}}return null},oy=function(t,e,n){return Object.keys(t).reduce(function(r,o){var i=t[o].stackedData.reduce(function(t,r){var o=r.slice(e,n+1).reduce(function(t,e){return[rt()(e.concat([t[0]]).filter(rW.hj)),n8()(e.concat([t[1]]).filter(rW.hj))]},[1/0,-1/0]);return[Math.min(t[0],o[0]),Math.max(t[1],o[1])]},[1/0,-1/0]);return[Math.min(i[0],r[0]),Math.max(i[1],r[1])]},[1/0,-1/0]).map(function(t){return t===1/0||t===-1/0?0:t})},ov=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,om=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,og=function(t,e,n){if(ro()(t))return t(e,n);if(!Array.isArray(t))return e;var r=[];if((0,rW.hj)(t[0]))r[0]=n?t[0]:Math.min(t[0],e[0]);else if(ov.test(t[0])){var o=+ov.exec(t[0])[1];r[0]=e[0]-o}else ro()(t[0])?r[0]=t[0](e[0]):r[0]=e[0];if((0,rW.hj)(t[1]))r[1]=n?t[1]:Math.max(t[1],e[1]);else if(om.test(t[1])){var i=+om.exec(t[1])[1];r[1]=e[1]+i}else ro()(t[1])?r[1]=t[1](e[1]):r[1]=e[1];return r},ob=function(t,e,n){if(t&&t.scale&&t.scale.bandwidth){var r=t.scale.bandwidth();if(!n||r>0)return r}if(t&&e&&e.length>=2){for(var o=rg()(e,function(t){return t.coordinate}),i=1/0,a=1,u=o.length;a1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||r.x.isSsr)return{width:0,height:0};var o=(Object.keys(e=a({},n)).forEach(function(t){e[t]||delete e[t]}),e),i=JSON.stringify({text:t,copyStyle:o});if(u.widthCache[i])return u.widthCache[i];try{var s=document.getElementById(l);s||((s=document.createElement("span")).setAttribute("id",l),s.setAttribute("aria-hidden","true"),document.body.appendChild(s));var f=a(a({},c),o);Object.assign(s.style,f),s.textContent="".concat(t);var p=s.getBoundingClientRect(),h={width:p.width,height:p.height};return u.widthCache[i]=h,++u.cacheCount>2e3&&(u.cacheCount=0,u.widthCache={}),h}catch(t){return{width:0,height:0}}},f=function(t){return{top:t.top+window.scrollY-document.documentElement.clientTop,left:t.left+window.scrollX-document.documentElement.clientLeft}}},16630:function(t,e,n){"use strict";n.d(e,{Ap:function(){return O},EL:function(){return v},Kt:function(){return g},P2:function(){return d},bv:function(){return b},h1:function(){return m},hU:function(){return p},hj:function(){return h},k4:function(){return x},uY:function(){return f}});var r=n(42715),o=n.n(r),i=n(82559),a=n.n(i),u=n(13735),c=n.n(u),l=n(22345),s=n.n(l),f=function(t){return 0===t?0:t>0?1:-1},p=function(t){return o()(t)&&t.indexOf("%")===t.length-1},h=function(t){return s()(t)&&!a()(t)},d=function(t){return h(t)||o()(t)},y=0,v=function(t){var e=++y;return"".concat(t||"").concat(e)},m=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!h(t)&&!o()(t))return r;if(p(t)){var u=t.indexOf("%");n=e*parseFloat(t.slice(0,u))/100}else n=+t;return a()(n)&&(n=r),i&&n>e&&(n=e),n},g=function(t){if(!t)return null;var e=Object.keys(t);return e&&e.length?t[e[0]]:null},b=function(t){if(!Array.isArray(t))return!1;for(var e=t.length,n={},r=0;r2?n-2:0),o=2;ot.length)&&(e=t.length);for(var n=0,r=Array(e);n2&&void 0!==arguments[2]?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(n.left||0)-(n.right||0)),Math.abs(e-(n.top||0)-(n.bottom||0)))/2},y=function(t,e,n,r,u){var c=t.width,p=t.height,h=t.startAngle,y=t.endAngle,v=(0,i.h1)(t.cx,c,c/2),m=(0,i.h1)(t.cy,p,p/2),g=d(c,p,n),b=(0,i.h1)(t.innerRadius,g,0),x=(0,i.h1)(t.outerRadius,g,.8*g);return Object.keys(e).reduce(function(t,n){var i,c=e[n],p=c.domain,d=c.reversed;if(o()(c.range))"angleAxis"===r?i=[h,y]:"radiusAxis"===r&&(i=[b,x]),d&&(i=[i[1],i[0]]);else{var g,O=function(t){if(Array.isArray(t))return t}(g=i=c.range)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,u=[],c=!0,l=!1;try{for(i=(n=n.call(t)).next;!(c=(r=i.call(n)).done)&&(u.push(r.value),2!==u.length);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(g,2)||function(t,e){if(t){if("string"==typeof t)return f(t,2);var n=Object.prototype.toString.call(t).slice(8,-1);if("Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return f(t,2)}}(g,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();h=O[0],y=O[1]}var w=(0,a.Hq)(c,u),j=w.realScaleType,S=w.scale;S.domain(p).range(i),(0,a.zF)(S);var A=(0,a.g$)(S,l(l({},c),{},{realScaleType:j})),E=l(l(l({},c),A),{},{range:i,radius:x,realScaleType:j,scale:S,cx:v,cy:m,innerRadius:b,outerRadius:x,startAngle:h,endAngle:y});return l(l({},t),{},s({},n,E))},{})},v=function(t,e){var n=t.x,r=t.y;return Math.sqrt(Math.pow(n-e.x,2)+Math.pow(r-e.y,2))},m=function(t,e){var n=t.x,r=t.y,o=e.cx,i=e.cy,a=v({x:n,y:r},{x:o,y:i});if(a<=0)return{radius:a};var u=Math.acos((n-o)/a);return r>i&&(u=2*Math.PI-u),{radius:a,angle:180*u/Math.PI,angleInRadian:u}},g=function(t){var e=t.startAngle,n=t.endAngle,r=Math.min(Math.floor(e/360),Math.floor(n/360));return{startAngle:e-360*r,endAngle:n-360*r}},b=function(t,e){var n,r=m({x:t.x,y:t.y},e),o=r.radius,i=r.angle,a=e.innerRadius,u=e.outerRadius;if(ou)return!1;if(0===o)return!0;var c=g(e),s=c.startAngle,f=c.endAngle,p=i;if(s<=f){for(;p>f;)p-=360;for(;p=s&&p<=f}else{for(;p>s;)p-=360;for(;p=f&&p<=s}return n?l(l({},e),{},{radius:o,angle:p+360*Math.min(Math.floor(e.startAngle/360),Math.floor(e.endAngle/360))}):null}},82944:function(t,e,n){"use strict";n.d(e,{$R:function(){return B},$k:function(){return M},Bh:function(){return R},Gf:function(){return j},L6:function(){return N},NN:function(){return P},TT:function(){return _},eu:function(){return L},rL:function(){return D},sP:function(){return k}});var r=n(13735),o=n.n(r),i=n(77571),a=n.n(i),u=n(42715),c=n.n(u),l=n(86757),s=n.n(l),f=n(28302),p=n.n(f),h=n(2265),d=n(14326),y=n(16630),v=n(46485),m=n(41637),g=["children"],b=["children"];function x(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function O(t){return(O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var w={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart"},j=function(t){return"string"==typeof t?t:t?t.displayName||t.name||"Component":""},S=null,A=null,E=function t(e){if(e===S&&Array.isArray(A))return A;var n=[];return h.Children.forEach(e,function(e){a()(e)||((0,d.isFragment)(e)?n=n.concat(t(e.props.children)):n.push(e))}),A=n,S=e,n};function P(t,e){var n=[],r=[];return r=Array.isArray(e)?e.map(function(t){return j(t)}):[j(e)],E(t).forEach(function(t){var e=o()(t,"type.displayName")||o()(t,"type.name");-1!==r.indexOf(e)&&n.push(t)}),n}function k(t,e){var n=P(t,e);return n&&n[0]}var _=function(t){if(!t||!t.props)return!1;var e=t.props,n=e.width,r=e.height;return!!(0,y.hj)(n)&&!(n<=0)&&!!(0,y.hj)(r)&&!(r<=0)},T=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],M=function(t){return t&&"object"===O(t)&&"cx"in t&&"cy"in t&&"r"in t},C=function(t,e,n,r){var o,i=null!==(o=null===m.ry||void 0===m.ry?void 0:m.ry[r])&&void 0!==o?o:[];return!s()(t)&&(r&&i.includes(e)||m.Yh.includes(e))||n&&m.nv.includes(e)},N=function(t,e,n){if(!t||"function"==typeof t||"boolean"==typeof t)return null;var r=t;if((0,h.isValidElement)(t)&&(r=t.props),!p()(r))return null;var o={};return Object.keys(r).forEach(function(t){var i;C(null===(i=r)||void 0===i?void 0:i[t],t,e,n)&&(o[t]=r[t])}),o},D=function t(e,n){if(e===n)return!0;var r=h.Children.count(e);if(r!==h.Children.count(n))return!1;if(0===r)return!0;if(1===r)return I(Array.isArray(e)?e[0]:e,Array.isArray(n)?n[0]:n);for(var o=0;o=0)n.push(t);else if(t){var i=j(t.type),a=e[i]||{},u=a.handler,l=a.once;if(u&&(!l||!r[i])){var s=u(t,i,o);n.push(s),r[i]=!0}}}),n},R=function(t){var e=t&&t.type;return e&&w[e]?w[e]:null},B=function(t,e){return E(e).indexOf(t)}},46485:function(t,e,n){"use strict";function r(t,e){for(var n in t)if(({}).hasOwnProperty.call(t,n)&&(!({}).hasOwnProperty.call(e,n)||t[n]!==e[n]))return!1;for(var r in e)if(({}).hasOwnProperty.call(e,r)&&!({}).hasOwnProperty.call(t,r))return!1;return!0}n.d(e,{w:function(){return r}})},38569:function(t,e,n){"use strict";n.d(e,{z:function(){return l}});var r=n(22190),o=n(85355),i=n(82944);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function c(t){for(var e=1;et.forEach(t=>{"function"==typeof t?t(e):null!=t&&(t.current=e)})}function i(...t){return(0,r.useCallback)(o(...t),t)}},37053:function(t,e,n){"use strict";n.d(e,{g7:function(){return a}});var r=n(1119),o=n(2265),i=n(98575);let a=(0,o.forwardRef)((t,e)=>{let{children:n,...i}=t,a=o.Children.toArray(n),c=a.find(l);if(c){let t=c.props.children,n=a.map(e=>e!==c?e:o.Children.count(t)>1?o.Children.only(null):(0,o.isValidElement)(t)?t.props.children:null);return(0,o.createElement)(u,(0,r.Z)({},i,{ref:e}),(0,o.isValidElement)(t)?(0,o.cloneElement)(t,void 0,n):null)}return(0,o.createElement)(u,(0,r.Z)({},i,{ref:e}),n)});a.displayName="Slot";let u=(0,o.forwardRef)((t,e)=>{let{children:n,...r}=t;return(0,o.isValidElement)(n)?(0,o.cloneElement)(n,{...function(t,e){let n={...e};for(let r in e){let o=t[r],i=e[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...t)=>{i(...t),o(...t)}:o&&(n[r]=o):"style"===r?n[r]={...o,...i}:"className"===r&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...t,...n}}(r,n.props),ref:e?(0,i.F)(e,n.ref):n.ref}):o.Children.count(n)>1?o.Children.only(null):null});u.displayName="SlotClone";let c=({children:t})=>(0,o.createElement)(o.Fragment,null,t);function l(t){return(0,o.isValidElement)(t)&&t.type===c}},90535:function(t,e,n){"use strict";n.d(e,{j:function(){return a}});var r=n(61994);let o=t=>"boolean"==typeof t?"".concat(t):0===t?"0":t,i=r.W,a=(t,e)=>n=>{var r;if((null==e?void 0:e.variants)==null)return i(t,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:a,defaultVariants:u}=e,c=Object.keys(a).map(t=>{let e=null==n?void 0:n[t],r=null==u?void 0:u[t];if(null===e)return null;let i=o(e)||o(r);return a[t][i]}),l=n&&Object.entries(n).reduce((t,e)=>{let[n,r]=e;return void 0===r||(t[n]=r),t},{});return i(t,c,null==e?void 0:null===(r=e.compoundVariants)||void 0===r?void 0:r.reduce((t,e)=>{let{class:n,className:r,...o}=e;return Object.entries(o).every(t=>{let[e,n]=t;return Array.isArray(n)?n.includes({...u,...l}[e]):({...u,...l})[e]===n})?[...t,n,r]:t},[]),null==n?void 0:n.class,null==n?void 0:n.className)}},55284:function(t,e,n){"use strict";n.d(e,{Z:function(){return i},x:function(){return a}});var r=n(89999),o=n(36967);function i(){var t,e,n=(0,o.Z)().unknown(void 0),a=n.domain,u=n.range,c=0,l=1,s=!1,f=0,p=0,h=.5;function d(){var n=a().length,r=l=0))throw Error(`invalid digits: ${t}`);if(e>15)return a;let n=10**e;return function(t){this._+=t[0];for(let e=1,r=t.length;e1e-6){if(Math.abs(f*c-l*s)>1e-6&&i){let h=n-a,d=o-u,y=c*c+l*l,v=Math.sqrt(y),m=Math.sqrt(p),g=i*Math.tan((r-Math.acos((y+p-(h*h+d*d))/(2*v*m)))/2),b=g/m,x=g/v;Math.abs(b-1)>1e-6&&this._append`L${t+b*s},${e+b*f}`,this._append`A${i},${i},0,0,${+(f*h>s*d)},${this._x1=t+x*c},${this._y1=e+x*l}`}else this._append`L${this._x1=t},${this._y1=e}`}}arc(t,e,n,a,u,c){if(t=+t,e=+e,c=!!c,(n=+n)<0)throw Error(`negative radius: ${n}`);let l=n*Math.cos(a),s=n*Math.sin(a),f=t+l,p=e+s,h=1^c,d=c?a-u:u-a;null===this._x1?this._append`M${f},${p}`:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-p)>1e-6)&&this._append`L${f},${p}`,n&&(d<0&&(d=d%o+o),d>i?this._append`A${n},${n},0,1,${h},${t-l},${e-s}A${n},${n},0,1,${h},${this._x1=f},${this._y1=p}`:d>1e-6&&this._append`A${n},${n},0,${+(d>=r)},${h},${this._x1=t+n*Math.cos(u)},${this._y1=e+n*Math.sin(u)}`)}rect(t,e,n,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}}function c(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{let t=Math.floor(n);if(!(t>=0))throw RangeError(`invalid digits: ${n}`);e=t}return t},()=>new u(e)}u.prototype}}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/972-5b96c0591eeae4ee.js b/phase-1-core-infra/frontend/.next/static/chunks/972-5b96c0591eeae4ee.js new file mode 100644 index 0000000000000000000000000000000000000000..61fcecb0ac80ca18deb04e8b73cfed8c1010bc09 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/972-5b96c0591eeae4ee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[972],{55449:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addLocale",{enumerable:!0,get:function(){return r}}),n(33068);let r=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;ra?e.prefetch(t,o):e.prefetch(t,n,r))().catch(e=>{})}}function R(e){return"string"==typeof e?e:(0,s.formatUrl)(e)}let y=a.default.forwardRef(function(e,t){let n,r;let{href:s,as:m,children:y,prefetch:P=null,passHref:S,replace:b,shallow:O,scroll:A,locale:v,onClick:T,onMouseEnter:N,onTouchStart:I,legacyBehavior:C=!1,...x}=e;n=y,C&&("string"==typeof n||"number"==typeof n)&&(n=(0,o.jsx)("a",{children:n}));let j=a.default.useContext(f.RouterContext),M=a.default.useContext(d.AppRouterContext),w=null!=j?j:M,L=!j,D=!1!==P,U=null===P?g.PrefetchKind.AUTO:g.PrefetchKind.FULL,{href:k,as:F}=a.default.useMemo(()=>{if(!j){let e=R(s);return{href:e,as:m?R(m):e}}let[e,t]=(0,i.resolveHref)(j,s,!0);return{href:e,as:m?(0,i.resolveHref)(j,m):t||e}},[j,s,m]),X=a.default.useRef(k),W=a.default.useRef(F);C&&(r=a.default.Children.only(n));let G=C?r&&"object"==typeof r&&r.ref:t,[H,Y,B]=(0,p.useIntersection)({rootMargin:"200px"}),K=a.default.useCallback(e=>{(W.current!==F||X.current!==k)&&(B(),W.current=F,X.current=k),H(e),G&&("function"==typeof G?G(e):"object"==typeof G&&(G.current=e))},[F,G,k,B,H]);a.default.useEffect(()=>{w&&Y&&D&&E(w,k,F,{locale:v},{kind:U},L)},[F,k,Y,v,D,null==j?void 0:j.locale,w,L,U]);let V={ref:K,onClick(e){C||"function"!=typeof T||T(e),C&&r.props&&"function"==typeof r.props.onClick&&r.props.onClick(e),w&&!e.defaultPrevented&&function(e,t,n,r,o,i,s,l,c){let{nodeName:f}=e.currentTarget;if("A"===f.toUpperCase()&&(function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||!c&&!(0,u.isLocalURL)(n)))return;e.preventDefault();let d=()=>{let e=null==s||s;"beforePopState"in t?t[o?"replace":"push"](n,r,{shallow:i,locale:l,scroll:e}):t[o?"replace":"push"](r||n,{scroll:e})};c?a.default.startTransition(d):d()}(e,w,k,F,b,O,A,v,L)},onMouseEnter(e){C||"function"!=typeof N||N(e),C&&r.props&&"function"==typeof r.props.onMouseEnter&&r.props.onMouseEnter(e),w&&(D||!L)&&E(w,k,F,{locale:v,priority:!0,bypassPrefetchedCheck:!0},{kind:U},L)},onTouchStart:function(e){C||"function"!=typeof I||I(e),C&&r.props&&"function"==typeof r.props.onTouchStart&&r.props.onTouchStart(e),w&&(D||!L)&&E(w,k,F,{locale:v,priority:!0,bypassPrefetchedCheck:!0},{kind:U},L)}};if((0,l.isAbsoluteUrl)(F))V.href=F;else if(!C||S||"a"===r.type&&!("href"in r.props)){let e=void 0!==v?v:null==j?void 0:j.locale,t=(null==j?void 0:j.isLocaleDomain)&&(0,h.getDomainLocale)(F,e,null==j?void 0:j.locales,null==j?void 0:j.domainLocales);V.href=t||(0,_.addBasePath)((0,c.addLocale)(F,e,null==j?void 0:j.defaultLocale))}return C?a.default.cloneElement(r,V):(0,o.jsx)("a",{...x,...V,children:n})});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},63515:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{cancelIdleCallback:function(){return r},requestIdleCallback:function(){return n}});let n="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},r="undefined"!=typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},25246:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"resolveHref",{enumerable:!0,get:function(){return f}});let r=n(48637),o=n(57497),a=n(17053),i=n(3987),u=n(33068),s=n(53552),l=n(86279),c=n(37205);function f(e,t,n){let f;let d="string"==typeof t?t:(0,o.formatWithValidation)(t),p=d.match(/^[a-zA-Z]{1,}:\/\//),h=p?d.slice(p[0].length):d;if((h.split("?",1)[0]||"").match(/(\/\/|\\)/)){console.error("Invalid href '"+d+"' passed to next/router in page: '"+e.pathname+"'. Repeated forward-slashes (//) or backslashes \\ are not valid in the href.");let t=(0,i.normalizeRepeatedSlashes)(h);d=(p?p[0]:"")+t}if(!(0,s.isLocalURL)(d))return n?[d]:d;try{f=new URL(d.startsWith("#")?e.asPath:e.pathname,"http://n")}catch(e){f=new URL("/","http://n")}try{let e=new URL(d,f);e.pathname=(0,u.normalizePathTrailingSlash)(e.pathname);let t="";if((0,l.isDynamicRoute)(e.pathname)&&e.searchParams&&n){let n=(0,r.searchParamsToUrlQuery)(e.searchParams),{result:i,params:u}=(0,c.interpolateAs)(e.pathname,e.pathname,n);i&&(t=(0,o.formatWithValidation)({pathname:i,hash:e.hash,query:(0,a.omit)(n,u)}))}let i=e.origin===f.origin?e.href.slice(e.origin.length):e.href;return n?[i,t||i]:i}catch(e){return n?[d]:d}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16081:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useIntersection",{enumerable:!0,get:function(){return s}});let r=n(2265),o=n(63515),a="function"==typeof IntersectionObserver,i=new Map,u=[];function s(e){let{rootRef:t,rootMargin:n,disabled:s}=e,l=s||!a,[c,f]=(0,r.useState)(!1),d=(0,r.useRef)(null),p=(0,r.useCallback)(e=>{d.current=e},[]);return(0,r.useEffect)(()=>{if(a){if(l||c)return;let e=d.current;if(e&&e.tagName)return function(e,t,n){let{id:r,observer:o,elements:a}=function(e){let t;let n={root:e.root||null,margin:e.rootMargin||""},r=u.find(e=>e.root===n.root&&e.margin===n.margin);if(r&&(t=i.get(r)))return t;let o=new Map;return t={id:n,observer:new IntersectionObserver(e=>{e.forEach(e=>{let t=o.get(e.target),n=e.isIntersecting||e.intersectionRatio>0;t&&n&&t(n)})},e),elements:o},u.push(n),i.set(n,t),t}(n);return a.set(e,t),o.observe(e),function(){if(a.delete(e),o.unobserve(e),0===a.size){o.disconnect(),i.delete(r);let e=u.findIndex(e=>e.root===r.root&&e.margin===r.margin);e>-1&&u.splice(e,1)}}}(e,e=>e&&f(e),{root:null==t?void 0:t.current,rootMargin:n})}else if(!c){let e=(0,o.requestIdleCallback)(()=>f(!0));return()=>(0,o.cancelIdleCallback)(e)}},[l,n,t,c,d.current]),[p,c,(0,r.useCallback)(()=>{f(!1)},[])]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},19259:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ACTION_SUFFIX:function(){return s},APP_DIR_ALIAS:function(){return T},CACHE_ONE_YEAR:function(){return y},DOT_NEXT_ALIAS:function(){return A},ESLINT_DEFAULT_DIRS:function(){return B},GSP_NO_RETURNED_VALUE:function(){return F},GSSP_COMPONENT_MEMBER_ERROR:function(){return G},GSSP_NO_RETURNED_VALUE:function(){return X},INSTRUMENTATION_HOOK_FILENAME:function(){return b},MIDDLEWARE_FILENAME:function(){return P},MIDDLEWARE_LOCATION_REGEXP:function(){return S},NEXT_BODY_SUFFIX:function(){return f},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return R},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return h},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return _},NEXT_CACHE_SOFT_TAGS_HEADER:function(){return p},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return E},NEXT_CACHE_TAGS_HEADER:function(){return d},NEXT_CACHE_TAG_MAX_ITEMS:function(){return g},NEXT_CACHE_TAG_MAX_LENGTH:function(){return m},NEXT_DATA_SUFFIX:function(){return l},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return r},NEXT_META_SUFFIX:function(){return c},NEXT_QUERY_PARAM_PREFIX:function(){return n},NON_STANDARD_NODE_ENV:function(){return H},PAGES_DIR_ALIAS:function(){return O},PRERENDER_REVALIDATE_HEADER:function(){return o},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return a},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return M},ROOT_DIR_ALIAS:function(){return v},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return j},RSC_ACTION_ENCRYPTION_ALIAS:function(){return x},RSC_ACTION_PROXY_ALIAS:function(){return C},RSC_ACTION_VALIDATE_ALIAS:function(){return I},RSC_MOD_REF_PROXY_ALIAS:function(){return N},RSC_PREFETCH_SUFFIX:function(){return i},RSC_SUFFIX:function(){return u},SERVER_PROPS_EXPORT_ERROR:function(){return k},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return L},SERVER_PROPS_SSG_CONFLICT:function(){return D},SERVER_RUNTIME:function(){return K},SSG_FALLBACK_EXPORT_ERROR:function(){return Y},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return w},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return U},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return W},WEBPACK_LAYERS:function(){return z},WEBPACK_RESOURCE_QUERIES:function(){return q}});let n="nxtP",r="nxtI",o="x-prerender-revalidate",a="x-prerender-revalidate-if-generated",i=".prefetch.rsc",u=".rsc",s=".action",l=".json",c=".meta",f=".body",d="x-next-cache-tags",p="x-next-cache-soft-tags",h="x-next-revalidated-tags",_="x-next-revalidate-tag-token",g=128,m=256,E=1024,R="_N_T_",y=31536e3,P="middleware",S=`(?:src/)?${P}`,b="instrumentation",O="private-next-pages",A="private-dot-next",v="private-next-root-dir",T="private-next-app-dir",N="private-next-rsc-mod-ref-proxy",I="private-next-rsc-action-validate",C="private-next-rsc-server-reference",x="private-next-rsc-action-encryption",j="private-next-rsc-action-client-wrapper",M="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",w="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",L="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",D="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",U="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",k="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",F="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",X="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",W="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",G="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",H='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',Y="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",B=["app","pages","components","lib","src"],K={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},V={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",api:"api",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route",appRouteHandler:"app-route-handler"},z={...V,GROUP:{serverOnly:[V.reactServerComponents,V.actionBrowser,V.appMetadataRoute,V.appRouteHandler,V.instrument],clientOnly:[V.serverSideRendering,V.appPagesBrowser],nonClientServerTarget:[V.middleware,V.api],app:[V.reactServerComponents,V.actionBrowser,V.appMetadataRoute,V.appRouteHandler,V.serverSideRendering,V.appPagesBrowser,V.shared,V.instrument]}},q={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},90042:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"escapeStringRegexp",{enumerable:!0,get:function(){return o}});let n=/[|\\{}()[\]^$+*?.-]/,r=/[|\\{}()[\]^$+*?.-]/g;function o(e){return n.test(e)?e.replace(r,"\\$&"):e}},25523:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return r}});let r=n(47043)._(n(2265)).default.createContext(null)},57497:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{formatUrl:function(){return a},formatWithValidation:function(){return u},urlObjectKeys:function(){return i}});let r=n(53099)._(n(48637)),o=/https?|ftp|gopher|file/;function a(e){let{auth:t,hostname:n}=e,a=e.protocol||"",i=e.pathname||"",u=e.hash||"",s=e.query||"",l=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?l=t+e.host:n&&(l=t+(~n.indexOf(":")?"["+n+"]":n),e.port&&(l+=":"+e.port)),s&&"object"==typeof s&&(s=String(r.urlQueryToSearchParams(s)));let c=e.search||s&&"?"+s||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==l?(l="//"+(l||""),i&&"/"!==i[0]&&(i="/"+i)):l||(l=""),u&&"#"!==u[0]&&(u="#"+u),c&&"?"!==c[0]&&(c="?"+c),""+a+l+(i=i.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+u}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function u(e){return a(e)}},86279:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getSortedRoutes:function(){return r.getSortedRoutes},isDynamicRoute:function(){return o.isDynamicRoute}});let r=n(14777),o=n(38104)},37205:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"interpolateAs",{enumerable:!0,get:function(){return a}});let r=n(4199),o=n(9964);function a(e,t,n){let a="",i=(0,o.getRouteRegex)(e),u=i.groups,s=(t!==e?(0,r.getRouteMatcher)(i)(t):"")||n;a=e;let l=Object.keys(u);return l.every(e=>{let t=s[e]||"",{repeat:n,optional:r}=u[e],o="["+(n?"...":"")+e+"]";return r&&(o=(t?"":"/")+"["+o+"]"),n&&!Array.isArray(t)&&(t=[t]),(r||e in s)&&(a=a.replace(o,n?t.map(e=>encodeURIComponent(e)).join("/"):encodeURIComponent(t))||"/")})||(a=""),{params:l,result:a}}},38104:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return a}});let r=n(91182),o=/\/\[[^/]+?\](?=\/|$)/;function a(e){return(0,r.isInterceptionRouteAppPath)(e)&&(e=(0,r.extractInterceptionRouteInformation)(e).interceptedRoute),o.test(e)}},53552:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return a}});let r=n(3987),o=n(11283);function a(e){if(!(0,r.isAbsoluteUrl)(e))return!0;try{let t=(0,r.getLocationOrigin)(),n=new URL(e,t);return n.origin===t&&(0,o.hasBasePath)(n.pathname)}catch(e){return!1}}},17053:function(e,t){function n(e,t){let n={};return Object.keys(e).forEach(r=>{t.includes(r)||(n[r]=e[r])}),n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"omit",{enumerable:!0,get:function(){return n}})},48637:function(e,t){function n(e){let t={};return e.forEach((e,n)=>{void 0===t[n]?t[n]=e:Array.isArray(t[n])?t[n].push(e):t[n]=[t[n],e]}),t}function r(e){return"string"!=typeof e&&("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;return Object.entries(e).forEach(e=>{let[n,o]=e;Array.isArray(o)?o.forEach(e=>t.append(n,r(e))):t.set(n,r(o))}),t}function a(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r{Array.from(t.keys()).forEach(t=>e.delete(t)),t.forEach((t,n)=>e.append(n,t))}),e}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{assign:function(){return a},searchParamsToUrlQuery:function(){return n},urlQueryToSearchParams:function(){return o}})},4199:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getRouteMatcher",{enumerable:!0,get:function(){return o}});let r=n(3987);function o(e){let{re:t,groups:n}=e;return e=>{let o=t.exec(e);if(!o)return!1;let a=e=>{try{return decodeURIComponent(e)}catch(e){throw new r.DecodeError("failed to decode param")}},i={};return Object.keys(n).forEach(e=>{let t=n[e],r=o[t.pos];void 0!==r&&(i[e]=~r.indexOf("/")?r.split("/").map(e=>a(e)):t.repeat?[a(r)]:a(r))}),i}}},9964:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getNamedMiddlewareRegex:function(){return p},getNamedRouteRegex:function(){return d},getRouteRegex:function(){return l},parseParameter:function(){return u}});let r=n(19259),o=n(91182),a=n(90042),i=n(26674);function u(e){let t=e.startsWith("[")&&e.endsWith("]");t&&(e=e.slice(1,-1));let n=e.startsWith("...");return n&&(e=e.slice(3)),{key:e,repeat:n,optional:t}}function s(e){let t=(0,i.removeTrailingSlash)(e).slice(1).split("/"),n={},r=1;return{parameterizedRoute:t.map(e=>{let t=o.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t)),i=e.match(/\[((?:\[.*\])|.+)\]/);if(t&&i){let{key:e,optional:o,repeat:s}=u(i[1]);return n[e]={pos:r++,repeat:s,optional:o},"/"+(0,a.escapeStringRegexp)(t)+"([^/]+?)"}if(!i)return"/"+(0,a.escapeStringRegexp)(e);{let{key:e,repeat:t,optional:o}=u(i[1]);return n[e]={pos:r++,repeat:t,optional:o},t?o?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:n}}function l(e){let{parameterizedRoute:t,groups:n}=s(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:n}}function c(e){let{interceptionMarker:t,getSafeRouteKey:n,segment:r,routeKeys:o,keyPrefix:i}=e,{key:s,optional:l,repeat:c}=u(r),f=s.replace(/\W/g,"");i&&(f=""+i+f);let d=!1;(0===f.length||f.length>30)&&(d=!0),isNaN(parseInt(f.slice(0,1)))||(d=!0),d&&(f=n()),i?o[f]=""+i+s:o[f]=s;let p=t?(0,a.escapeStringRegexp)(t):"";return c?l?"(?:/"+p+"(?<"+f+">.+?))?":"/"+p+"(?<"+f+">.+?)":"/"+p+"(?<"+f+">[^/]+?)"}function f(e,t){let n;let u=(0,i.removeTrailingSlash)(e).slice(1).split("/"),s=(n=0,()=>{let e="",t=++n;for(;t>0;)e+=String.fromCharCode(97+(t-1)%26),t=Math.floor((t-1)/26);return e}),l={};return{namedParameterizedRoute:u.map(e=>{let n=o.INTERCEPTION_ROUTE_MARKERS.some(t=>e.startsWith(t)),i=e.match(/\[((?:\[.*\])|.+)\]/);if(n&&i){let[n]=e.split(i[0]);return c({getSafeRouteKey:s,interceptionMarker:n,segment:i[1],routeKeys:l,keyPrefix:t?r.NEXT_INTERCEPTION_MARKER_PREFIX:void 0})}return i?c({getSafeRouteKey:s,segment:i[1],routeKeys:l,keyPrefix:t?r.NEXT_QUERY_PARAM_PREFIX:void 0}):"/"+(0,a.escapeStringRegexp)(e)}).join(""),routeKeys:l}}function d(e,t){let n=f(e,t);return{...l(e),namedRegex:"^"+n.namedParameterizedRoute+"(?:/)?$",routeKeys:n.routeKeys}}function p(e,t){let{parameterizedRoute:n}=s(e),{catchAll:r=!0}=t;if("/"===n)return{namedRegex:"^/"+(r?".*":"")+"$"};let{namedParameterizedRoute:o}=f(e,!1);return{namedRegex:"^"+o+(r?"(?:(/.*)?)":"")+"$"}}},14777:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSortedRoutes",{enumerable:!0,get:function(){return r}});class n{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e){void 0===e&&(e="/");let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let n=t.map(t=>this.children.get(t)._smoosh(""+e+t+"/")).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&n.push(...this.children.get("[]")._smoosh(e+"["+this.slugName+"]/")),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Error('You cannot define a route with the same specificity as a optional catch-all route ("'+t+'" and "'+t+"[[..."+this.optionalRestSlugName+']]").');n.unshift(t)}return null!==this.restSlugName&&n.push(...this.children.get("[...]")._smoosh(e+"[..."+this.restSlugName+"]/")),null!==this.optionalRestSlugName&&n.push(...this.children.get("[[...]]")._smoosh(e+"[[..."+this.optionalRestSlugName+"]]/")),n}_insert(e,t,r){if(0===e.length){this.placeholder=!1;return}if(r)throw Error("Catch-all must be the last part of the URL.");let o=e[0];if(o.startsWith("[")&&o.endsWith("]")){let n=o.slice(1,-1),i=!1;if(n.startsWith("[")&&n.endsWith("]")&&(n=n.slice(1,-1),i=!0),n.startsWith("...")&&(n=n.substring(3),r=!0),n.startsWith("[")||n.endsWith("]"))throw Error("Segment names may not start or end with extra brackets ('"+n+"').");if(n.startsWith("."))throw Error("Segment names may not start with erroneous periods ('"+n+"').");function a(e,n){if(null!==e&&e!==n)throw Error("You cannot use different slug names for the same dynamic path ('"+e+"' !== '"+n+"').");t.forEach(e=>{if(e===n)throw Error('You cannot have the same slug name "'+n+'" repeat within a single dynamic path');if(e.replace(/\W/g,"")===o.replace(/\W/g,""))throw Error('You cannot have the slug names "'+e+'" and "'+n+'" differ only by non-word symbols within a single dynamic path')}),t.push(n)}if(r){if(i){if(null!=this.restSlugName)throw Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+e[0]+'" ).');a(this.optionalRestSlugName,n),this.optionalRestSlugName=n,o="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+e[0]+'").');a(this.restSlugName,n),this.restSlugName=n,o="[...]"}}else{if(i)throw Error('Optional route parameters are not yet supported ("'+e[0]+'").');a(this.slugName,n),this.slugName=n,o="[]"}}this.children.has(o)||this.children.set(o,new n),this.children.get(o)._insert(e.slice(1),t,r)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function r(e){let t=new n;return e.forEach(e=>t.insert(e)),t.smoosh()}},3987:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return E},MissingStaticPage:function(){return m},NormalizeError:function(){return _},PageNotFoundError:function(){return g},SP:function(){return d},ST:function(){return p},WEB_VITALS:function(){return n},execOnce:function(){return r},getDisplayName:function(){return s},getLocationOrigin:function(){return i},getURL:function(){return u},isAbsoluteUrl:function(){return a},isResSent:function(){return l},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return R}});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function r(e){let t,n=!1;return function(){for(var r=arguments.length,o=Array(r),a=0;ao.test(e);function i(){let{protocol:e,hostname:t,port:n}=window.location;return e+"//"+t+(n?":"+n:"")}function u(){let{href:e}=window.location,t=i();return e.substring(t.length)}function s(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function l(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function f(e,t){let n=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let r=await e.getInitialProps(t);if(n&&l(n))return r;if(!r)throw Error('"'+s(e)+'.getInitialProps()" should resolve to an object. But found "'+r+'" instead.');return r}let d="undefined"!=typeof performance,p=d&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class _ extends Error{}class g extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class m extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class E extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function R(e){return JSON.stringify({message:e.message,stack:e.stack})}}}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/_not-found/page-6ee23c7ed5628bce.js b/phase-1-core-infra/frontend/.next/static/chunks/app/_not-found/page-6ee23c7ed5628bce.js new file mode 100644 index 0000000000000000000000000000000000000000..e8b4dff42ce942ebaedd6d25c56808b8a8e2e428 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/_not-found/page-6ee23c7ed5628bce.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[409],{67589:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return n(83634)}])},83634:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}}),n(47043);let i=n(57437);n(2265);let o={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},l={display:"inline-block"},r={display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},d={fontSize:14,fontWeight:400,lineHeight:"49px",margin:0};function s(){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("title",{children:"404: This page could not be found."}),(0,i.jsx)("div",{style:o,children:(0,i.jsxs)("div",{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,i.jsx)("h1",{className:"next-error-h1",style:r,children:"404"}),(0,i.jsx)("div",{style:l,children:(0,i.jsx)("h2",{style:d,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},function(e){e.O(0,[971,117,744],function(){return e(e.s=67589)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/admin/costs/page-7cb12944f09e5838.js b/phase-1-core-infra/frontend/.next/static/chunks/app/admin/costs/page-7cb12944f09e5838.js new file mode 100644 index 0000000000000000000000000000000000000000..c9c9c21895e780cbba9a0c5386eef2b32a430d6f --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/admin/costs/page-7cb12944f09e5838.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[104],{16153:function(e,t,s){Promise.resolve().then(s.bind(s,43104))},43104:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return c}});var a=s(57437),n=s(2265),r=s(79820);function l(){let[e,t]=(0,n.useState)(null),[s,l]=(0,n.useState)(null),[c,i]=(0,n.useState)(null),[d,o]=(0,n.useState)(!0),[x,m]=(0,n.useState)(30);(0,n.useEffect)(()=>{u()},[x]);let u=async()=>{o(!0);try{let[e,s,a]=await Promise.all([fetch("/api/admin/analytics/costs?days=".concat(x),{headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}}),fetch("/api/admin/analytics/revenue?days=".concat(x),{headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}}),fetch("/api/admin/analytics/profit-margin?days=".concat(x),{headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}})]),n=await e.json(),r=await s.json(),c=await a.json();t(n),l(r),i(c)}catch(e){console.error("Error fetching cost data:",e)}finally{o(!1)}},h=e=>"$".concat((e/100).toFixed(2));return d?(0,a.jsx)(r.Zb,{className:"p-6",children:(0,a.jsx)("div",{className:"text-center py-8",children:"Loading cost analytics..."})}):e&&s&&c?(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold",children:"Cost Analytics"}),(0,a.jsxs)("select",{value:x,onChange:e=>m(Number(e.target.value)),className:"px-4 py-2 border rounded-md",children:[(0,a.jsx)("option",{value:7,children:"Last 7 days"}),(0,a.jsx)("option",{value:30,children:"Last 30 days"}),(0,a.jsx)("option",{value:90,children:"Last 90 days"})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[(0,a.jsxs)(r.Zb,{className:"p-4",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Total Costs"}),(0,a.jsx)("div",{className:"text-2xl font-bold text-red-600",children:h(e.total_cost_cents)})]}),(0,a.jsxs)(r.Zb,{className:"p-4",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Monthly Revenue"}),(0,a.jsx)("div",{className:"text-2xl font-bold text-green-600",children:h(s.current_mrr_cents)})]}),(0,a.jsxs)(r.Zb,{className:"p-4",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Profit"}),(0,a.jsx)("div",{className:"text-2xl font-bold text-blue-600",children:h(c.profit_cents)})]}),(0,a.jsxs)(r.Zb,{className:"p-4",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Profit Margin"}),(0,a.jsxs)("div",{className:"text-2xl font-bold",children:[c.margin_percent.toFixed(1),"%"]})]})]}),(0,a.jsxs)(r.Zb,{className:"p-6",children:[(0,a.jsx)("h3",{className:"text-xl font-semibold mb-4",children:"Cost Breakdown by Provider"}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center p-4 bg-gray-50 rounded",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"font-semibold",children:"OpenAI (GPT-4)"}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:[e.openai.tokens_used.toLocaleString()," tokens"]})]}),(0,a.jsx)("div",{className:"text-xl font-bold",children:h(e.openai.cost_cents)})]}),(0,a.jsxs)("div",{className:"flex justify-between items-center p-4 bg-gray-50 rounded",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"font-semibold",children:"Google Veo (Video Generation)"}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:[e.google_veo.videos_generated," videos"]})]}),(0,a.jsx)("div",{className:"text-xl font-bold",children:h(e.google_veo.cost_cents)})]})]})]}),(0,a.jsxs)(r.Zb,{className:"p-6",children:[(0,a.jsx)("h3",{className:"text-xl font-semibold mb-4",children:"Revenue by Subscription Tier"}),(0,a.jsx)("div",{className:"space-y-4",children:Object.entries(s.revenue_by_tier).map(e=>{let[t,s]=e;return(0,a.jsxs)("div",{className:"flex justify-between items-center p-4 bg-gray-50 rounded",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"font-semibold capitalize",children:t}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:[s.count," active subscription",1!==s.count?"s":""]})]}),(0,a.jsx)("div",{className:"text-xl font-bold",children:h(s.revenue_cents)})]},t)})})]}),(0,a.jsxs)(r.Zb,{className:"p-6",children:[(0,a.jsx)("h3",{className:"text-xl font-semibold mb-4",children:"Daily Cost Trend"}),(0,a.jsx)("div",{className:"space-y-2",children:e.cost_timeline.slice(-14).map(t=>{let s=Math.max(...e.cost_timeline.map(e=>e.cost_cents)),n=t.cost_cents/s*100;return(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsx)("div",{className:"w-24 text-sm text-gray-600",children:new Date(t.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})}),(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)("div",{className:"bg-blue-500 h-8 rounded flex items-center justify-end px-2 text-white text-sm",style:{width:"".concat(n,"%")},children:h(t.cost_cents)})})]},t.date)})})]})]}):(0,a.jsx)(r.Zb,{className:"p-6",children:(0,a.jsx)("div",{className:"text-center py-8 text-red-600",children:"Failed to load cost data"})})}function c(){return(0,a.jsxs)("div",{className:"container mx-auto py-8 px-4",children:[(0,a.jsxs)("div",{className:"mb-6",children:[(0,a.jsx)("h1",{className:"text-3xl font-bold",children:"Cost Analytics"}),(0,a.jsx)("p",{className:"text-gray-600 mt-2",children:"Track API costs, revenue, and profit margins"})]}),(0,a.jsx)(l,{})]})}},79820:function(e,t,s){"use strict";s.d(t,{Ol:function(){return c},SZ:function(){return d},Zb:function(){return l},aY:function(){return o},eW:function(){return x},ll:function(){return i}});var a=s(57437),n=s(2265),r=s(93448);let l=n.forwardRef((e,t)=>{let{className:s,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,r.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s),...n})});l.displayName="Card";let c=n.forwardRef((e,t)=>{let{className:s,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,r.cn)("flex flex-col space-y-1.5 p-6",s),...n})});c.displayName="CardHeader";let i=n.forwardRef((e,t)=>{let{className:s,...n}=e;return(0,a.jsx)("h3",{ref:t,className:(0,r.cn)("text-2xl font-semibold leading-none tracking-tight",s),...n})});i.displayName="CardTitle";let d=n.forwardRef((e,t)=>{let{className:s,...n}=e;return(0,a.jsx)("p",{ref:t,className:(0,r.cn)("text-sm text-muted-foreground",s),...n})});d.displayName="CardDescription";let o=n.forwardRef((e,t)=>{let{className:s,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,r.cn)("p-6 pt-0",s),...n})});o.displayName="CardContent";let x=n.forwardRef((e,t)=>{let{className:s,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,r.cn)("flex items-center p-6 pt-0",s),...n})});x.displayName="CardFooter"},93448:function(e,t,s){"use strict";s.d(t,{cn:function(){return r}});var a=s(61994),n=s(53335);function r(){for(var e=arguments.length,t=Array(e),s=0;s{if(i(),c){let e=setInterval(i,3e4);return()=>clearInterval(e)}},[c]);let i=async()=>{try{let e=await fetch("/api/admin/health/overview",{headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}});if(!e.ok)throw Error("Failed to fetch health data");let t=await e.json();s(t)}catch(e){console.error("Error fetching health data:",e)}finally{l(!1)}},o=e=>{switch(e.toLowerCase()){case"healthy":return"bg-green-100 text-green-800";case"degraded":return"bg-yellow-100 text-yellow-800";case"down":case"error":return"bg-red-100 text-red-800";default:return"bg-gray-100 text-gray-800"}};return t?(0,a.jsx)(n.Zb,{className:"p-6",children:(0,a.jsx)("div",{className:"text-center py-8",children:"Loading system health..."})}):e?(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold",children:"System Health"}),(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,a.jsx)("input",{type:"checkbox",checked:c,onChange:e=>d(e.target.checked)}),"Auto-refresh (30s)"]}),(0,a.jsx)("button",{onClick:i,className:"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700",children:"Refresh Now"})]})]}),(0,a.jsx)(n.Zb,{className:"p-6",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Overall System Status"}),(0,a.jsx)("div",{className:"text-3xl font-bold mt-2",children:(0,a.jsxs)("span",{className:"px-4 py-2 rounded ".concat(o(e.overall_status)),children:[(e=>{switch(e.toLowerCase()){case"healthy":return"✓";case"degraded":return"⚠";case"down":case"error":return"✗";default:return"?"}})(e.overall_status)," ",e.overall_status.toUpperCase()]})})]}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:["Last checked: ",new Date(e.checked_at).toLocaleString()]})]})}),(0,a.jsxs)(n.Zb,{className:"p-6",children:[(0,a.jsx)("h3",{className:"text-xl font-semibold mb-4",children:"Database"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mb-6",children:[(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Status"}),(0,a.jsx)("div",{className:"text-lg font-semibold mt-1 ".concat(o(e.components.database.status)),children:e.components.database.status.toUpperCase()})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Response Time"}),(0,a.jsxs)("div",{className:"text-lg font-semibold mt-1",children:[e.components.database.response_time_ms,"ms"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Active Connections"}),(0,a.jsx)("div",{className:"text-lg font-semibold mt-1",children:e.components.database_stats.connection_count})]})]}),e.components.database_stats.table_sizes.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"font-semibold mb-2",children:"Largest Tables"}),(0,a.jsx)("div",{className:"space-y-2",children:e.components.database_stats.table_sizes.slice(0,5).map(e=>(0,a.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,a.jsx)("span",{className:"font-mono text-sm",children:e.table}),(0,a.jsx)("span",{className:"text-sm text-gray-600",children:e.size})]},e.table))})]})]}),(0,a.jsxs)(n.Zb,{className:"p-6",children:[(0,a.jsx)("h3",{className:"text-xl font-semibold mb-4",children:"API Performance"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Requests/Minute"}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1",children:e.components.api.requests_per_minute})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Avg Response Time"}),(0,a.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[e.components.api.avg_response_time_ms,"ms"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Error Rate"}),(0,a.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[e.components.api.error_rate_percent,"%"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"P95 Response Time"}),(0,a.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[e.components.api.p95_response_time_ms,"ms"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"P99 Response Time"}),(0,a.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[e.components.api.p99_response_time_ms,"ms"]})]}),(0,a.jsxs)("div",{className:"p-4 bg-gray-50 rounded",children:[(0,a.jsx)("div",{className:"text-sm text-gray-600",children:"Status"}),(0,a.jsx)("div",{className:"text-lg font-semibold mt-1 ".concat(o(e.components.api.status)),children:e.components.api.status.toUpperCase()})]})]})]})]}):(0,a.jsx)(n.Zb,{className:"p-6",children:(0,a.jsx)("div",{className:"text-center py-8 text-red-600",children:"Failed to load health data"})})}function c(){return(0,a.jsxs)("div",{className:"container mx-auto py-8 px-4",children:[(0,a.jsxs)("div",{className:"mb-6",children:[(0,a.jsx)("h1",{className:"text-3xl font-bold",children:"System Health"}),(0,a.jsx)("p",{className:"text-gray-600 mt-2",children:"Monitor database, API, and infrastructure health"})]}),(0,a.jsx)(l,{})]})}},79820:function(e,s,t){"use strict";t.d(s,{Ol:function(){return c},SZ:function(){return i},Zb:function(){return l},aY:function(){return o},eW:function(){return m},ll:function(){return d}});var a=t(57437),r=t(2265),n=t(93448);let l=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,n.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...r})});l.displayName="Card";let c=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,n.cn)("flex flex-col space-y-1.5 p-6",t),...r})});c.displayName="CardHeader";let d=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("h3",{ref:s,className:(0,n.cn)("text-2xl font-semibold leading-none tracking-tight",t),...r})});d.displayName="CardTitle";let i=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("p",{ref:s,className:(0,n.cn)("text-sm text-muted-foreground",t),...r})});i.displayName="CardDescription";let o=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,n.cn)("p-6 pt-0",t),...r})});o.displayName="CardContent";let m=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,n.cn)("flex items-center p-6 pt-0",t),...r})});m.displayName="CardFooter"},93448:function(e,s,t){"use strict";t.d(s,{cn:function(){return n}});var a=t(61994),r=t(53335);function n(){for(var e=arguments.length,s=Array(e),t=0;t{let e=async()=>{try{let e=await fetch("".concat("http://127.0.0.1:8000","/api/v1/admin/metrics/users?period=30d&granularity=daily"),{credentials:"include"});if(e.ok){let s=(await e.json()).data_points.map(e=>({date:new Date(e.date).toLocaleDateString("en-US",{month:"short",day:"numeric"}),users:e.total_users,newUsers:e.new_users,subscriptions:e.active_subscriptions}));t(s)}}catch(e){console.error("Failed to fetch user metrics:",e)}finally{a(!1)}};e();let s=setInterval(e,3e4);return()=>clearInterval(s)},[]),s)?(0,n.jsx)(i.Zb,{children:(0,n.jsxs)(i.Ol,{children:[(0,n.jsx)(i.ll,{children:"User Growth"}),(0,n.jsx)(i.SZ,{children:"Loading..."})]})}):(0,n.jsxs)(i.Zb,{children:[(0,n.jsxs)(i.Ol,{children:[(0,n.jsx)(i.ll,{children:"User Growth"}),(0,n.jsx)(i.SZ,{children:"Total users and subscriptions over the last 30 days"})]}),(0,n.jsx)(i.aY,{children:(0,n.jsx)(o.h,{width:"100%",height:300,children:(0,n.jsxs)(d.w,{data:e,children:[(0,n.jsx)(u.q,{strokeDasharray:"3 3"}),(0,n.jsx)(h.K,{dataKey:"date"}),(0,n.jsx)(x.B,{}),(0,n.jsx)(m.u,{}),(0,n.jsx)(f.D,{}),(0,n.jsx)(j.x,{type:"monotone",dataKey:"users",stroke:"#8884d8",name:"Total Users"}),(0,n.jsx)(j.x,{type:"monotone",dataKey:"subscriptions",stroke:"#82ca9d",name:"Active Subscriptions"})]})})})]})}var p=s(77031),g=s(31699);function y(){let e=[{plan:"Basic",revenue:5800,count:200},{plan:"Pro",revenue:29700,count:300},{plan:"Agency",revenue:14950,count:50}],t=e.reduce((e,t)=>e+t.revenue,0);return(0,n.jsxs)(i.Zb,{children:[(0,n.jsxs)(i.Ol,{children:[(0,n.jsx)(i.ll,{children:"Revenue by Plan"}),(0,n.jsxs)(i.SZ,{children:["Monthly recurring revenue: $",t.toLocaleString()]})]}),(0,n.jsx)(i.aY,{children:(0,n.jsx)(o.h,{width:"100%",height:300,children:(0,n.jsxs)(p.v,{data:e,children:[(0,n.jsx)(u.q,{strokeDasharray:"3 3"}),(0,n.jsx)(h.K,{dataKey:"plan"}),(0,n.jsx)(x.B,{}),(0,n.jsx)(m.u,{formatter:e=>"$".concat(e.toLocaleString())}),(0,n.jsx)(f.D,{}),(0,n.jsx)(g.$,{dataKey:"revenue",fill:"#8884d8",name:"Revenue ($)"}),(0,n.jsx)(g.$,{dataKey:"count",fill:"#82ca9d",name:"Subscribers"})]})})})]})}var b=s(75169),w=s(3574),N=s(20407);let _=["#0088FE","#00C49F","#FFBB28"];function S(e){let{metrics:t}=e,s=[{name:"OpenAI",value:.6*((null==t?void 0:t.total_cost_cents)||125e3),tokens:(null==t?void 0:t.openai_tokens_used)||15e6},{name:"Anthropic",value:.32*((null==t?void 0:t.total_cost_cents)||125e3),tokens:8e6},{name:"Veo",value:.08*((null==t?void 0:t.total_cost_cents)||125e3),videos:(null==t?void 0:t.veo_videos_generated)||1250}];return(0,n.jsxs)(i.Zb,{children:[(0,n.jsxs)(i.Ol,{children:[(0,n.jsx)(i.ll,{children:"AI API Usage"}),(0,n.jsxs)(i.SZ,{children:["Total cost: $",(((null==t?void 0:t.total_cost_cents)||125e3)/100).toFixed(2)]})]}),(0,n.jsxs)(i.aY,{children:[(0,n.jsx)(o.h,{width:"100%",height:300,children:(0,n.jsxs)(b.u,{children:[(0,n.jsx)(w.b,{data:s,cx:"50%",cy:"50%",labelLine:!1,label:e=>{let{name:t,percent:s}=e;return"".concat(t,": ").concat((100*s).toFixed(0),"%")},outerRadius:80,fill:"#8884d8",dataKey:"value",children:s.map((e,t)=>(0,n.jsx)(N.b,{fill:_[t%_.length]},"cell-".concat(t)))}),(0,n.jsx)(m.u,{formatter:e=>"$".concat((e/100).toFixed(2))}),(0,n.jsx)(f.D,{})]})}),(0,n.jsxs)("div",{className:"mt-4 space-y-2",children:[(0,n.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,n.jsx)("span",{className:"text-gray-600",children:"OpenAI Tokens:"}),(0,n.jsx)("span",{className:"font-semibold",children:((null==t?void 0:t.openai_tokens_used)||15e6).toLocaleString()})]}),(0,n.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,n.jsx)("span",{className:"text-gray-600",children:"Veo Videos:"}),(0,n.jsx)("span",{className:"font-semibold",children:((null==t?void 0:t.veo_videos_generated)||1250).toLocaleString()})]})]})]})]})}var k=s(65302),O=s(22252),Z=s(45131);function C(e){let{health:t}=e,[s,a]=(0,r.useState)(null),[l,c]=(0,r.useState)(!0);(0,r.useEffect)(()=>{let e=async()=>{try{let e=await fetch("".concat("http://127.0.0.1:8000","/api/v1/admin/metrics/system-health"),{credentials:"include"});if(e.ok){let t=await e.json();a(t)}}catch(e){console.error("Failed to fetch system health:",e)}finally{c(!1)}};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[]);let o=e=>{switch(e){case"healthy":return(0,n.jsx)(k.Z,{className:"h-5 w-5 text-green-600"});case"degraded":return(0,n.jsx)(O.Z,{className:"h-5 w-5 text-yellow-600"});case"down":return(0,n.jsx)(Z.Z,{className:"h-5 w-5 text-red-600"});default:return(0,n.jsx)(O.Z,{className:"h-5 w-5 text-gray-400"})}},d=e=>{switch(e){case"healthy":return"text-green-600";case"degraded":return"text-yellow-600";case"down":return"text-red-600";default:return"text-gray-600"}},u=(null==s?void 0:s.components)||{database:{status:(null==t?void 0:t.database)||"healthy",response_time_ms:25},redis:{status:(null==t?void 0:t.redis)||"healthy",response_time_ms:10}},h=(null==s?void 0:s.overall_status)||(null==t?void 0:t.overall_status)||"healthy";return(0,n.jsxs)(i.Zb,{children:[(0,n.jsxs)(i.Ol,{children:[(0,n.jsxs)(i.ll,{className:"flex items-center gap-2",children:["System Health",o(h)]}),(0,n.jsx)(i.SZ,{children:"Real-time component health monitoring"})]}),(0,n.jsx)(i.aY,{children:(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[(0,n.jsx)("span",{className:"font-semibold",children:"Overall Status"}),(0,n.jsx)("span",{className:"font-semibold uppercase ".concat(d(h)),children:h})]}),Object.entries(u).map(e=>{let[t,s]=e;return(0,n.jsxs)("div",{className:"flex items-center justify-between p-3 border rounded-lg",children:[(0,n.jsxs)("div",{className:"flex items-center gap-3",children:[o(s.status),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"font-medium capitalize",children:t}),s.response_time_ms&&(0,n.jsxs)("p",{className:"text-sm text-gray-500",children:[s.response_time_ms,"ms response time"]})]})]}),(0,n.jsx)("span",{className:"text-sm font-semibold uppercase ".concat(d(s.status)),children:s.status})]},t)}),(0,n.jsxs)("div",{className:"text-xs text-gray-500 text-center pt-2",children:["Last checked: ",(null==s?void 0:s.checked_at)?new Date(s.checked_at).toLocaleTimeString():"Just now"]})]})})]})}function E(e){var t,s,a,l,o,d,u,h;let{user:x}=e,[m,f]=(0,r.useState)(null),[j,p]=(0,r.useState)(!0),[g,b]=(0,r.useState)(null),w=async()=>{try{let e=await fetch("".concat("http://127.0.0.1:8000","/api/v1/admin/metrics/summary"),{credentials:"include"});if(!e.ok)throw Error("Failed to fetch metrics");let t=await e.json();f(t),b(null)}catch(e){b(e instanceof Error?e.message:"Failed to load metrics")}finally{p(!1)}};(0,r.useEffect)(()=>{w();let e=setInterval(w,5e3);return()=>clearInterval(e)},[]);let N=async()=>{try{let e=await fetch("".concat("http://127.0.0.1:8000","/api/v1/admin/metrics/export"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({metric_types:["users","revenue","api_usage"],start_date:new Date(Date.now()-2592e6).toISOString().split("T")[0],end_date:new Date().toISOString().split("T")[0],format:"csv"})});if(!e.ok)throw Error("Export failed");let t=await e.blob(),s=window.URL.createObjectURL(t),n=document.createElement("a");n.href=s,n.download="metrics_".concat(new Date().toISOString().split("T")[0],".csv"),document.body.appendChild(n),n.click(),window.URL.revokeObjectURL(s),document.body.removeChild(n)}catch(e){console.error("Export failed:",e)}};return j?(0,n.jsx)("div",{className:"flex items-center justify-center min-h-screen",children:(0,n.jsx)("p",{className:"text-lg",children:"Loading dashboard..."})}):g?(0,n.jsx)("div",{className:"flex items-center justify-center min-h-screen",children:(0,n.jsxs)(i.Zb,{className:"w-96",children:[(0,n.jsx)(i.Ol,{children:(0,n.jsx)(i.ll,{className:"text-red-600",children:"Error"})}),(0,n.jsx)(i.aY,{children:(0,n.jsx)("p",{children:g})})]})}):(0,n.jsxs)("div",{className:"container mx-auto py-8 px-4",children:[(0,n.jsxs)("div",{className:"mb-8 flex items-center justify-between",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-3xl font-bold text-gray-900",children:"Admin Dashboard"}),(0,n.jsx)("p",{className:"text-gray-600 mt-2",children:"System-wide metrics and monitoring"})]}),(0,n.jsx)(c.z,{onClick:N,variant:"outline",children:"Export Metrics"})]}),(0,n.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-6 mb-8",children:[(0,n.jsxs)(i.Zb,{children:[(0,n.jsxs)(i.Ol,{className:"pb-3",children:[(0,n.jsx)(i.SZ,{children:"Total Users"}),(0,n.jsx)(i.ll,{className:"text-3xl",children:(null==m?void 0:null===(t=m.users)||void 0===t?void 0:t.total)||0})]}),(0,n.jsx)(i.aY,{children:(0,n.jsxs)("p",{className:"text-sm text-green-600",children:["+",(null==m?void 0:null===(s=m.users)||void 0===s?void 0:s.new_today)||0," today"]})})]}),(0,n.jsxs)(i.Zb,{children:[(0,n.jsxs)(i.Ol,{className:"pb-3",children:[(0,n.jsx)(i.SZ,{children:"Active Subscriptions"}),(0,n.jsx)(i.ll,{className:"text-3xl",children:(null==m?void 0:null===(a=m.users)||void 0===a?void 0:a.active_subscriptions)||0})]}),(0,n.jsx)(i.aY,{children:(0,n.jsxs)("p",{className:"text-sm text-gray-600",children:[(null==m?void 0:null===(l=m.users)||void 0===l?void 0:l.growth_rate_30d)||0,"% growth (30d)"]})})]}),(0,n.jsxs)(i.Zb,{children:[(0,n.jsxs)(i.Ol,{className:"pb-3",children:[(0,n.jsx)(i.SZ,{children:"Monthly Revenue (MRR)"}),(0,n.jsxs)(i.ll,{className:"text-3xl",children:["$",(((null==m?void 0:null===(o=m.revenue)||void 0===o?void 0:o.mrr_cents)||0)/100).toFixed(0)]})]}),(0,n.jsx)(i.aY,{children:(0,n.jsxs)("p",{className:"text-sm text-gray-600",children:["Total: $",(((null==m?void 0:null===(d=m.revenue)||void 0===d?void 0:d.total_revenue_cents)||0)/100).toFixed(0)]})})]}),(0,n.jsxs)(i.Zb,{children:[(0,n.jsxs)(i.Ol,{className:"pb-3",children:[(0,n.jsx)(i.SZ,{children:"AI API Costs"}),(0,n.jsxs)(i.ll,{className:"text-3xl",children:["$",(((null==m?void 0:null===(u=m.api_usage)||void 0===u?void 0:u.total_cost_cents)||0)/100).toFixed(0)]})]}),(0,n.jsx)(i.aY,{children:(0,n.jsxs)("p",{className:"text-sm text-gray-600",children:[(null==m?void 0:null===(h=m.api_usage)||void 0===h?void 0:h.veo_videos_generated)||0," videos generated"]})})]})]}),(0,n.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8",children:[(0,n.jsx)(v,{}),(0,n.jsx)(y,{})]}),(0,n.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,n.jsx)(S,{metrics:null==m?void 0:m.api_usage}),(0,n.jsx)(C,{health:null==m?void 0:m.system_health})]})]})}function R(){let e=(0,a.useRouter)(),{user:t,isSignedIn:s,isLoading:i,isAdmin:c}=(0,l.a)();return((0,r.useEffect)(()=>{i||s?i||!s||c||e.push("/dashboard"):e.push("/login")},[i,s,c,e]),i)?(0,n.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,n.jsx)("p",{children:"Loading..."})}):s&&c?(0,n.jsx)("div",{className:"min-h-screen bg-gray-50",children:(0,n.jsx)(E,{user:t})}):null}},92509:function(e,t,s){"use strict";s.d(t,{Ho:function(){return i},aC:function(){return c}});var n=s(57437),r=s(2265),a=s(68123);let l=(0,r.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i(e){let{children:t}=e,[s,i]=(0,r.useState)(null),[c,o]=(0,r.useState)(null),[d,u]=(0,r.useState)(!0),h=async()=>{try{let e=await (0,a.Gg)();e?(i(e.user),o(e.session)):(i(null),o(null))}catch(e){i(null),o(null)}finally{u(!1)}};return(0,r.useEffect)(()=>{h()},[]),(0,n.jsx)(l.Provider,{value:{user:s,session:c,loading:d,refetch:h},children:t})}function c(){return(0,r.useContext)(l)}},12381:function(e,t,s){"use strict";s.d(t,{z:function(){return o}});var n=s(57437),r=s(2265),a=s(37053),l=s(90535),i=s(93448);let c=(0,l.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),o=r.forwardRef((e,t)=>{let{className:s,variant:r,size:l,asChild:o=!1,...d}=e,u=o?a.g7:"button";return(0,n.jsx)(u,{className:(0,i.cn)(c({variant:r,size:l,className:s})),ref:t,...d})});o.displayName="Button"},79820:function(e,t,s){"use strict";s.d(t,{Ol:function(){return i},SZ:function(){return o},Zb:function(){return l},aY:function(){return d},eW:function(){return u},ll:function(){return c}});var n=s(57437),r=s(2265),a=s(93448);let l=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s),...r})});l.displayName="Card";let i=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",s),...r})});i.displayName="CardHeader";let c=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("h3",{ref:t,className:(0,a.cn)("text-2xl font-semibold leading-none tracking-tight",s),...r})});c.displayName="CardTitle";let o=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("p",{ref:t,className:(0,a.cn)("text-sm text-muted-foreground",s),...r})});o.displayName="CardDescription";let d=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("p-6 pt-0",s),...r})});d.displayName="CardContent";let u=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("flex items-center p-6 pt-0",s),...r})});u.displayName="CardFooter"},50828:function(e,t,s){"use strict";s.d(t,{a:function(){return r}});var n=s(92509);function r(){let{user:e,session:t,loading:s,refetch:r}=(0,n.aC)();return{user:e||null,session:t||null,isLoading:s,isAuthenticated:!!e,isSignedIn:!!e,isAdmin:(null==e?void 0:e.isAdmin)||!1,refreshSession:r}}},68123:function(e,t,s){"use strict";s.d(t,{Gg:function(){return a},w7:function(){return r}});let n={async signUp(e,t,s){let n=await fetch("".concat("","/api/v1/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:s})});if(!n.ok)throw Error((await n.json()).detail||"Registration failed");return n.json()},async signIn(e,t){let s=await fetch("".concat("","/api/v1/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!s.ok)throw Error((await s.json()).detail||"Login failed");return s.json()},async signOut(){if(!(await fetch("".concat("","/api/v1/auth/logout"),{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch("".concat("","/api/v1/auth/session"),{credentials:"include"});if(!e.ok)return null;return e.json()}catch(e){return null}}};n.signUp,n.signIn;let r=n.signOut,a=n.getSession},93448:function(e,t,s){"use strict";s.d(t,{cn:function(){return a}});var n=s(61994),r=s(53335);function a(){for(var e=arguments.length,t=Array(e),s=0;s{j()},[v,u,m]);let j=async()=>{d(!0);try{let e=new URLSearchParams({limit:"50",offset:(50*v).toString()});u&&e.append("search",u),"all"!==m&&e.append("status",m);let t=await fetch("/api/admin/users?".concat(e),{headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}});if(!t.ok)throw Error("Failed to fetch users");let r=await t.json();c(r.users),p(r.total_count)}catch(e){console.error("Error fetching users:",e)}finally{d(!1)}},y=async e=>{let t=prompt("Enter reason for suspension:");if(t)try{if(!(await fetch("/api/admin/users/".concat(e,"/suspend?reason=").concat(encodeURIComponent(t)),{method:"POST",headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}})).ok)throw Error("Failed to suspend user");alert("User suspended successfully"),j()}catch(e){console.error("Error suspending user:",e),alert("Failed to suspend user")}},b=async e=>{try{if(!(await fetch("/api/admin/users/".concat(e,"/reactivate"),{method:"POST",headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}})).ok)throw Error("Failed to reactivate user");alert("User reactivated successfully"),j()}catch(e){console.error("Error reactivating user:",e),alert("Failed to reactivate user")}},N=async e=>{let t=prompt("Enter reason for deletion (WARNING: This is permanent):");if(t&&confirm("Are you sure? This action cannot be undone."))try{if(!(await fetch("/api/admin/users/".concat(e,"?reason=").concat(encodeURIComponent(t)),{method:"DELETE",headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}})).ok)throw Error("Failed to delete user");alert("User deleted successfully"),j()}catch(e){console.error("Error deleting user:",e),alert("Failed to delete user")}};return(0,s.jsxs)(a.Zb,{className:"p-6",children:[(0,s.jsxs)("div",{className:"mb-6",children:[(0,s.jsx)("h2",{className:"text-2xl font-bold mb-4",children:"User Management"}),(0,s.jsxs)("div",{className:"flex gap-4 mb-4",children:[(0,s.jsx)(l.I,{type:"text",placeholder:"Search by email or name...",value:u,onChange:e=>x(e.target.value),className:"flex-1"}),(0,s.jsxs)("select",{value:m,onChange:e=>f(e.target.value),className:"px-4 py-2 border rounded-md",children:[(0,s.jsx)("option",{value:"all",children:"All Users"}),(0,s.jsx)("option",{value:"active",children:"Active"}),(0,s.jsx)("option",{value:"suspended",children:"Suspended"})]})]}),(0,s.jsxs)("div",{className:"text-sm text-gray-600",children:["Showing ",r.length," of ",h," users"]})]}),o?(0,s.jsx)("div",{className:"text-center py-8",children:"Loading..."}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"border-b",children:[(0,s.jsx)("th",{className:"text-left py-3 px-4",children:"Email"}),(0,s.jsx)("th",{className:"text-left py-3 px-4",children:"Name"}),(0,s.jsx)("th",{className:"text-left py-3 px-4",children:"Status"}),(0,s.jsx)("th",{className:"text-left py-3 px-4",children:"Verified"}),(0,s.jsx)("th",{className:"text-left py-3 px-4",children:"Created"}),(0,s.jsx)("th",{className:"text-right py-3 px-4",children:"Actions"})]})}),(0,s.jsx)("tbody",{children:r.map(e=>(0,s.jsxs)("tr",{className:"border-b hover:bg-gray-50",children:[(0,s.jsx)("td",{className:"py-3 px-4",children:(0,s.jsx)("button",{onClick:()=>null==t?void 0:t(e.id),className:"text-blue-600 hover:underline",children:e.email})}),(0,s.jsx)("td",{className:"py-3 px-4",children:e.name||"-"}),(0,s.jsx)("td",{className:"py-3 px-4",children:(0,s.jsx)("span",{className:"px-2 py-1 rounded text-xs ".concat(e.is_active?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:e.is_active?"Active":"Suspended"})}),(0,s.jsx)("td",{className:"py-3 px-4",children:e.email_verified?(0,s.jsx)("span",{className:"text-green-600",children:"✓"}):(0,s.jsx)("span",{className:"text-gray-400",children:"✗"})}),(0,s.jsx)("td",{className:"py-3 px-4",children:new Date(e.created_at).toLocaleDateString()}),(0,s.jsx)("td",{className:"py-3 px-4 text-right",children:(0,s.jsxs)("div",{className:"flex gap-2 justify-end",children:[e.is_active?(0,s.jsx)(i.z,{size:"sm",variant:"outline",onClick:()=>y(e.id),children:"Suspend"}):(0,s.jsx)(i.z,{size:"sm",variant:"outline",onClick:()=>b(e.id),children:"Reactivate"}),(0,s.jsx)(i.z,{size:"sm",variant:"outline",onClick:()=>N(e.id),className:"text-red-600 hover:text-red-700",children:"Delete"})]})})]},e.id))})]})}),(0,s.jsxs)("div",{className:"flex justify-between items-center mt-4",children:[(0,s.jsx)(i.z,{onClick:()=>g(Math.max(0,v-1)),disabled:0===v,children:"Previous"}),(0,s.jsxs)("span",{className:"text-sm text-gray-600",children:["Page ",v+1," of ",Math.ceil(h/50)]}),(0,s.jsx)(i.z,{onClick:()=>g(v+1),disabled:(v+1)*50>=h,children:"Next"})]})]})]})}function o(){let[e,t]=(0,n.useState)(null),[r,i]=(0,n.useState)(null),l=async e=>{t(e);try{let t=await fetch("/api/admin/users/".concat(e),{headers:{Authorization:"Bearer ".concat(localStorage.getItem("token"))}});if(!t.ok)throw Error("Failed to fetch user details");let r=await t.json();i(r)}catch(e){console.error("Error fetching user details:",e)}};return(0,s.jsxs)("div",{className:"container mx-auto py-8 px-4",children:[(0,s.jsxs)("div",{className:"mb-6",children:[(0,s.jsx)("h1",{className:"text-3xl font-bold",children:"User Management"}),(0,s.jsx)("p",{className:"text-gray-600 mt-2",children:"Manage user accounts, subscriptions, and access"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[(0,s.jsx)("div",{className:"lg:col-span-2",children:(0,s.jsx)(c,{onUserSelect:l})}),(0,s.jsx)("div",{children:e&&r?(0,s.jsxs)(a.Zb,{className:"p-6 sticky top-4",children:[(0,s.jsx)("h3",{className:"text-xl font-semibold mb-4",children:"User Details"}),(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Email"}),(0,s.jsx)("div",{className:"font-semibold",children:r.email})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Name"}),(0,s.jsx)("div",{className:"font-semibold",children:r.name||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Status"}),(0,s.jsx)("div",{children:(0,s.jsx)("span",{className:"px-2 py-1 rounded text-xs ".concat(r.is_active?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:r.is_active?"Active":"Suspended"})})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Email Verified"}),(0,s.jsx)("div",{children:r.email_verified?"Yes":"No"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Created"}),(0,s.jsx)("div",{children:new Date(r.created_at).toLocaleString()})]}),r.subscription&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("hr",{className:"my-4"}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Subscription Tier"}),(0,s.jsx)("div",{className:"font-semibold capitalize",children:r.subscription.tier||"None"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Subscription Status"}),(0,s.jsx)("div",{className:"capitalize",children:r.subscription.status||"-"})]}),r.subscription.current_period_end&&(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Period End"}),(0,s.jsx)("div",{children:new Date(r.subscription.current_period_end).toLocaleDateString()})]})]})]})]}):(0,s.jsx)(a.Zb,{className:"p-6",children:(0,s.jsx)("div",{className:"text-center text-gray-500",children:"Select a user to view details"})})})]})]})}},12381:function(e,t,r){"use strict";r.d(t,{z:function(){return o}});var s=r(57437),n=r(2265),a=r(37053),i=r(90535),l=r(93448);let c=(0,i.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),o=n.forwardRef((e,t)=>{let{className:r,variant:n,size:i,asChild:o=!1,...d}=e,u=o?a.g7:"button";return(0,s.jsx)(u,{className:(0,l.cn)(c({variant:n,size:i,className:r})),ref:t,...d})});o.displayName="Button"},79820:function(e,t,r){"use strict";r.d(t,{Ol:function(){return l},SZ:function(){return o},Zb:function(){return i},aY:function(){return d},eW:function(){return u},ll:function(){return c}});var s=r(57437),n=r(2265),a=r(93448);let i=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",r),...n})});i.displayName="Card";let l=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",r),...n})});l.displayName="CardHeader";let c=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("h3",{ref:t,className:(0,a.cn)("text-2xl font-semibold leading-none tracking-tight",r),...n})});c.displayName="CardTitle";let o=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("p",{ref:t,className:(0,a.cn)("text-sm text-muted-foreground",r),...n})});o.displayName="CardDescription";let d=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("p-6 pt-0",r),...n})});d.displayName="CardContent";let u=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("flex items-center p-6 pt-0",r),...n})});u.displayName="CardFooter"},40279:function(e,t,r){"use strict";r.d(t,{I:function(){return i}});var s=r(57437),n=r(2265),a=r(93448);let i=n.forwardRef((e,t)=>{let{className:r,type:n,...i}=e;return(0,s.jsx)("input",{type:n,className:(0,a.cn)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...i})});i.displayName="Input"},93448:function(e,t,r){"use strict";r.d(t,{cn:function(){return a}});var s=r(61994),n=r(53335);function a(){for(var e=arguments.length,t=Array(e),r=0;re.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}function a(...e){return(0,s.useCallback)(n(...e),e)}},37053:function(e,t,r){"use strict";r.d(t,{g7:function(){return i}});var s=r(1119),n=r(2265),a=r(98575);let i=(0,n.forwardRef)((e,t)=>{let{children:r,...a}=e,i=n.Children.toArray(r),c=i.find(o);if(c){let e=c.props.children,r=i.map(t=>t!==c?t:n.Children.count(e)>1?n.Children.only(null):(0,n.isValidElement)(e)?e.props.children:null);return(0,n.createElement)(l,(0,s.Z)({},a,{ref:t}),(0,n.isValidElement)(e)?(0,n.cloneElement)(e,void 0,r):null)}return(0,n.createElement)(l,(0,s.Z)({},a,{ref:t}),r)});i.displayName="Slot";let l=(0,n.forwardRef)((e,t)=>{let{children:r,...s}=e;return(0,n.isValidElement)(r)?(0,n.cloneElement)(r,{...function(e,t){let r={...t};for(let s in t){let n=e[s],a=t[s];/^on[A-Z]/.test(s)?n&&a?r[s]=(...e)=>{a(...e),n(...e)}:n&&(r[s]=n):"style"===s?r[s]={...n,...a}:"className"===s&&(r[s]=[n,a].filter(Boolean).join(" "))}return{...e,...r}}(s,r.props),ref:t?(0,a.F)(t,r.ref):r.ref}):n.Children.count(r)>1?n.Children.only(null):null});l.displayName="SlotClone";let c=({children:e})=>(0,n.createElement)(n.Fragment,null,e);function o(e){return(0,n.isValidElement)(e)&&e.type===c}},90535:function(e,t,r){"use strict";r.d(t,{j:function(){return i}});var s=r(61994);let n=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,a=s.W,i=(e,t)=>r=>{var s;if((null==t?void 0:t.variants)==null)return a(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:l}=t,c=Object.keys(i).map(e=>{let t=null==r?void 0:r[e],s=null==l?void 0:l[e];if(null===t)return null;let a=n(t)||n(s);return i[e][a]}),o=r&&Object.entries(r).reduce((e,t)=>{let[r,s]=t;return void 0===s||(e[r]=s),e},{});return a(e,c,null==t?void 0:null===(s=t.compoundVariants)||void 0===s?void 0:s.reduce((e,t)=>{let{class:r,className:s,...n}=t;return Object.entries(n).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...l,...o}[t]):({...l,...o})[t]===r})?[...e,r,s]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}},function(e){e.O(0,[137,971,117,744],function(){return e(e.s=15046)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/auth/callback/[provider]/page-451299b53c301e5c.js b/phase-1-core-infra/frontend/.next/static/chunks/app/auth/callback/[provider]/page-451299b53c301e5c.js new file mode 100644 index 0000000000000000000000000000000000000000..2c3f90458a820f71e37fd6eb727dc03c2ae9a106 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/auth/callback/[provider]/page-451299b53c301e5c.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[631],{48416:function(e,t,a){Promise.resolve().then(a.bind(a,58696))},99376:function(e,t,a){"use strict";var r=a(35475);a.o(r,"usePathname")&&a.d(t,{usePathname:function(){return r.usePathname}}),a.o(r,"useRouter")&&a.d(t,{useRouter:function(){return r.useRouter}}),a.o(r,"useSearchParams")&&a.d(t,{useSearchParams:function(){return r.useSearchParams}})},58696:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return i}});var r=a(57437),s=a(2265),n=a(99376);let o=["google","github"];function c(e){let{provider:t}=e,a=(0,n.useRouter)(),c=(0,n.useSearchParams)(),[i,u]=(0,s.useState)(null),l=(0,s.useRef)(!1);return((0,s.useEffect)(()=>{l.current||(l.current=!0,(async()=>{let e=c.get("code"),r=c.get("state");if(c.get("error")){u("Authentication was cancelled or failed"),setTimeout(()=>a.push("/dashboard"),3e3);return}if(!e){u("Invalid callback parameters"),setTimeout(()=>a.push("/dashboard"),3e3);return}if(!o.includes(t)){let s=sessionStorage.getItem("oauth_state_".concat(t));if(r&&s&&s!==r){u("Invalid state parameter"),setTimeout(()=>a.push("/dashboard"),3e3);return}let n=sessionStorage.getItem("oauth_code_verifier"),o=sessionStorage.getItem("oauth_redirect_uri_".concat(t))||"".concat(window.location.origin,"/api/auth/callback/").concat(t);try{let s=new URLSearchParams({code:e,redirect_uri:o,...r?{state:r}:{},...n?{code_verifier:n}:{}}),c=await fetch("/api/v1/oauth/exchange/".concat(t,"?").concat(s.toString()),{credentials:"include"});if(!c.ok){if(409===c.status){a.push("/dashboard?connected="+t);return}let e=await c.json().catch(()=>({}));throw Error(e.detail||"Failed to connect account")}sessionStorage.removeItem("oauth_state_".concat(t)),sessionStorage.removeItem("oauth_code_verifier"),sessionStorage.removeItem("oauth_redirect_uri_".concat(t)),a.push("/dashboard?connected="+t)}catch(e){console.error("OAuth exchange error:",e),u(e.message||"Failed to connect account. Please try again."),setTimeout(()=>a.push("/dashboard"),3e3)}return}if(!r){u("Invalid callback parameters"),setTimeout(()=>a.push("/login"),3e3);return}if(sessionStorage.getItem("oauth_state_".concat(t))!==r){u("Invalid state parameter"),setTimeout(()=>a.push("/login"),3e3);return}try{if(!(await fetch("".concat("http://127.0.0.1:8000","/api/v1/auth/oauth/").concat(t,"/callback?code=").concat(e,"&state=").concat(r),{method:"GET",credentials:"include"})).ok)throw Error("Authentication failed");sessionStorage.removeItem("oauth_state_".concat(t)),a.push("/dashboard")}catch(e){console.error("OAuth callback error:",e),u("Authentication failed. Please try again."),setTimeout(()=>a.push("/login"),3e3)}})())},[t,c,a]),i)?(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("div",{className:"mx-auto h-12 w-12 text-red-500",children:(0,r.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"w-full h-full",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),(0,r.jsx)("h2",{className:"mt-6 text-2xl font-bold text-gray-900",children:"Connection Failed"}),(0,r.jsx)("p",{className:"mt-2 text-sm text-gray-600",children:i}),(0,r.jsx)("p",{className:"mt-2 text-sm text-gray-500",children:"Redirecting to dashboard..."})]}):(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("div",{className:"mx-auto h-12 w-12",children:(0,r.jsx)("div",{className:"w-full h-full border-4 border-blue-500 border-t-transparent rounded-full animate-spin"})}),(0,r.jsx)("h2",{className:"mt-6 text-2xl font-bold text-gray-900",children:"Connecting Account"}),(0,r.jsxs)("p",{className:"mt-2 text-sm text-gray-600",children:["Please wait while we connect your ",t," account..."]})]})}function i(e){let{params:t}=e;return(0,r.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-gray-50",children:(0,r.jsx)("div",{className:"max-w-md w-full space-y-8 p-8",children:(0,r.jsx)(s.Suspense,{fallback:(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("div",{className:"mx-auto h-12 w-12",children:(0,r.jsx)("div",{className:"w-full h-full border-4 border-blue-500 border-t-transparent rounded-full animate-spin"})}),(0,r.jsx)("p",{className:"mt-4 text-gray-600",children:"Loading..."})]}),children:(0,r.jsx)(c,{provider:t.provider})})})})}}},function(e){e.O(0,[971,117,744],function(){return e(e.s=48416)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/auth/login/page-09b1f835b0c3b6ee.js b/phase-1-core-infra/frontend/.next/static/chunks/app/auth/login/page-09b1f835b0c3b6ee.js new file mode 100644 index 0000000000000000000000000000000000000000..9044e1730fb1328ae344fa98097e287515f94017 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/auth/login/page-09b1f835b0c3b6ee.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[716],{77703:function(e,t,s){Promise.resolve().then(s.bind(s,61202))},27648:function(e,t,s){"use strict";s.d(t,{default:function(){return a.a}});var n=s(72972),a=s.n(n)},99376:function(e,t,s){"use strict";var n=s(35475);s.o(n,"usePathname")&&s.d(t,{usePathname:function(){return n.usePathname}}),s.o(n,"useRouter")&&s.d(t,{useRouter:function(){return n.useRouter}}),s.o(n,"useSearchParams")&&s.d(t,{useSearchParams:function(){return n.useSearchParams}})},61202:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return l}});var n=s(57437),a=s(2265),r=s(99376),i=s(27648),o=s(18752);function l(){(0,r.useRouter)();let{toast:e}=(0,o.pm)(),[t,s]=(0,a.useState)(!1),[l,d]=(0,a.useState)({email:"",password:""}),c=async t=>{t.preventDefault(),s(!0);try{let t=await fetch("/api/v1/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(l)});if(!t.ok){let s=await t.json(),n=Array.isArray(s.detail)?s.detail.map(e=>e.msg).join(", "):s.detail||"Invalid email or password";e({title:"Login failed",description:n,variant:"destructive"});return}window.location.href="/dashboard"}catch(t){e({title:"Error",description:"An unexpected error occurred",variant:"destructive"})}finally{s(!1)}};return(0,n.jsxs)("div",{className:"min-h-screen flex font-sans",children:[(0,n.jsxs)("div",{className:"hidden lg:flex lg:w-1/2 bg-gradient-to-br from-[#0A66C2] to-[#004182] flex-col justify-center px-14 py-12 relative overflow-hidden",children:[(0,n.jsx)("div",{className:"absolute top-0 right-0 w-72 h-72 bg-white/5 rounded-full -translate-y-1/2 translate-x-1/2 pointer-events-none"}),(0,n.jsx)("div",{className:"absolute bottom-0 left-0 w-56 h-56 bg-white/5 rounded-full translate-y-1/2 -translate-x-1/2 pointer-events-none"}),(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsxs)("div",{className:"flex items-center gap-3 mb-12",children:[(0,n.jsx)("div",{className:"w-11 h-11 rounded-full bg-white/20 flex items-center justify-center",children:(0,n.jsx)("svg",{className:"w-6 h-6 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,n.jsx)("span",{className:"text-white text-2xl font-bold tracking-tight",children:"PostAI"})]}),(0,n.jsx)("h2",{className:"text-white text-3xl font-bold leading-snug mb-4",children:"Grow your professional brand on LinkedIn"}),(0,n.jsx)("p",{className:"text-blue-100 text-sm mb-10",children:"Join thousands of professionals using AI to post consistently and grow their audience."}),(0,n.jsx)("ul",{className:"space-y-5",children:[{title:"AI-Powered Content",desc:"Generate high-quality LinkedIn posts in seconds.",icon:(0,n.jsx)("svg",{className:"w-5 h-5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})},{title:"Smart Scheduling",desc:"Auto-schedule posts at peak engagement times.",icon:(0,n.jsx)("svg",{className:"w-5 h-5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})})},{title:"Performance Analytics",desc:"Track reach, impressions, and engagement metrics.",icon:(0,n.jsx)("svg",{className:"w-5 h-5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})})}].map(e=>(0,n.jsxs)("li",{className:"flex items-start gap-4",children:[(0,n.jsx)("div",{className:"w-9 h-9 rounded-lg bg-white/15 flex items-center justify-center shrink-0",children:e.icon}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"text-white font-semibold text-sm",children:e.title}),(0,n.jsx)("p",{className:"text-blue-100 text-xs mt-0.5",children:e.desc})]})]},e.title))})]})]}),(0,n.jsx)("div",{className:"flex-1 flex items-center justify-center bg-white px-6 py-12",children:(0,n.jsxs)("div",{className:"w-full max-w-sm",children:[(0,n.jsxs)("div",{className:"flex items-center justify-center gap-2 mb-8 lg:hidden",children:[(0,n.jsx)("div",{className:"w-9 h-9 rounded-full bg-[#0A66C2] flex items-center justify-center",children:(0,n.jsx)("svg",{className:"w-5 h-5 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,n.jsx)("span",{className:"text-gray-900 text-xl font-bold",children:"PostAI"})]}),(0,n.jsx)("h1",{className:"font-semibold text-gray-900 text-2xl mb-1",children:"Sign in"}),(0,n.jsx)("p",{className:"text-gray-600 text-sm mb-7",children:"Welcome back. Enter your credentials to continue."}),(0,n.jsxs)("form",{onSubmit:c,className:"space-y-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block text-sm font-semibold text-gray-900 mb-1.5",children:"Email"}),(0,n.jsx)("input",{type:"email",value:l.email,onChange:e=>d({...l,email:e.target.value}),placeholder:"you@example.com",required:!0,disabled:t,className:"w-full px-4 py-2.5 bg-white border border-gray-300 rounded-lg text-gray-900 placeholder-gray-400 text-sm focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all"})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-1.5",children:[(0,n.jsx)("label",{className:"block text-sm font-semibold text-gray-900",children:"Password"}),(0,n.jsx)("span",{className:"text-xs text-gray-400",children:"Forgot password? Contact support"})]}),(0,n.jsx)("input",{type:"password",value:l.password,onChange:e=>d({...l,password:e.target.value}),placeholder:"••••••••",required:!0,disabled:t,className:"w-full px-4 py-2.5 bg-white border border-gray-300 rounded-lg text-gray-900 placeholder-gray-400 text-sm focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all"})]}),(0,n.jsx)("button",{type:"submit",disabled:t,className:"w-full py-2.5 bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full shadow-sm transition-colors disabled:opacity-60 disabled:cursor-not-allowed",children:t?(0,n.jsxs)("span",{className:"flex items-center justify-center gap-2",children:[(0,n.jsx)("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Signing in..."]}):"Sign In"})]}),(0,n.jsxs)("p",{className:"text-center text-gray-600 text-sm mt-6",children:["Don't have an account?"," ",(0,n.jsx)(i.default,{href:"/auth/register",className:"text-[#0A66C2] hover:text-[#004182] font-semibold",children:"Sign up"})]})]})})]})}},18752:function(e,t,s){"use strict";s.d(t,{pm:function(){return h}});var n=s(2265);let a=0,r=new Map,i=e=>{if(r.has(e))return;let t=setTimeout(()=>{r.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?i(s):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=o(d,e),l.forEach(e=>{e(d)})}function u(e){let{...t}=e,s=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),n=()=>c({type:"DISMISS_TOAST",toastId:s});return c({type:"ADD_TOAST",toast:{...t,id:s,open:!0,onOpenChange:e=>{e||n()}}}),{id:s,dismiss:n,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:s}})}}function h(){let[e,t]=n.useState(d);return n.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}}},function(e){e.O(0,[972,971,117,744],function(){return e(e.s=77703)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/auth/register/page-d5fe300710df2f7a.js b/phase-1-core-infra/frontend/.next/static/chunks/app/auth/register/page-d5fe300710df2f7a.js new file mode 100644 index 0000000000000000000000000000000000000000..3cef20a6764a5b12cc35647468f361fc823ace72 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/auth/register/page-d5fe300710df2f7a.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[454],{41405:function(e,t,r){Promise.resolve().then(r.bind(r,88507))},27648:function(e,t,r){"use strict";r.d(t,{default:function(){return a.a}});var n=r(72972),a=r.n(n)},99376:function(e,t,r){"use strict";var n=r(35475);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},88507:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return g}});var n=r(57437),a=r(2265),s=r(99376),i=r(27648),l=r(12381),o=r(40279),d=r(1119),c=r(66840);let u=(0,a.forwardRef)((e,t)=>(0,a.createElement)(c.WV.label,(0,d.Z)({},e,{ref:t,onMouseDown:t=>{var r;null===(r=e.onMouseDown)||void 0===r||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault()}})));var f=r(90535),m=r(93448);let p=(0,f.j)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),h=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(u,{ref:t,className:(0,m.cn)(p(),r),...a})});h.displayName=u.displayName;var v=r(79820),x=r(18752);function g(){(0,s.useRouter)();let{toast:e}=(0,x.pm)(),[t,r]=(0,a.useState)(!1),[d,c]=(0,a.useState)({name:"",email:"",password:"",confirmPassword:""}),[u,f]=(0,a.useState)({}),m=()=>{let e={};return d.name.trim()||(e.name="Name is required"),d.email.trim()||(e.email="Email is required"),d.password.length<8?e.password="Must be at least 8 characters":/[A-Z]/.test(d.password)?/[a-z]/.test(d.password)?/\d/.test(d.password)||(e.password="Must contain a number"):e.password="Must contain a lowercase letter":e.password="Must contain an uppercase letter",d.password!==d.confirmPassword&&(e.confirmPassword="Passwords do not match"),f(e),0===Object.keys(e).length},p=async t=>{if(t.preventDefault(),m()){r(!0);try{let t=await fetch("".concat("","/api/v1/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:d.name,email:d.email,password:d.password})});if(!t.ok){let r=await t.json(),n=Array.isArray(r.detail)?r.detail.map(e=>e.msg).join(", "):r.detail||"An error occurred during registration";e({title:"Registration failed",description:n,variant:"destructive"});return}e({title:"Success",description:"Account created successfully!"}),window.location.href="/dashboard"}catch(t){e({title:"Error",description:"An unexpected error occurred. Please try again.",variant:"destructive"})}finally{r(!1)}}};return(0,n.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 px-4",children:(0,n.jsxs)(v.Zb,{className:"w-full max-w-md",children:[(0,n.jsxs)(v.Ol,{children:[(0,n.jsx)(v.ll,{children:"Create Account"}),(0,n.jsx)(v.SZ,{children:"Sign up to start managing your social media connections"})]}),(0,n.jsx)(v.aY,{children:(0,n.jsxs)("form",{onSubmit:p,className:"space-y-4",children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(h,{htmlFor:"name",children:"Full Name"}),(0,n.jsx)(o.I,{id:"name",type:"text",placeholder:"John Doe",value:d.name,onChange:e=>{c({...d,name:e.target.value}),u.name&&f({...u,name:""})},disabled:t}),u.name&&(0,n.jsx)("p",{className:"text-xs text-red-500",children:u.name})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(h,{htmlFor:"email",children:"Email"}),(0,n.jsx)(o.I,{id:"email",type:"email",placeholder:"you@example.com",value:d.email,onChange:e=>{c({...d,email:e.target.value}),u.email&&f({...u,email:""})},disabled:t}),u.email&&(0,n.jsx)("p",{className:"text-xs text-red-500",children:u.email})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(h,{htmlFor:"password",children:"Password"}),(0,n.jsx)(o.I,{id:"password",type:"password",placeholder:"••••••••",value:d.password,onChange:e=>{c({...d,password:e.target.value}),u.password&&f({...u,password:""})},disabled:t}),u.password?(0,n.jsx)("p",{className:"text-xs text-red-500",children:u.password}):(0,n.jsx)("p",{className:"text-xs text-gray-500",children:"Min 8 characters, with uppercase, lowercase, and number"})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(h,{htmlFor:"confirmPassword",children:"Confirm Password"}),(0,n.jsx)(o.I,{id:"confirmPassword",type:"password",placeholder:"••••••••",value:d.confirmPassword,onChange:e=>{c({...d,confirmPassword:e.target.value}),u.confirmPassword&&f({...u,confirmPassword:""})},disabled:t}),u.confirmPassword&&(0,n.jsx)("p",{className:"text-xs text-red-500",children:u.confirmPassword})]}),(0,n.jsx)(l.z,{type:"submit",className:"w-full",disabled:t,children:t?"Creating account...":"Create Account"})]})}),(0,n.jsx)(v.eW,{className:"flex justify-center",children:(0,n.jsxs)("p",{className:"text-sm text-gray-600",children:["Already have an account?"," ",(0,n.jsx)(i.default,{href:"/auth/login",className:"text-blue-600 hover:underline",children:"Sign in"})]})})]})})}},12381:function(e,t,r){"use strict";r.d(t,{z:function(){return d}});var n=r(57437),a=r(2265),s=r(37053),i=r(90535),l=r(93448);let o=(0,i.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),d=a.forwardRef((e,t)=>{let{className:r,variant:a,size:i,asChild:d=!1,...c}=e,u=d?s.g7:"button";return(0,n.jsx)(u,{className:(0,l.cn)(o({variant:a,size:i,className:r})),ref:t,...c})});d.displayName="Button"},79820:function(e,t,r){"use strict";r.d(t,{Ol:function(){return l},SZ:function(){return d},Zb:function(){return i},aY:function(){return c},eW:function(){return u},ll:function(){return o}});var n=r(57437),a=r(2265),s=r(93448);let i=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("div",{ref:t,className:(0,s.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",r),...a})});i.displayName="Card";let l=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("div",{ref:t,className:(0,s.cn)("flex flex-col space-y-1.5 p-6",r),...a})});l.displayName="CardHeader";let o=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("h3",{ref:t,className:(0,s.cn)("text-2xl font-semibold leading-none tracking-tight",r),...a})});o.displayName="CardTitle";let d=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("p",{ref:t,className:(0,s.cn)("text-sm text-muted-foreground",r),...a})});d.displayName="CardDescription";let c=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("div",{ref:t,className:(0,s.cn)("p-6 pt-0",r),...a})});c.displayName="CardContent";let u=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("div",{ref:t,className:(0,s.cn)("flex items-center p-6 pt-0",r),...a})});u.displayName="CardFooter"},40279:function(e,t,r){"use strict";r.d(t,{I:function(){return i}});var n=r(57437),a=r(2265),s=r(93448);let i=a.forwardRef((e,t)=>{let{className:r,type:a,...i}=e;return(0,n.jsx)("input",{type:a,className:(0,s.cn)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...i})});i.displayName="Input"},18752:function(e,t,r){"use strict";r.d(t,{pm:function(){return f}});var n=r(2265);let a=0,s=new Map,i=e=>{if(s.has(e))return;let t=setTimeout(()=>{s.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);s.set(e,t)},l=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?i(r):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},o=[],d={toasts:[]};function c(e){d=l(d,e),o.forEach(e=>{e(d)})}function u(e){let{...t}=e,r=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),n=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||n()}}}),{id:r,dismiss:n,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function f(){let[e,t]=n.useState(d);return n.useEffect(()=>(o.push(t),()=>{let e=o.indexOf(t);e>-1&&o.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},93448:function(e,t,r){"use strict";r.d(t,{cn:function(){return s}});var n=r(61994),a=r(53335);function s(){for(var e=arguments.length,t=Array(e),r=0;re.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}function s(...e){return(0,n.useCallback)(a(...e),e)}},66840:function(e,t,r){"use strict";r.d(t,{WV:function(){return l},jH:function(){return o}});var n=r(1119),a=r(2265),s=r(54887),i=r(37053);let l=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let r=(0,a.forwardRef)((e,r)=>{let{asChild:s,...l}=e,o=s?i.g7:t;return(0,a.useEffect)(()=>{window[Symbol.for("radix-ui")]=!0},[]),(0,a.createElement)(o,(0,n.Z)({},l,{ref:r}))});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function o(e,t){e&&(0,s.flushSync)(()=>e.dispatchEvent(t))}},37053:function(e,t,r){"use strict";r.d(t,{g7:function(){return i}});var n=r(1119),a=r(2265),s=r(98575);let i=(0,a.forwardRef)((e,t)=>{let{children:r,...s}=e,i=a.Children.toArray(r),o=i.find(d);if(o){let e=o.props.children,r=i.map(t=>t!==o?t:a.Children.count(e)>1?a.Children.only(null):(0,a.isValidElement)(e)?e.props.children:null);return(0,a.createElement)(l,(0,n.Z)({},s,{ref:t}),(0,a.isValidElement)(e)?(0,a.cloneElement)(e,void 0,r):null)}return(0,a.createElement)(l,(0,n.Z)({},s,{ref:t}),r)});i.displayName="Slot";let l=(0,a.forwardRef)((e,t)=>{let{children:r,...n}=e;return(0,a.isValidElement)(r)?(0,a.cloneElement)(r,{...function(e,t){let r={...t};for(let n in t){let a=e[n],s=t[n];/^on[A-Z]/.test(n)?a&&s?r[n]=(...e)=>{s(...e),a(...e)}:a&&(r[n]=a):"style"===n?r[n]={...a,...s}:"className"===n&&(r[n]=[a,s].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props),ref:t?(0,s.F)(t,r.ref):r.ref}):a.Children.count(r)>1?a.Children.only(null):null});l.displayName="SlotClone";let o=({children:e})=>(0,a.createElement)(a.Fragment,null,e);function d(e){return(0,a.isValidElement)(e)&&e.type===o}},90535:function(e,t,r){"use strict";r.d(t,{j:function(){return i}});var n=r(61994);let a=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,s=n.W,i=(e,t)=>r=>{var n;if((null==t?void 0:t.variants)==null)return s(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:l}=t,o=Object.keys(i).map(e=>{let t=null==r?void 0:r[e],n=null==l?void 0:l[e];if(null===t)return null;let s=a(t)||a(n);return i[e][s]}),d=r&&Object.entries(r).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return s(e,o,null==t?void 0:null===(n=t.compoundVariants)||void 0===n?void 0:n.reduce((e,t)=>{let{class:r,className:n,...a}=t;return Object.entries(a).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...l,...d}[t]):({...l,...d})[t]===r})?[...e,r,n]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}},function(e){e.O(0,[972,137,971,117,744],function(){return e(e.s=41405)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/connected-accounts/page-00a803a131eed5fc.js b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/connected-accounts/page-00a803a131eed5fc.js new file mode 100644 index 0000000000000000000000000000000000000000..308a89dd43ad1d94187164c52361230ac6703f5c --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/connected-accounts/page-00a803a131eed5fc.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[731],{28949:function(e,t,s){Promise.resolve().then(s.bind(s,95761))},95761:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return o}});var n=s(57437),a=s(2265);let r=[{key:"linkedin",label:"LinkedIn",icon:"\uD83D\uDCBC"}],c=["Automatically post AI-generated content to LinkedIn","Schedule posts at optimal times for maximum reach","Track engagement, impressions, and performance metrics","Your credentials are encrypted and stored securely"];function o(){let[e,t]=(0,a.useState)([]),[s,o]=(0,a.useState)(!0),[i,l]=(0,a.useState)(null),[d,u]=(0,a.useState)(null);(0,a.useEffect)(()=>{h()},[]);let h=async()=>{o(!0),u(null);try{let e=await fetch("/api/v1/oauth/accounts",{credentials:"include"});if(!e.ok){if(401===e.status)u("Please login to view connected accounts");else throw Error("Failed to fetch accounts: ".concat(e.status));return}let s=await e.json();t(Array.isArray(s)?s:[])}catch(e){console.error("Error fetching accounts:",e),u("Failed to load connected accounts")}finally{o(!1)}},m=async e=>{l(e);try{let t=await fetch("/api/v1/oauth/authorize/".concat(e),{credentials:"include"});if(!t.ok){let s=await t.json().catch(()=>({}));throw Error(s.detail||"Failed to initiate ".concat(e," OAuth"))}let s=await t.json();s.authorization_url?(s.redirect_uri&&sessionStorage.setItem("oauth_redirect_uri_".concat(e),s.redirect_uri),s.state&&sessionStorage.setItem("oauth_state_".concat(e),s.state),s.code_verifier&&sessionStorage.setItem("oauth_code_verifier",s.code_verifier),window.location.href=s.authorization_url):window.location.href="/api/auth/signin/".concat(e)}catch(t){console.error("Error connecting ".concat(e,":"),t),alert("Failed to connect ".concat(e,": ").concat(t.message)),l(null)}},x=async e=>{if(confirm("Are you sure you want to disconnect your ".concat(e.platform," account?")))try{let t=await fetch("/api/v1/oauth/disconnect/".concat(e.id),{method:"DELETE",credentials:"include"});if(!t.ok&&204!==t.status)throw Error("Failed to disconnect account");alert("".concat(e.platform," account disconnected successfully")),h()}catch(e){console.error("Error disconnecting account:",e),alert("Failed to disconnect account")}},f=t=>e.find(e=>e.platform===t);return(0,n.jsx)("div",{className:"min-h-screen bg-[#F3F2EF] py-6 px-4",children:(0,n.jsxs)("div",{className:"max-w-2xl mx-auto space-y-4",children:[(0,n.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6",children:[(0,n.jsx)("h1",{className:"font-semibold text-gray-900 text-xl",children:"Connected Accounts"}),(0,n.jsx)("p",{className:"text-gray-600 text-sm mt-1",children:"Link your social media accounts to enable AI-powered automated posting."})]}),s?(0,n.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-10 text-center",children:[(0,n.jsx)("div",{className:"w-8 h-8 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin mx-auto mb-3"}),(0,n.jsx)("p",{className:"text-gray-600 text-sm",children:"Loading accounts..."})]}):d?(0,n.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-8 text-center border-l-4 border-red-400",children:[(0,n.jsx)("div",{className:"w-10 h-10 rounded-full bg-red-100 flex items-center justify-center mx-auto mb-3",children:(0,n.jsx)("svg",{className:"w-5 h-5 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),(0,n.jsx)("p",{className:"text-gray-900 font-semibold text-sm mb-1",children:"Something went wrong"}),(0,n.jsx)("p",{className:"text-gray-600 text-sm",children:d})]}):(0,n.jsxs)("div",{className:"space-y-4",children:[r.map(e=>{let{key:t,label:s}=e,a=f(t);return(0,n.jsx)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-6",children:(0,n.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,n.jsxs)("div",{className:"flex items-center gap-4",children:[(0,n.jsx)("div",{className:"w-12 h-12 rounded-xl bg-[#0A66C2] flex items-center justify-center shrink-0",children:(0,n.jsx)("svg",{className:"w-6 h-6 text-white",viewBox:"0 0 24 24",fill:"currentColor",children:(0,n.jsx)("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{className:"font-semibold text-gray-900",children:s}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,n.jsx)("span",{className:"w-2 h-2 rounded-full ".concat(a?"bg-green-500":"bg-gray-300")}),(0,n.jsx)("span",{className:"text-sm ".concat(a?"text-green-600 font-medium":"text-gray-500"),children:a?"Connected":"Not connected"})]}),(null==a?void 0:a.platform_username)&&(0,n.jsxs)("p",{className:"text-xs text-gray-500 mt-0.5",children:["as ",(0,n.jsxs)("span",{className:"font-medium text-gray-700",children:["@",a.platform_username]})]})]})]}),(0,n.jsx)("div",{className:"shrink-0",children:a?(0,n.jsx)("button",{onClick:()=>x(a),className:"border border-red-400 text-red-500 hover:bg-red-50 font-semibold text-sm rounded-full px-5 py-2 transition-colors",children:"Disconnect"}):(0,n.jsx)("button",{onClick:()=>m(t),disabled:i===t,className:"bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2 transition-colors disabled:opacity-60 disabled:cursor-not-allowed flex items-center gap-2",children:i===t?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"w-3.5 h-3.5 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Connecting..."]}):"Connect"})})]})},t)}),(0,n.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6",children:[(0,n.jsxs)("h4",{className:"font-semibold text-gray-900 mb-4 flex items-center gap-2",children:[(0,n.jsx)("div",{className:"w-7 h-7 rounded-full bg-blue-50 flex items-center justify-center",children:(0,n.jsx)("svg",{className:"w-4 h-4 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),"Why connect?"]}),(0,n.jsx)("ul",{className:"space-y-3",children:c.map((e,t)=>(0,n.jsxs)("li",{className:"flex items-start gap-3 text-sm text-gray-600",children:[(0,n.jsx)("div",{className:"w-5 h-5 rounded-full bg-green-100 flex items-center justify-center shrink-0 mt-0.5",children:(0,n.jsx)("svg",{className:"w-3 h-3 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})}),e]},t))})]})]})]})})}}},function(e){e.O(0,[971,117,744],function(){return e(e.s=28949)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/content/create/page-0c645fe1447e610f.js b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/content/create/page-0c645fe1447e610f.js new file mode 100644 index 0000000000000000000000000000000000000000..e4c252870a5663d3b11b0c05328955253e45b39b --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/content/create/page-0c645fe1447e610f.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[950],{66048:function(e,t,s){Promise.resolve().then(s.bind(s,32197))},32197:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return l}});var r=s(57437),a=s(2265);let n=["professional","casual","inspiring","funny","educational"];function l(){let[e,t]=(0,a.useState)(""),[s,l]=(0,a.useState)(null),[o,i]=(0,a.useState)(!1),[d,c]=(0,a.useState)(""),[x,h]=(0,a.useState)("professional"),[u,m]=(0,a.useState)(!1),[p,g]=(0,a.useState)(""),[b,f]=(0,a.useState)(!1),[j,y]=(0,a.useState)("upload"),[v,k]=(0,a.useState)(null),[w,N]=(0,a.useState)(!1),[C,A]=(0,a.useState)(""),L=(0,a.useRef)(null),[M,S]=(0,a.useState)(!1),[P,I]=(0,a.useState)("upload"),[B,W]=(0,a.useState)(null),[O,V]=(0,a.useState)(!1),[_,T]=(0,a.useState)(""),F=(0,a.useRef)(null),[G,D]=(0,a.useState)(!1),[z,E]=(0,a.useState)(""),[H,K]=(0,a.useState)(""),[U,J]=(0,a.useState)(!1),[R,q]=(0,a.useState)("");async function Q(){if(d.trim().length<3){g("Topic kam se kam 3 characters ka hona chahiye");return}m(!0),g("");try{let e=await fetch("/api/v1/posts/generate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({topic:d.trim(),platforms:["linkedin"],tone:x})});if(!e.ok){let t=await e.json();throw Error(Array.isArray(t.detail)?t.detail.map(e=>e.msg).join(", "):t.detail||"Generation failed")}let s=await e.json();t(s.content||""),l(s.post_id||null),i(!1),E(""),K("")}catch(e){g(e.message)}finally{m(!1)}}async function X(){if(s)return s;if(!e.trim())return null;try{let t=await fetch("/api/v1/posts/save-draft",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({content:e.trim(),platforms:["linkedin"]})});if(!t.ok)return null;let s=await t.json();return l(s.post_id),s.post_id}catch(e){return null}}async function Y(){if(e.trim()){N(!0),A("");try{let t=await fetch("/api/v1/posts/generate-image",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({content:e.trim()})});if(!t.ok){let e=await t.json();throw Error(e.detail||"Image generation failed")}let s=await t.json();k({url:s.url,name:"AI Generated Image"})}catch(e){A(e.message)}finally{N(!1)}}}async function Z(e){N(!0),A("");try{let t=new FormData;t.append("file",e);let s=await fetch("/api/v1/upload/media",{method:"POST",credentials:"include",body:t});if(!s.ok){let e=await s.json();throw Error(e.detail||"Upload failed")}let r=await s.json();k({url:r.url,name:e.name})}catch(e){A(e.message)}finally{N(!1)}}async function $(e){V(!0),T("");try{let t=new FormData;t.append("file",e);let s=await fetch("/api/v1/upload/media",{method:"POST",credentials:"include",body:t});if(!s.ok){let e=await s.json();throw Error(e.detail||"Upload failed")}let r=await s.json();W({url:r.url,name:e.name})}catch(e){T(e.message)}finally{V(!1)}}function ee(){let e=[];return(null==v?void 0:v.url)&&e.push(v.url),(null==B?void 0:B.url)&&e.push(B.url),e}async function et(){if(e.trim()){D(!0),K(""),E("");try{var t,s,r,a;let e=await X();if(!e){K("Post content empty hai"),D(!1);return}let n=await fetch("/api/v1/posts/publish",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({post_id:e,platforms:["linkedin"],media_urls:ee()})});if(!n.ok){let e=await n.json();throw Error(e.detail||"Publish failed")}let l=await n.json(),o=null!==(r=null===(t=l.results)||void 0===t?void 0:t.filter(e=>e.success))&&void 0!==r?r:[],i=null!==(a=null===(s=l.results)||void 0===s?void 0:s.filter(e=>!e.success))&&void 0!==a?a:[];if(o.length>0&&E("LinkedIn pe publish ho gaya!"),i.length>0){let e=i.some(e=>{var t,s;return(null===(t=e.error)||void 0===t?void 0:t.toLowerCase().includes("no connected"))||(null===(s=e.error)||void 0===s?void 0:s.toLowerCase().includes("connect"))});K(e?"LinkedIn account connect nahi hai.":i.map(e=>e.error).join(", "))}}catch(e){K(e.message)}finally{D(!1)}}}async function es(){if(R&&e.trim()){D(!0),K(""),E("");try{let e=await X();if(!e){K("Post content empty hai"),D(!1);return}let t=await fetch("/api/v1/posts/schedule",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({post_id:e,platforms:["linkedin"],scheduled_at:new Date(R).toISOString(),media_urls:ee()})});if(!t.ok){let e=await t.json();throw Error(e.detail||"Schedule failed")}E("Post schedule ho gaya — ".concat(new Date(R).toLocaleString())),J(!1)}catch(e){K(e.message)}finally{D(!1)}}}function er(e,t){e.preventDefault();let s=e.dataTransfer.files[0];s&&t(s)}return(0,r.jsx)("div",{className:"min-h-screen bg-[#F3F2EF] py-6 px-4",children:(0,r.jsxs)("div",{className:"max-w-2xl mx-auto space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-xl font-semibold text-gray-900",children:"Create Post"}),(0,r.jsx)("p",{className:"text-gray-600 text-sm mt-0.5",children:"LinkedIn ke liye post banao"})]}),(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] overflow-hidden divide-y divide-gray-100",children:[(0,r.jsxs)("div",{className:"p-5 space-y-3",children:[(0,r.jsx)("textarea",{rows:6,value:e,onChange:e=>{t(e.target.value),K("")},placeholder:"Apna post yahan likhein... ya neeche AI se Likhwao use karo",className:"w-full px-4 py-2.5 bg-white border border-gray-200 rounded-lg text-gray-900 text-sm placeholder-gray-400 focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all resize-none"}),(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("span",{className:"text-xs text-gray-400",children:[e.length," characters"]}),s&&(0,r.jsx)("span",{className:"text-xs text-[#0A66C2] font-semibold",children:"Draft saved"})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{onClick:()=>i(!o),className:"w-full flex items-center gap-2 px-5 py-3 text-sm font-semibold text-[#0A66C2] hover:bg-blue-50 transition-colors text-left",children:[(0,r.jsx)("svg",{className:"w-4 h-4 shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})}),(0,r.jsx)("span",{children:"AI se Likhwao"}),(0,r.jsx)("svg",{className:"w-4 h-4 ml-auto text-gray-400 transition-transform ".concat(o?"rotate-180":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),o&&(0,r.jsxs)("div",{className:"px-5 pb-5 pt-3 space-y-4 bg-blue-50/30",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-semibold text-gray-900 mb-1.5 block",children:"Topic / Subject"}),(0,r.jsx)("input",{type:"text",value:d,onChange:e=>{c(e.target.value),g("")},placeholder:"e.g. Leadership tips for startup founders",className:"w-full px-4 py-2.5 bg-white border border-gray-200 rounded-lg text-gray-900 text-sm placeholder-gray-400 focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-semibold text-gray-900 mb-1.5 block",children:"Tone"}),(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:n.map(e=>(0,r.jsx)("button",{onClick:()=>h(e),className:"px-3 py-1 text-xs rounded-full border capitalize transition-colors font-medium ".concat(x===e?"bg-[#0A66C2] text-white border-[#0A66C2]":"bg-white text-gray-600 border-gray-200 hover:border-[#0A66C2]"),children:e},e))})]}),p&&(0,r.jsx)("p",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:p}),(0,r.jsx)("button",{onClick:Q,disabled:u||d.trim().length<3,className:"flex items-center gap-2 bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:u?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Generating..."]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})}),"Generate Karo"]})})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{onClick:()=>f(!b),className:"w-full flex items-center gap-2 px-5 py-3 text-sm font-semibold text-gray-700 hover:bg-gray-50 transition-colors text-left",children:[(0,r.jsx)("svg",{className:"w-4 h-4 shrink-0 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})}),(0,r.jsx)("span",{children:"Image Add Karo"}),v&&(0,r.jsxs)("span",{className:"ml-2 text-xs text-[#0A66C2] font-normal flex items-center gap-1",children:[(0,r.jsx)("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),v.name]}),(0,r.jsx)("svg",{className:"w-4 h-4 ml-auto text-gray-400 transition-transform ".concat(b?"rotate-180":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),b&&(0,r.jsxs)("div",{className:"px-5 pb-5 pt-3 space-y-3",children:[(0,r.jsxs)("div",{className:"flex rounded-lg border border-gray-200 overflow-hidden w-fit",children:[(0,r.jsx)("button",{onClick:()=>y("upload"),className:"px-4 py-1.5 text-xs font-medium transition-colors ".concat("upload"===j?"bg-gray-900 text-white":"bg-white text-gray-600 hover:bg-gray-50"),children:"Upload Karo"}),(0,r.jsx)("button",{onClick:()=>y("ai"),className:"px-4 py-1.5 text-xs font-medium transition-colors ".concat("ai"===j?"bg-gray-900 text-white":"bg-white text-gray-600 hover:bg-gray-50"),children:"AI se Banao"})]}),"upload"===j&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("input",{ref:L,type:"file",accept:"image/*",className:"hidden",onChange:e=>{var t;return(null===(t=e.target.files)||void 0===t?void 0:t[0])&&Z(e.target.files[0])}}),(0,r.jsx)("div",{onClick:()=>{var e;return null===(e=L.current)||void 0===e?void 0:e.click()},onDrop:e=>er(e,Z),onDragOver:e=>e.preventDefault(),className:"border-2 border-dashed border-gray-200 rounded-xl p-8 text-center cursor-pointer hover:border-[#0A66C2] hover:bg-blue-50/30 transition-colors",children:w?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,r.jsx)("span",{className:"w-7 h-7 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),(0,r.jsx)("p",{className:"text-xs text-gray-500",children:"Uploading..."})]}):v?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("img",{src:v.url,alt:"Uploaded",className:"max-h-40 mx-auto rounded-lg object-contain"}),(0,r.jsx)("p",{className:"text-xs text-[#0A66C2] font-semibold",children:v.name}),(0,r.jsx)("p",{className:"text-xs text-gray-400",children:"Change karne ke liye click karo"})]}):(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("div",{className:"w-12 h-12 rounded-full bg-blue-50 flex items-center justify-center mx-auto",children:(0,r.jsx)("svg",{className:"w-6 h-6 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})})}),(0,r.jsx)("p",{className:"text-sm font-semibold text-gray-700",children:"Click karo ya drag & drop karo"}),(0,r.jsx)("p",{className:"text-xs text-gray-400",children:"JPG, PNG, GIF, WebP — max 50MB"})]})}),C&&(0,r.jsx)("p",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:C})]}),"ai"===j&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"p-3 bg-gray-50 border border-gray-200 rounded-lg",children:[(0,r.jsx)("p",{className:"text-xs font-semibold text-gray-700 mb-1",children:"Post content se image banegi:"}),(0,r.jsx)("p",{className:"text-xs text-gray-500 line-clamp-3 italic",children:e.trim()?'"'.concat(e.trim().slice(0,120)).concat(e.length>120?"...":"",'"'):"Pehle upar post likho ya AI se generate karo"})]}),v&&"ai"===j&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("img",{src:v.url,alt:"AI Generated",className:"rounded-lg w-full object-cover max-h-52 border border-gray-200 transition-opacity ".concat(w?"opacity-40":"opacity-100")}),w&&(0,r.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-2 rounded-lg",children:[(0,r.jsx)("span",{className:"w-8 h-8 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-[#0A66C2] bg-white/80 px-2 py-0.5 rounded",children:"Generating new image..."})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("p",{className:"text-xs text-[#0A66C2] font-semibold",children:w?"Generating...":"Image ready"}),(0,r.jsx)("button",{onClick:Y,disabled:w,className:"border border-gray-300 text-gray-600 hover:border-[#0A66C2] hover:text-[#0A66C2] text-xs font-semibold rounded-full px-3 py-1.5 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:"Re-generate"})]})]}),!v&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onClick:Y,disabled:w||!e.trim(),className:"flex items-center gap-2 bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:w?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Generating (~30s)..."]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})}),"AI Image Generate Karo"]})}),!e.trim()&&(0,r.jsx)("p",{className:"text-xs text-amber-600",children:"Pehle post content likho ya generate karo"})]}),C&&(0,r.jsx)("p",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:C})]})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{onClick:()=>S(!M),className:"w-full flex items-center gap-2 px-5 py-3 text-sm font-semibold text-gray-700 hover:bg-gray-50 transition-colors text-left",children:[(0,r.jsx)("svg",{className:"w-4 h-4 shrink-0 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 10l4.553-2.069A1 1 0 0121 8.87v6.26a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})}),(0,r.jsx)("span",{children:"Video Add Karo"}),B&&(0,r.jsxs)("span",{className:"ml-2 text-xs text-[#0A66C2] font-normal flex items-center gap-1",children:[(0,r.jsx)("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),B.name]}),(0,r.jsx)("svg",{className:"w-4 h-4 ml-auto text-gray-400 transition-transform ".concat(M?"rotate-180":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),M&&(0,r.jsxs)("div",{className:"px-5 pb-5 pt-3 space-y-3",children:[(0,r.jsxs)("div",{className:"flex rounded-lg border border-gray-200 overflow-hidden w-fit",children:[(0,r.jsx)("button",{onClick:()=>I("upload"),className:"px-4 py-1.5 text-xs font-medium transition-colors ".concat("upload"===P?"bg-gray-900 text-white":"bg-white text-gray-600 hover:bg-gray-50"),children:"Upload Karo"}),(0,r.jsx)("button",{onClick:()=>I("ai"),className:"px-4 py-1.5 text-xs font-medium transition-colors ".concat("ai"===P?"bg-gray-900 text-white":"bg-white text-gray-600 hover:bg-gray-50"),children:"AI se Banao"})]}),"upload"===P&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("input",{ref:F,type:"file",accept:"video/*",className:"hidden",onChange:e=>{var t;return(null===(t=e.target.files)||void 0===t?void 0:t[0])&&$(e.target.files[0])}}),(0,r.jsx)("div",{onClick:()=>{var e;return null===(e=F.current)||void 0===e?void 0:e.click()},onDrop:e=>er(e,$),onDragOver:e=>e.preventDefault(),className:"border-2 border-dashed border-gray-200 rounded-xl p-8 text-center cursor-pointer hover:border-[#0A66C2] hover:bg-blue-50/30 transition-colors",children:O?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,r.jsx)("span",{className:"w-7 h-7 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),(0,r.jsx)("p",{className:"text-xs text-gray-500",children:"Uploading..."})]}):B?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("div",{className:"w-12 h-12 rounded-full bg-green-100 flex items-center justify-center mx-auto",children:(0,r.jsx)("svg",{className:"w-6 h-6 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})}),(0,r.jsx)("p",{className:"text-xs text-[#0A66C2] font-semibold",children:B.name}),(0,r.jsx)("p",{className:"text-xs text-gray-400",children:"Change karne ke liye click karo"})]}):(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("div",{className:"w-12 h-12 rounded-full bg-blue-50 flex items-center justify-center mx-auto",children:(0,r.jsx)("svg",{className:"w-6 h-6 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 10l4.553-2.069A1 1 0 0121 8.87v6.26a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})})}),(0,r.jsx)("p",{className:"text-sm font-semibold text-gray-700",children:"Click karo ya drag & drop karo"}),(0,r.jsx)("p",{className:"text-xs text-gray-400",children:"MP4, MOV, AVI, WebM — max 50MB"})]})}),_&&(0,r.jsx)("p",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:_})]}),"ai"===P&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"p-4 bg-amber-50 border border-amber-200 rounded-lg space-y-2",children:[(0,r.jsx)("p",{className:"text-sm font-semibold text-amber-800",children:"AI Video Generation — Paid API Required"}),(0,r.jsx)("p",{className:"text-xs text-amber-700",children:"Google Veo, Replicate, aur sab video AI services paid hain. Abhi video upload option use karo."}),(0,r.jsx)("p",{className:"text-xs text-amber-600 font-semibold",children:"Upcoming: Pro plan mein AI video generation include hoga."})]}),(0,r.jsxs)("button",{disabled:!0,className:"flex items-center gap-2 bg-gray-300 text-gray-500 font-semibold text-sm rounded-full px-5 py-2 cursor-not-allowed opacity-60",children:[(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 10l4.553-2.069A1 1 0 0121 8.87v6.26a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})}),"AI Video Generate Karo",(0,r.jsx)("span",{className:"ml-1 text-xs bg-gray-400 text-white px-2 py-0.5 rounded-full",children:"Pro Plan"})]})]})]})]}),(0,r.jsxs)("div",{className:"p-5 space-y-3",children:[(v||B)&&(0,r.jsxs)("div",{className:"bg-[#F3F2EF] rounded-lg p-3 flex items-center gap-3",children:[(0,r.jsx)("span",{className:"text-xs font-semibold text-gray-600 shrink-0",children:"Attached:"}),v&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("img",{src:v.url,alt:"",className:"w-10 h-10 rounded object-cover"}),(0,r.jsx)("span",{className:"text-xs text-gray-500 truncate max-w-24",children:v.name}),(0,r.jsx)("button",{onClick:()=>k(null),className:"text-gray-400 hover:text-red-500 text-xs ml-1",children:(0,r.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),B&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("div",{className:"w-10 h-10 rounded bg-gray-200 flex items-center justify-center",children:(0,r.jsx)("svg",{className:"w-5 h-5 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 10l4.553-2.069A1 1 0 0121 8.87v6.26a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})})}),(0,r.jsx)("span",{className:"text-xs text-gray-500 truncate max-w-24",children:B.name}),(0,r.jsx)("button",{onClick:()=>W(null),className:"text-gray-400 hover:text-red-500 text-xs ml-1",children:(0,r.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]})]}),H&&(0,r.jsxs)("div",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg flex items-start justify-between gap-3",children:[(0,r.jsx)("span",{children:H}),H.includes("connect")&&(0,r.jsx)("a",{href:"/dashboard/connected-accounts",className:"shrink-0 text-[#0A66C2] font-semibold underline hover:text-[#004182] text-xs",children:"Connect Karo"})]}),z&&(0,r.jsxs)("div",{className:"text-sm text-green-700 bg-green-50 border border-green-200 px-4 py-3 rounded-lg flex items-center justify-between",children:[(0,r.jsx)("span",{children:z}),(0,r.jsx)("button",{onClick:function(){t(""),l(null),c(""),h("professional"),k(null),W(null),A(""),T(""),E(""),K(""),J(!1),i(!1),f(!1),S(!1)},className:"text-xs text-green-700 font-semibold hover:underline ml-4 shrink-0",children:"Naya Post"})]}),!z&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex gap-3",children:[(0,r.jsx)("button",{onClick:et,disabled:G||!e.trim(),className:"flex-1 flex items-center justify-center gap-2 py-2.5 bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:G&&!U?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Publishing..."]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 19l9 2-9-18-9 18 9-2zm0 0v-8"})}),"Abhi Publish Karo"]})}),(0,r.jsxs)("button",{onClick:()=>J(!U),disabled:G||!e.trim(),className:"flex-1 flex items-center justify-center gap-2 py-2.5 border-2 border-[#0A66C2] text-[#0A66C2] hover:bg-blue-50 font-semibold text-sm rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})}),"Schedule Karo"]})]}),!e.trim()&&(0,r.jsx)("p",{className:"text-xs text-center text-gray-400",children:"Pehle post likho ya AI se generate karo"}),U&&(0,r.jsxs)("div",{className:"flex gap-2 items-end",children:[(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("label",{className:"text-sm font-semibold text-gray-900 mb-1.5 block",children:"Date & Time (Local)"}),(0,r.jsx)("input",{type:"datetime-local",value:R,onChange:e=>q(e.target.value),min:new Date().toISOString().slice(0,16),className:"w-full px-4 py-2.5 bg-white border border-gray-200 rounded-lg text-gray-900 text-sm placeholder-gray-400 focus:outline-none focus:border-[#0A66C2] focus:ring-2 focus:ring-[#0A66C2]/20 transition-all"})]}),(0,r.jsx)("button",{onClick:es,disabled:G||!R||!e.trim(),className:"bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2.5 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:G&&U?(0,r.jsx)("span",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin inline-block"}):"Confirm"})]})]})]})]})]})})}}},function(e){e.O(0,[971,117,744],function(){return e(e.s=66048)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/insights/page-b15066396f5f685e.js b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/insights/page-b15066396f5f685e.js new file mode 100644 index 0000000000000000000000000000000000000000..0f6f7defd1aefa266f920ac4024c0d819d8337fc --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/insights/page-b15066396f5f685e.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[687],{16596:function(e,s,a){Promise.resolve().then(a.bind(a,78626))},78626:function(e,s,a){"use strict";a.r(s),a.d(s,{default:function(){return u}});var t=a(57437),l=a(2265);let n="/api/v1";async function r(e,s){let a=new URL(e,window.location.origin);s&&Object.entries(s).forEach(e=>{let[s,t]=e;null!=t&&a.searchParams.set(s,String(t))});let t=await fetch(a.toString(),{credentials:"include"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).detail||"API error ".concat(t.status));return t.json()}class i{getAggregatedMetrics(e){return r("".concat(n,"/analytics/aggregated"),e)}getSummary(){return r("".concat(n,"/analytics/summary"))}getInsights(e){return r("".concat(n,"/insights"),e)}getLessons(e){return r("".concat(n,"/insights/lessons"),e)}}let c=new i,d=[{value:"7d",label:"7 Days"},{value:"30d",label:"30 Days"},{value:"90d",label:"90 Days"}],o=[{value:"day",label:"Daily"},{value:"week",label:"Weekly"},{value:"month",label:"Monthly"}];function x(e){let{data:s}=e;if(!s.length)return(0,t.jsx)("div",{className:"h-48 flex items-center justify-center text-gray-400 text-sm",children:"Abhi koi data nahi — posts publish karo aur yahan track hogi activity"});let a=Math.max(...s.map(e=>e.post_count),1);return(0,t.jsx)("div",{className:"space-y-2",children:s.map((e,s)=>(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"text-xs text-gray-500 w-20 shrink-0",children:e.date.slice(5)}),(0,t.jsxs)("div",{className:"flex-1 flex items-center gap-2",children:[e.post_count>0&&(0,t.jsx)("div",{className:"h-6 bg-[#0A66C2] rounded text-xs text-white flex items-center px-2 font-semibold transition-all",style:{width:"".concat(Math.max(e.post_count/a*100,8),"%")},children:e.post_count}),e.published_count>0&&(0,t.jsxs)("span",{className:"text-xs text-green-600 font-medium",children:[e.published_count," published"]}),e.scheduled_count>0&&(0,t.jsxs)("span",{className:"text-xs text-[#0A66C2] font-medium",children:[e.scheduled_count," scheduled"]}),e.failed_count>0&&(0,t.jsxs)("span",{className:"text-xs text-red-500 font-medium",children:[e.failed_count," failed"]}),0===e.post_count&&(0,t.jsx)("span",{className:"text-xs text-gray-300",children:"—"})]})]},s))})}function h(e){let{insight:s}=e,a=Math.round(s.impact_percentage),l=Math.round(100*s.confidence_score),n=s.correlation_coefficient>=0,r={publish_success_rate:"border-l-green-500",posting_frequency:"border-l-[#0A66C2]",best_posting_day:"border-l-purple-500",media_usage:"border-l-indigo-500",scheduled_posts:"border-l-cyan-500",failure_rate:"border-l-red-500"}[s.characteristic]||"border-l-gray-400";return(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 border-l-4 ".concat(r," space-y-2"),children:[(0,t.jsx)("p",{className:"text-sm text-gray-800 font-medium leading-snug",children:s.insight_text}),(0,t.jsxs)("div",{className:"flex items-center gap-4 text-xs text-gray-500",children:[(0,t.jsxs)("span",{children:["Impact: ",(0,t.jsxs)("span",{className:"font-semibold text-gray-700",children:[a,"%"]})]}),(0,t.jsxs)("span",{children:["Confidence: ",(0,t.jsxs)("span",{className:"font-semibold text-gray-700",children:[l,"%"]})]}),(0,t.jsxs)("span",{children:["Sample: ",(0,t.jsx)("span",{className:"font-semibold text-gray-700",children:s.sample_size})," posts"]}),(0,t.jsx)("span",{className:"font-semibold ".concat(n?"text-green-600":"text-red-500"),children:n?"↑ Positive":"↓ Negative"})]})]})}function m(e){let{lesson:s}=e,a=s.effectiveness_score?Math.round(100*s.effectiveness_score):null;return(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 border-l-4 border-amber-400 space-y-1.5",children:[(0,t.jsx)("p",{className:"text-sm text-gray-800 leading-snug",children:s.lesson_text}),a&&(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-xs text-gray-500",children:"Effectiveness"}),(0,t.jsxs)("span",{className:"text-xs text-amber-700 font-semibold",children:[a,"%"]})]}),(0,t.jsx)("div",{className:"w-full bg-amber-100 rounded-full h-1.5",children:(0,t.jsx)("div",{className:"bg-amber-400 h-1.5 rounded-full",style:{width:"".concat(a,"%")}})})]})]})}function u(){let[e,s]=(0,l.useState)("30d"),[a,n]=(0,l.useState)("day"),[r,i]=(0,l.useState)(null),[u,g]=(0,l.useState)([]),[p,b]=(0,l.useState)([]),[j,f]=(0,l.useState)([]),[v,y]=(0,l.useState)(!0),[N,_]=(0,l.useState)(""),w=(0,l.useCallback)(async()=>{y(!0),_("");try{let[s,t,l,n]=await Promise.all([c.getSummary(),c.getAggregatedMetrics({date_range:e,group_by:a}),c.getInsights({is_active:!0,limit:10}),c.getLessons({limit:6})]);i(s),g(t.data),b(l.data),f(n.data)}catch(e){_(e.message||"Data load nahi hua")}finally{y(!1)}},[e,a]);return(0,l.useEffect)(()=>{w()},[w]),(0,t.jsx)("div",{className:"min-h-screen bg-[#F3F2EF] py-6 px-4",children:(0,t.jsxs)("div",{className:"max-w-5xl mx-auto space-y-5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-xl font-semibold text-gray-900",children:"Performance Insights"}),(0,t.jsx)("p",{className:"text-sm text-gray-600 mt-0.5",children:"Apni LinkedIn posting activity aur patterns dekho"})]}),(0,t.jsxs)("button",{onClick:w,disabled:v,className:"border border-[#0A66C2] text-[#0A66C2] hover:bg-blue-50 font-semibold text-sm rounded-full px-5 py-2 transition-colors disabled:opacity-50 flex items-center gap-2 shrink-0",children:[(0,t.jsx)("svg",{className:"w-4 h-4 ".concat(v?"animate-spin":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Refresh"]})]}),N&&(0,t.jsx)("div",{className:"text-sm text-red-600 bg-red-50 border border-red-200 px-4 py-3 rounded-lg",children:N}),v?(0,t.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[1,2,3,4].map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5 animate-pulse",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-full bg-gray-100"}),(0,t.jsx)("div",{className:"h-7 w-12 bg-gray-100 rounded"})]}),(0,t.jsx)("div",{className:"h-4 bg-gray-100 rounded w-20"})]},e))}):r&&(0,t.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{label:"Total Posts",value:r.total_posts,sub:"".concat(r.posts_last_30d," last 30d"),iconBg:"bg-blue-100",iconColor:"text-[#0A66C2]",icon:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})},{label:"Published",value:r.published,sub:"".concat(r.published_last_30d," last 30d"),iconBg:"bg-green-100",iconColor:"text-green-600",icon:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})},{label:"Scheduled",value:r.scheduled,sub:null,iconBg:"bg-purple-100",iconColor:"text-purple-600",icon:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})})},{label:"Success Rate",value:"".concat(r.success_rate,"%"),sub:null,iconBg:"bg-indigo-100",iconColor:"text-indigo-600",icon:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"})})}].map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-2",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-full ".concat(e.iconBg," ").concat(e.iconColor," flex items-center justify-center shrink-0"),children:e.icon}),(0,t.jsx)("span",{className:"text-2xl font-bold text-[#0A66C2]",children:e.value})]}),(0,t.jsx)("p",{className:"text-sm font-semibold text-gray-900",children:e.label}),e.sub&&(0,t.jsx)("p",{className:"text-xs text-gray-400 mt-0.5",children:e.sub})]},e.label))}),(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 border-l-4 border-[#0A66C2] flex items-start gap-3",children:[(0,t.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-50 flex items-center justify-center shrink-0 mt-0.5",children:(0,t.jsx)("svg",{className:"w-4 h-4 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-semibold text-gray-900",children:"LinkedIn Engagement Data (Likes, Comments, Views)"}),(0,t.jsx)("p",{className:"text-xs text-gray-600 mt-0.5",children:"Abhi sirf tumhari post activity track ho rahi hai. LinkedIn Analytics API integration Phase 4 mein ayega jisme actual likes, comments, aur views bhi dikhenge."})]})]}),(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5 space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[(0,t.jsx)("h2",{className:"font-semibold text-gray-900 text-base",children:"Posting Activity"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,t.jsx)("div",{className:"flex items-center gap-1",children:d.map(a=>(0,t.jsx)("button",{onClick:()=>s(a.value),className:"text-xs font-semibold rounded-full px-3 py-1 transition-colors ".concat(e===a.value?"bg-[#0A66C2] text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"),children:a.label},a.value))}),(0,t.jsx)("div",{className:"flex items-center gap-1",children:o.map(e=>(0,t.jsx)("button",{onClick:()=>n(e.value),className:"text-xs font-semibold rounded-full px-3 py-1 transition-colors ".concat(a===e.value?"bg-[#0A66C2] text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"),children:e.label},e.value))})]})]}),v?(0,t.jsx)("div",{className:"h-48 flex items-center justify-center",children:(0,t.jsx)("span",{className:"w-8 h-8 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"})}):(0,t.jsx)(x,{data:u})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-5",children:[(0,t.jsxs)("div",{className:"lg:col-span-2 space-y-4",children:[(0,t.jsx)("h2",{className:"font-semibold text-gray-900 text-base",children:"Patterns & Insights"}),v?(0,t.jsx)("div",{className:"space-y-3",children:[1,2,3].map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 animate-pulse",children:[(0,t.jsx)("div",{className:"h-4 bg-gray-100 rounded w-full mb-2"}),(0,t.jsx)("div",{className:"h-4 bg-gray-100 rounded w-3/4"})]},e))}):0===p.length?(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-8 text-center",children:[(0,t.jsx)("div",{className:"w-12 h-12 rounded-full bg-gray-100 flex items-center justify-center mx-auto mb-3",children:(0,t.jsx)("svg",{className:"w-6 h-6 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})}),(0,t.jsx)("p",{className:"text-gray-600 text-sm",children:"Abhi koi posts nahi hain. Posts banao aur yahan patterns dikhenge."}),(0,t.jsx)("a",{href:"/dashboard/content/create",className:"mt-3 inline-block text-sm text-[#0A66C2] font-semibold hover:text-[#004182]",children:"Pehla Post Banao"})]}):(0,t.jsx)("div",{className:"space-y-3",children:p.map(e=>(0,t.jsx)(h,{insight:e},e.id))})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("h2",{className:"font-semibold text-gray-900 text-base",children:"AI Tips"}),v?(0,t.jsx)("div",{className:"space-y-3",children:[1,2,3].map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 animate-pulse",children:[(0,t.jsx)("div",{className:"h-4 bg-gray-100 rounded w-full mb-2"}),(0,t.jsx)("div",{className:"h-4 bg-gray-100 rounded w-2/3 mb-3"}),(0,t.jsx)("div",{className:"h-1.5 bg-gray-100 rounded w-full"})]},e))}):(0,t.jsxs)("div",{className:"space-y-3",children:[j.map(e=>(0,t.jsx)(m,{lesson:e},e.id)),0===j.length&&(0,t.jsx)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6 text-center",children:(0,t.jsx)("p",{className:"text-sm text-gray-400",children:"Tips load nahi hue"})})]})]})]})]})})}}},function(e){e.O(0,[971,117,744],function(){return e(e.s=16596)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js new file mode 100644 index 0000000000000000000000000000000000000000..a8af615c00bff6297bb0bd9884c3df9e963c1a8e --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/layout-75800e9b6ee6afd2.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[663],{96121:function(e,t,n){Promise.resolve().then(n.bind(n,58328))},39763:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(2265),s={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),i=(e,t)=>{let n=(0,r.forwardRef)((n,i)=>{let{color:o="currentColor",size:l=24,strokeWidth:c=2,absoluteStrokeWidth:d,className:u="",children:h,...f}=n;return(0,r.createElement)("svg",{ref:i,...s,width:l,height:l,stroke:o,strokeWidth:d?24*Number(c)/Number(l):c,className:["lucide","lucide-".concat(a(e)),u].join(" "),...f},[...t.map(e=>{let[t,n]=e;return(0,r.createElement)(t,n)}),...Array.isArray(h)?h:[h]])});return n.displayName="".concat(e),n}},27648:function(e,t,n){"use strict";n.d(t,{default:function(){return s.a}});var r=n(72972),s=n.n(r)},99376:function(e,t,n){"use strict";var r=n(35475);n.o(r,"usePathname")&&n.d(t,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(t,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(t,{useSearchParams:function(){return r.useSearchParams}})},58328:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return m}});var r=n(57437),s=n(50828),a=n(99376),i=n(68123),o=n(12381),l=n(18752);let c=(0,n(39763).Z)("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);function d(e){let{variant:t="ghost",className:n}=e;(0,a.useRouter)();let{toast:s}=(0,l.pm)(),d=async()=>{try{await (0,i.w7)(),s({title:"Success",description:"Logged out successfully"}),window.location.href="/auth/login"}catch(e){s({title:"Error",description:e.message||"Failed to logout",variant:"destructive"})}};return(0,r.jsxs)(o.z,{variant:t,onClick:d,className:n,children:[(0,r.jsx)(c,{className:"mr-2 h-4 w-4"}),"Logout"]})}var u=n(27648),h=n(2265);let f=[{href:"/dashboard",label:"Dashboard",exact:!0,icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"})})},{href:"/dashboard/content/create",label:"Create Post",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4v16m8-8H4"})})},{href:"/dashboard/post-history",label:"Post History",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})})},{href:"/dashboard/insights",label:"Insights",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})})},{href:"/dashboard/connected-accounts",label:"Accounts",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"})})}];function m(e){var t;let{children:n}=e,{user:i,isLoading:o,isAuthenticated:l,isAdmin:c}=(0,s.a)(),m=(0,a.useRouter)(),x=(0,a.usePathname)(),[p,v]=(0,h.useState)(!1);if((0,h.useEffect)(()=>{o||l||(window.location.href="/auth/login")},[o,l,m]),o)return(0,r.jsx)("div",{className:"min-h-screen bg-[#F3F2EF] flex items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,r.jsx)("div",{className:"w-10 h-10 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),(0,r.jsx)("span",{className:"text-gray-500 text-sm font-sans",children:"Loading..."})]})});if(!l)return(0,r.jsx)("div",{className:"min-h-screen bg-[#F3F2EF] flex items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,r.jsx)("div",{className:"w-10 h-10 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"}),(0,r.jsx)("span",{className:"text-gray-500 text-sm font-sans",children:"Redirecting..."})]})});let g=(e,t)=>t?x===e:x.startsWith(e),b=((null==i?void 0:i.name)||(null==i?void 0:i.email)||"U").split(" ").map(e=>e[0]).slice(0,2).join("").toUpperCase();return(0,r.jsxs)("div",{className:"min-h-screen bg-[#F3F2EF] font-sans",children:[(0,r.jsx)("header",{className:"sticky top-0 z-50 bg-white shadow-[0_0_0_1px_rgba(0,0,0,0.08)] h-14 flex items-center px-4",children:(0,r.jsxs)("div",{className:"max-w-7xl mx-auto w-full flex items-center justify-between gap-4",children:[(0,r.jsxs)(u.default,{href:"/dashboard",className:"flex items-center gap-2 shrink-0",children:[(0,r.jsx)("div",{className:"w-8 h-8 rounded-full bg-[#0A66C2] flex items-center justify-center",children:(0,r.jsx)("svg",{className:"w-4 h-4 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,r.jsx)("span",{className:"font-semibold text-gray-900 text-sm tracking-tight",children:"PostAI"})]}),(0,r.jsxs)("nav",{className:"hidden md:flex items-center gap-1",children:[f.map(e=>{let t=g(e.href,e.exact);return(0,r.jsxs)(u.default,{href:e.href,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm font-semibold transition-all duration-150 ".concat(t?"bg-[#0A66C2] text-white":"text-gray-500 hover:bg-gray-100 hover:text-gray-900"),children:[e.icon,e.label]},e.href)}),c&&(0,r.jsxs)(u.default,{href:"/admin",className:"flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm font-semibold text-red-500 hover:bg-red-50 transition-all",children:[(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"})}),"Admin"]})]}),(0,r.jsxs)("div",{className:"hidden md:flex items-center gap-3 shrink-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("div",{className:"w-8 h-8 rounded-full bg-[#0A66C2] flex items-center justify-center",children:(0,r.jsx)("span",{className:"text-white text-xs font-bold",children:b})}),(0,r.jsx)("span",{className:"text-sm font-semibold text-gray-900 max-w-[120px] truncate",children:(null==i?void 0:i.name)||(null==i?void 0:null===(t=i.email)||void 0===t?void 0:t.split("@")[0])||"User"})]}),(0,r.jsx)(d,{variant:"outline"})]}),(0,r.jsx)("button",{className:"md:hidden p-2 rounded-lg text-gray-600 hover:bg-gray-100 transition-colors",onClick:()=>v(!0),"aria-label":"Open menu",children:(0,r.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})})]})}),p&&(0,r.jsx)("div",{className:"fixed inset-0 z-50 bg-black/40 md:hidden",onClick:()=>v(!1)}),(0,r.jsxs)("div",{className:"fixed bottom-0 left-0 right-0 z-50 bg-white rounded-t-2xl shadow-2xl md:hidden transition-transform duration-300 ".concat(p?"translate-y-0":"translate-y-full"),children:[(0,r.jsx)("div",{className:"flex justify-center pt-3 pb-1",children:(0,r.jsx)("div",{className:"w-10 h-1 rounded-full bg-gray-300"})}),(0,r.jsxs)("div",{className:"px-4 py-2 border-b border-gray-100 flex items-center gap-2 mb-2",children:[(0,r.jsx)("div",{className:"w-8 h-8 rounded-full bg-[#0A66C2] flex items-center justify-center",children:(0,r.jsx)("span",{className:"text-white text-xs font-bold",children:b})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-semibold text-gray-900",children:(null==i?void 0:i.name)||"User"}),(0,r.jsx)("p",{className:"text-xs text-gray-500",children:null==i?void 0:i.email})]})]}),(0,r.jsxs)("nav",{className:"px-4 pb-4 space-y-1",children:[f.map(e=>{let t=g(e.href,e.exact);return(0,r.jsxs)(u.default,{href:e.href,onClick:()=>v(!1),className:"flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-semibold transition-all ".concat(t?"bg-[#0A66C2] text-white":"text-gray-600 hover:bg-gray-100"),children:[e.icon,e.label]},e.href)}),(0,r.jsx)("div",{className:"pt-2 border-t border-gray-100 mt-2",children:(0,r.jsx)(d,{variant:"outline"})})]})]}),(0,r.jsx)("main",{className:"bg-[#F3F2EF] min-h-screen",children:n})]})}},92509:function(e,t,n){"use strict";n.d(t,{Ho:function(){return o},aC:function(){return l}});var r=n(57437),s=n(2265),a=n(68123);let i=(0,s.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function o(e){let{children:t}=e,[n,o]=(0,s.useState)(null),[l,c]=(0,s.useState)(null),[d,u]=(0,s.useState)(!0),h=async()=>{try{let e=await (0,a.Gg)();e?(o(e.user),c(e.session)):(o(null),c(null))}catch(e){o(null),c(null)}finally{u(!1)}};return(0,s.useEffect)(()=>{h()},[]),(0,r.jsx)(i.Provider,{value:{user:n,session:l,loading:d,refetch:h},children:t})}function l(){return(0,s.useContext)(i)}},12381:function(e,t,n){"use strict";n.d(t,{z:function(){return c}});var r=n(57437),s=n(2265),a=n(37053),i=n(90535),o=n(93448);let l=(0,i.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),c=s.forwardRef((e,t)=>{let{className:n,variant:s,size:i,asChild:c=!1,...d}=e,u=c?a.g7:"button";return(0,r.jsx)(u,{className:(0,o.cn)(l({variant:s,size:i,className:n})),ref:t,...d})});c.displayName="Button"},18752:function(e,t,n){"use strict";n.d(t,{pm:function(){return h}});var r=n(2265);let s=0,a=new Map,i=e=>{if(a.has(e))return;let t=setTimeout(()=>{a.delete(e),d({type:"REMOVE_TOAST",toastId:e})},1e6);a.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:n}=t;return n?i(n):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===n||void 0===n?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],c={toasts:[]};function d(e){c=o(c,e),l.forEach(e=>{e(c)})}function u(e){let{...t}=e,n=(s=(s+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>d({type:"DISMISS_TOAST",toastId:n});return d({type:"ADD_TOAST",toast:{...t,id:n,open:!0,onOpenChange:e=>{e||r()}}}),{id:n,dismiss:r,update:e=>d({type:"UPDATE_TOAST",toast:{...e,id:n}})}}function h(){let[e,t]=r.useState(c);return r.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>d({type:"DISMISS_TOAST",toastId:e})}}},50828:function(e,t,n){"use strict";n.d(t,{a:function(){return s}});var r=n(92509);function s(){let{user:e,session:t,loading:n,refetch:s}=(0,r.aC)();return{user:e||null,session:t||null,isLoading:n,isAuthenticated:!!e,isSignedIn:!!e,isAdmin:(null==e?void 0:e.isAdmin)||!1,refreshSession:s}}},68123:function(e,t,n){"use strict";n.d(t,{Gg:function(){return a},w7:function(){return s}});let r={async signUp(e,t,n){let r=await fetch("".concat("","/api/v1/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:n})});if(!r.ok)throw Error((await r.json()).detail||"Registration failed");return r.json()},async signIn(e,t){let n=await fetch("".concat("","/api/v1/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!n.ok)throw Error((await n.json()).detail||"Login failed");return n.json()},async signOut(){if(!(await fetch("".concat("","/api/v1/auth/logout"),{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch("".concat("","/api/v1/auth/session"),{credentials:"include"});if(!e.ok)return null;return e.json()}catch(e){return null}}};r.signUp,r.signIn;let s=r.signOut,a=r.getSession},93448:function(e,t,n){"use strict";n.d(t,{cn:function(){return a}});var r=n(61994),s=n(53335);function a(){for(var e=arguments.length,t=Array(e),n=0;ne.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}function a(...e){return(0,r.useCallback)(s(...e),e)}},37053:function(e,t,n){"use strict";n.d(t,{g7:function(){return i}});var r=n(1119),s=n(2265),a=n(98575);let i=(0,s.forwardRef)((e,t)=>{let{children:n,...a}=e,i=s.Children.toArray(n),l=i.find(c);if(l){let e=l.props.children,n=i.map(t=>t!==l?t:s.Children.count(e)>1?s.Children.only(null):(0,s.isValidElement)(e)?e.props.children:null);return(0,s.createElement)(o,(0,r.Z)({},a,{ref:t}),(0,s.isValidElement)(e)?(0,s.cloneElement)(e,void 0,n):null)}return(0,s.createElement)(o,(0,r.Z)({},a,{ref:t}),n)});i.displayName="Slot";let o=(0,s.forwardRef)((e,t)=>{let{children:n,...r}=e;return(0,s.isValidElement)(n)?(0,s.cloneElement)(n,{...function(e,t){let n={...t};for(let r in t){let s=e[r],a=t[r];/^on[A-Z]/.test(r)?s&&a?n[r]=(...e)=>{a(...e),s(...e)}:s&&(n[r]=s):"style"===r?n[r]={...s,...a}:"className"===r&&(n[r]=[s,a].filter(Boolean).join(" "))}return{...e,...n}}(r,n.props),ref:t?(0,a.F)(t,n.ref):n.ref}):s.Children.count(n)>1?s.Children.only(null):null});o.displayName="SlotClone";let l=({children:e})=>(0,s.createElement)(s.Fragment,null,e);function c(e){return(0,s.isValidElement)(e)&&e.type===l}},90535:function(e,t,n){"use strict";n.d(t,{j:function(){return i}});var r=n(61994);let s=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,a=r.W,i=(e,t)=>n=>{var r;if((null==t?void 0:t.variants)==null)return a(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:i,defaultVariants:o}=t,l=Object.keys(i).map(e=>{let t=null==n?void 0:n[e],r=null==o?void 0:o[e];if(null===t)return null;let a=s(t)||s(r);return i[e][a]}),c=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e},{});return a(e,l,null==t?void 0:null===(r=t.compoundVariants)||void 0===r?void 0:r.reduce((e,t)=>{let{class:n,className:r,...s}=t;return Object.entries(s).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...o,...c}[t]):({...o,...c})[t]===n})?[...e,n,r]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}}},function(e){e.O(0,[972,137,971,117,744],function(){return e(e.s=96121)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js new file mode 100644 index 0000000000000000000000000000000000000000..ad27ba1b572759298bed56453b0c630b4a209443 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/page-7b363b3fbc3c7f99.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[702],{17:function(e,s,t){Promise.resolve().then(t.bind(t,50441))},27648:function(e,s,t){"use strict";t.d(s,{default:function(){return a.a}});var n=t(72972),a=t.n(n)},99376:function(e,s,t){"use strict";var n=t(35475);t.o(n,"usePathname")&&t.d(s,{usePathname:function(){return n.usePathname}}),t.o(n,"useRouter")&&t.d(s,{useRouter:function(){return n.useRouter}}),t.o(n,"useSearchParams")&&t.d(s,{useSearchParams:function(){return n.useSearchParams}})},50441:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return c}});var n=t(57437),a=t(99376),r=t(2265),l=t(50828),i=t(27648);let o=[{href:"/dashboard/content/create",label:"Create Post",desc:"Generate AI-powered LinkedIn content",iconBg:"bg-blue-100",iconColor:"text-[#0A66C2]",icon:(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4v16m8-8H4"})})},{href:"/dashboard/insights",label:"Insights",desc:"View performance analytics",iconBg:"bg-green-100",iconColor:"text-green-600",icon:(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})})},{href:"/dashboard/post-history",label:"Post History",desc:"Review all your past posts",iconBg:"bg-amber-100",iconColor:"text-amber-600",icon:(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})})},{href:"/dashboard/connected-accounts",label:"Accounts",desc:"Manage connected platforms",iconBg:"bg-purple-100",iconColor:"text-purple-600",icon:(0,n.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"})})}];function c(){var e,s,t,c,d;let u=(0,a.useRouter)(),{user:h,isSignedIn:x,isLoading:m}=(0,l.a)(),[f,g]=(0,r.useState)(null),[p,v]=(0,r.useState)(null),[b,j]=(0,r.useState)(!0);if((0,r.useEffect)(()=>{m||x||u.push("/login")},[m,x,u]),(0,r.useEffect)(()=>{x&&h&&Promise.all([fetch("/api/v1/profile",{credentials:"include"}).then(e=>e.ok?e.json():null),fetch("/api/v1/analytics/summary",{credentials:"include"}).then(e=>e.ok?e.json():null)]).then(e=>{let[s,t]=e;s&&g(s),t&&v(t)}).finally(()=>j(!1))},[x,h]),m||b)return(0,n.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-[#F3F2EF]",children:(0,n.jsx)("div",{className:"w-10 h-10 border-4 border-[#0A66C2] border-t-transparent rounded-full animate-spin"})});let w=null==f?void 0:f.connected_accounts.find(e=>"linkedin"===e.platform.toLowerCase()),y=!!w,N=((null==h?void 0:h.name)||(null==h?void 0:h.email)||"").split(" ")[0],k=((null==h?void 0:h.name)||(null==h?void 0:h.email)||"U").split(" ").map(e=>e[0]).slice(0,2).join("").toUpperCase();return(0,n.jsx)("div",{className:"bg-[#F3F2EF] min-h-screen py-6 px-4",children:(0,n.jsx)("div",{className:"max-w-6xl mx-auto",children:(0,n.jsxs)("div",{className:"flex flex-col lg:flex-row gap-6",children:[(0,n.jsxs)("div",{className:"flex-1 space-y-5",children:[(0,n.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-6",children:[(0,n.jsxs)("div",{className:"flex items-center gap-4 mb-4",children:[(0,n.jsx)("div",{className:"w-14 h-14 rounded-full bg-[#0A66C2] flex items-center justify-center shrink-0",children:(0,n.jsx)("span",{className:"text-white text-xl font-bold",children:k})}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("h1",{className:"font-semibold text-gray-900 text-lg leading-tight",children:["Welcome back, ",N]}),(0,n.jsx)("p",{className:"text-gray-600 text-sm",children:null==h?void 0:h.email}),(0,n.jsx)("span",{className:"inline-block mt-1 px-2.5 py-0.5 bg-blue-50 text-[#0A66C2] text-xs font-semibold rounded-full border border-blue-100",children:"Free Plan"})]})]}),(0,n.jsx)("div",{className:"border-t border-gray-100 pt-4",children:(0,n.jsx)("div",{className:"grid grid-cols-4 gap-3",children:[{label:"Total Posts",value:null!==(e=null==p?void 0:p.total_posts)&&void 0!==e?e:0},{label:"Published",value:null!==(s=null==p?void 0:p.published)&&void 0!==s?s:0},{label:"Scheduled",value:null!==(t=null==p?void 0:p.scheduled)&&void 0!==t?t:0},{label:"Success Rate",value:"".concat(null!==(c=null==p?void 0:p.success_rate)&&void 0!==c?c:0,"%")}].map(e=>(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)("p",{className:"text-2xl font-semibold text-[#0A66C2]",children:e.value}),(0,n.jsx)("p",{className:"text-xs text-gray-600 mt-0.5 leading-tight",children:e.label})]},e.label))})})]}),(0,n.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-6",children:[(0,n.jsx)("h2",{className:"font-semibold text-gray-900 mb-4",children:"Quick Actions"}),(0,n.jsx)("div",{className:"grid grid-cols-2 gap-3",children:o.map(e=>(0,n.jsxs)(i.default,{href:e.href,className:"group flex items-start gap-3 p-4 bg-white rounded-xl border border-gray-100 hover:border-gray-200 hover:shadow-sm transition-all duration-150 cursor-pointer",children:[(0,n.jsx)("div",{className:"w-9 h-9 rounded-lg ".concat(e.iconBg," ").concat(e.iconColor," flex items-center justify-center shrink-0"),children:e.icon}),(0,n.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,n.jsx)("p",{className:"font-semibold text-gray-900 text-sm",children:e.label}),(0,n.jsx)("p",{className:"text-xs text-gray-600 mt-0.5 leading-tight",children:e.desc})]}),(0,n.jsx)("svg",{className:"w-4 h-4 text-gray-400 group-hover:text-gray-600 shrink-0 mt-0.5 transition-colors",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]},e.href))})]}),(null!==(d=null==p?void 0:p.total_posts)&&void 0!==d?d:0)===0&&(0,n.jsx)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6 border-l-4 border-[#0A66C2]",children:(0,n.jsxs)("div",{className:"flex items-start gap-4",children:[(0,n.jsx)("div",{className:"w-10 h-10 rounded-full bg-blue-50 flex items-center justify-center shrink-0",children:(0,n.jsx)("svg",{className:"w-5 h-5 text-[#0A66C2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,n.jsxs)("div",{className:"flex-1",children:[(0,n.jsx)("h3",{className:"font-semibold text-gray-900 text-sm mb-1",children:"Create your first post"}),(0,n.jsx)("p",{className:"text-gray-600 text-sm mb-3",children:"Use AI to generate professional LinkedIn content, add images, and publish — all in one place."}),(0,n.jsxs)(i.default,{href:"/dashboard/content/create",className:"inline-flex items-center gap-2 bg-[#0A66C2] hover:bg-[#004182] text-white rounded-full px-5 py-2 text-sm font-semibold transition-colors",children:["Create Post",(0,n.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]})]})]})})]}),(0,n.jsxs)("div",{className:"lg:w-80 shrink-0 space-y-4",children:[(0,n.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-5",children:[(0,n.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,n.jsx)("div",{className:"w-10 h-10 rounded-lg bg-[#0A66C2] flex items-center justify-center",children:(0,n.jsx)("svg",{className:"w-5 h-5 text-white",viewBox:"0 0 24 24",fill:"currentColor",children:(0,n.jsx)("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"font-semibold text-gray-900 text-sm",children:"LinkedIn"}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,n.jsx)("span",{className:"w-2 h-2 rounded-full ".concat(y?"bg-green-500":"bg-gray-300")}),(0,n.jsx)("span",{className:"text-xs ".concat(y?"text-green-600":"text-gray-500"),children:y?"Connected":"Not connected"})]})]})]}),y&&(null==w?void 0:w.last_sync_at)&&(0,n.jsxs)("p",{className:"text-xs text-gray-500 mb-3",children:["Last sync: ",new Date(w.last_sync_at).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})]}),(0,n.jsx)(i.default,{href:"/dashboard/connected-accounts",className:"w-full flex items-center justify-center py-2 text-sm font-semibold rounded-full transition-colors ".concat(y?"border-2 border-[#0A66C2] text-[#0A66C2] hover:bg-blue-50":"bg-[#0A66C2] hover:bg-[#004182] text-white"),children:y?"Manage Connection":"Connect LinkedIn"})]}),(0,n.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5",children:[(0,n.jsxs)("h3",{className:"font-semibold text-gray-900 text-sm mb-3 flex items-center gap-2",children:[(0,n.jsx)("span",{children:"\uD83D\uDCA1"})," Pro Tips"]}),(0,n.jsx)("ul",{className:"space-y-3",children:["Post consistently — 3-5 times per week for optimal LinkedIn reach.","Include a question in your post to boost comments and engagement.","Use the scheduler to post during peak hours (8–10 AM or 5–6 PM)."].map((e,s)=>(0,n.jsxs)("li",{className:"flex items-start gap-2 text-xs text-gray-600",children:[(0,n.jsx)("span",{className:"w-4 h-4 rounded-full bg-blue-50 text-[#0A66C2] flex items-center justify-center text-xs font-bold shrink-0 mt-0.5",children:s+1}),e]},s))})]})]})]})})})}},92509:function(e,s,t){"use strict";t.d(s,{Ho:function(){return i},aC:function(){return o}});var n=t(57437),a=t(2265),r=t(68123);let l=(0,a.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i(e){let{children:s}=e,[t,i]=(0,a.useState)(null),[o,c]=(0,a.useState)(null),[d,u]=(0,a.useState)(!0),h=async()=>{try{let e=await (0,r.Gg)();e?(i(e.user),c(e.session)):(i(null),c(null))}catch(e){i(null),c(null)}finally{u(!1)}};return(0,a.useEffect)(()=>{h()},[]),(0,n.jsx)(l.Provider,{value:{user:t,session:o,loading:d,refetch:h},children:s})}function o(){return(0,a.useContext)(l)}},50828:function(e,s,t){"use strict";t.d(s,{a:function(){return a}});var n=t(92509);function a(){let{user:e,session:s,loading:t,refetch:a}=(0,n.aC)();return{user:e||null,session:s||null,isLoading:t,isAuthenticated:!!e,isSignedIn:!!e,isAdmin:(null==e?void 0:e.isAdmin)||!1,refreshSession:a}}},68123:function(e,s,t){"use strict";t.d(s,{Gg:function(){return r},w7:function(){return a}});let n={async signUp(e,s,t){let n=await fetch("".concat("","/api/v1/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:s,name:t})});if(!n.ok)throw Error((await n.json()).detail||"Registration failed");return n.json()},async signIn(e,s){let t=await fetch("".concat("","/api/v1/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:s})});if(!t.ok)throw Error((await t.json()).detail||"Login failed");return t.json()},async signOut(){if(!(await fetch("".concat("","/api/v1/auth/logout"),{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch("".concat("","/api/v1/auth/session"),{credentials:"include"});if(!e.ok)return null;return e.json()}catch(e){return null}}};n.signUp,n.signIn;let a=n.signOut,r=n.getSession}},function(e){e.O(0,[972,971,117,744],function(){return e(e.s=17)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/post-history/page-5815ebeb70f0d388.js b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/post-history/page-5815ebeb70f0d388.js new file mode 100644 index 0000000000000000000000000000000000000000..98dcc3c48a6ada6629bd63ec331a9c6ae52a78cf --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/post-history/page-5815ebeb70f0d388.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[485],{47957:function(e,s,t){Promise.resolve().then(t.bind(t,17224))},27648:function(e,s,t){"use strict";t.d(s,{default:function(){return l.a}});var r=t(72972),l=t.n(r)},17224:function(e,s,t){"use strict";t.d(s,{default:function(){return o}});var r=t(57437),l=t(2265),n=t(27648);let a=["all","draft","published","scheduled","failed"];function o(){let[e,s]=(0,l.useState)([]),[t,n]=(0,l.useState)(!0),[o,x]=(0,l.useState)(null),[h,u]=(0,l.useState)("all");(0,l.useEffect)(()=>{m()},[h]);let m=async()=>{try{n(!0);let e=new URLSearchParams({per_page:"50"}),t=await fetch("/api/v1/posts/history?".concat(e),{credentials:"include"});if(!t.ok)throw Error("Failed to fetch post history");let r=(await t.json()).posts||[],l="all"===h?r:r.filter(e=>e.status===h);s(l),x(null)}catch(e){x(e instanceof Error?e.message:"An error occurred")}finally{n(!1)}};return t?(0,r.jsx)(c,{}):o?(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-6",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,r.jsx)("div",{className:"w-8 h-8 rounded-full bg-red-100 flex items-center justify-center",children:(0,r.jsx)("svg",{className:"w-4 h-4 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),(0,r.jsx)("p",{className:"text-gray-900 font-semibold text-sm",children:"Failed to load posts"})]}),(0,r.jsx)("p",{className:"text-gray-600 text-sm mb-3",children:o}),(0,r.jsx)("button",{onClick:m,className:"bg-[#0A66C2] hover:bg-[#004182] text-white font-semibold text-sm rounded-full px-5 py-2 transition-colors",children:"Retry"})]}):(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-4 flex flex-wrap gap-2",children:a.map(e=>(0,r.jsx)("button",{onClick:()=>u(e),className:"px-4 py-1.5 text-sm font-semibold rounded-full transition-colors ".concat(h===e?"bg-[#0A66C2] text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"),children:e.charAt(0).toUpperCase()+e.slice(1)},e))}),0===e.length?(0,r.jsx)(d,{filter:h}):(0,r.jsx)("div",{className:"space-y-3",children:e.map(e=>(0,r.jsx)(i,{post:e},e.id))})]})}function i(e){var s;let{post:t}=e,l={published:{iconBg:"bg-green-100",iconColor:"text-green-600",badgeClasses:"bg-green-100 text-green-700 text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Published",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})},scheduled:{iconBg:"bg-blue-100",iconColor:"text-[#0A66C2]",badgeClasses:"bg-blue-100 text-[#0A66C2] text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Scheduled",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})})},failed:{iconBg:"bg-red-100",iconColor:"text-red-500",badgeClasses:"bg-red-100 text-red-600 text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Failed",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})},draft:{iconBg:"bg-gray-100",iconColor:"text-gray-500",badgeClasses:"bg-gray-100 text-gray-600 text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Draft",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})},pending:{iconBg:"bg-yellow-100",iconColor:"text-yellow-600",badgeClasses:"bg-yellow-100 text-yellow-700 text-xs font-semibold px-2.5 py-0.5 rounded-full",label:"Pending",icon:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})})}},n=null!==(s=l[t.status])&&void 0!==s?s:l.draft,a=e=>new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"});return(0,r.jsx)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.15)] transition-shadow p-5",children:(0,r.jsxs)("div",{className:"flex items-start gap-4",children:[(0,r.jsx)("div",{className:"w-10 h-10 rounded-full ".concat(n.iconBg," ").concat(n.iconColor," flex items-center justify-center shrink-0"),children:n.icon}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-3 mb-1",children:[(0,r.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 bg-blue-50 text-[#0A66C2] text-xs font-semibold px-2 py-0.5 rounded-full",children:[(0,r.jsx)("svg",{className:"w-3 h-3",viewBox:"0 0 24 24",fill:"currentColor",children:(0,r.jsx)("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})}),(t.platform||"linkedin").charAt(0).toUpperCase()+(t.platform||"linkedin").slice(1)]})}),(0,r.jsx)("span",{className:"shrink-0 ".concat(n.badgeClasses),children:n.label})]}),(0,r.jsx)("p",{className:"text-sm text-gray-700 line-clamp-2 mt-1 leading-relaxed",children:t.content_preview||"—"}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-2",children:[(0,r.jsx)("span",{className:"text-xs text-gray-400",children:a(t.created_at)}),t.published_at&&(0,r.jsxs)("span",{className:"text-xs text-gray-400 flex items-center gap-1",children:[(0,r.jsx)("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),"Published ",a(t.published_at)]}),t.error_message&&(0,r.jsxs)("span",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,r.jsx)("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01"})}),t.error_message]})]})]})]})})}function d(e){let{filter:s}=e;return(0,r.jsxs)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-12 text-center",children:[(0,r.jsx)("div",{className:"w-16 h-16 rounded-full bg-gray-100 flex items-center justify-center mx-auto mb-3",children:(0,r.jsx)("svg",{className:"w-8 h-8 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}),(0,r.jsx)("h3",{className:"font-semibold text-gray-900 mb-2",children:"all"===s?"No posts yet":"No ".concat(s," posts")}),(0,r.jsx)("p",{className:"text-gray-600 text-sm mb-5",children:"all"===s?"Create your first LinkedIn post to get started.":"You don't have any ".concat(s," posts at the moment.")}),(0,r.jsxs)(n.default,{href:"/dashboard/content/create",className:"inline-flex items-center gap-2 bg-[#0A66C2] hover:bg-[#004182] text-white rounded-full px-5 py-2 text-sm font-semibold transition-colors",children:[(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4v16m8-8H4"})}),"Create Post"]})]})}function c(){return(0,r.jsx)("div",{className:"space-y-3",children:[1,2,3].map(e=>(0,r.jsx)("div",{className:"bg-white rounded-xl shadow-[0_0_0_1px_rgba(0,0,0,0.08)] p-5",children:(0,r.jsxs)("div",{className:"animate-pulse flex items-start gap-4",children:[(0,r.jsx)("div",{className:"w-10 h-10 rounded-full bg-gray-100 shrink-0"}),(0,r.jsxs)("div",{className:"flex-1 space-y-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("div",{className:"h-5 w-20 bg-gray-100 rounded-full"}),(0,r.jsx)("div",{className:"h-4 w-28 bg-gray-100 rounded"})]}),(0,r.jsx)("div",{className:"h-4 bg-gray-100 rounded w-full"}),(0,r.jsx)("div",{className:"h-4 bg-gray-100 rounded w-3/4"})]})]})},e))})}}},function(e){e.O(0,[972,971,117,744],function(){return e(e.s=47957)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/video-library/page-01c2727a9c990a50.js b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/video-library/page-01c2727a9c990a50.js new file mode 100644 index 0000000000000000000000000000000000000000..c2b6b22f534ea57329b07d1d4ad8bfb551de01af --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/video-library/page-01c2727a9c990a50.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[628,626,363,966,476,256],{63521:function(){}},function(n){n.O(0,[971,117,744],function(){return n(n.s=63521)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/whatsapp-settings/page-333c26009cac887b.js b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/whatsapp-settings/page-333c26009cac887b.js new file mode 100644 index 0000000000000000000000000000000000000000..e0de9e10a85dab4a2184a02f532691f6c0f11ba3 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/dashboard/whatsapp-settings/page-333c26009cac887b.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[256,626,363,966,476,628],{63521:function(){}},function(n){n.O(0,[971,117,744],function(){return n(n.s=63521)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/layout-b73b0bd7fc73fea9.js b/phase-1-core-infra/frontend/.next/static/chunks/app/layout-b73b0bd7fc73fea9.js new file mode 100644 index 0000000000000000000000000000000000000000..cefa94c5375fc983673bfe400d422e64f04d7877 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/layout-b73b0bd7fc73fea9.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{22498:function(e,t,r){Promise.resolve().then(r.bind(r,83601))},83601:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return N}});var s=r(57437),n=r(14811),a=r.n(n);r(2778);var o=r(2265),i=r(42552),u=r(90535),d=r(32489),l=r(93448);let c=i.zt,f=o.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)(i.l_,{ref:t,className:(0,l.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",r),...n})});f.displayName=i.l_.displayName;let p=(0,u.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),m=o.forwardRef((e,t)=>{let{className:r,variant:n,...a}=e;return(0,s.jsx)(i.fC,{ref:t,className:(0,l.cn)(p({variant:n}),r),...a})});m.displayName=i.fC.displayName,o.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)(i.aU,{ref:t,className:(0,l.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",r),...n})}).displayName=i.aU.displayName;let g=o.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)(i.x8,{ref:t,className:(0,l.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",r),"toast-close":"",...n,children:(0,s.jsx)(d.Z,{className:"h-4 w-4"})})});g.displayName=i.x8.displayName;let h=o.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)(i.Dx,{ref:t,className:(0,l.cn)("text-sm font-semibold",r),...n})});h.displayName=i.Dx.displayName;let v=o.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)(i.dk,{ref:t,className:(0,l.cn)("text-sm opacity-90",r),...n})});v.displayName=i.dk.displayName;var x=r(18752);function y(){let{toasts:e}=(0,x.pm)();return(0,s.jsxs)(c,{children:[e.map(function(e){let{id:t,title:r,description:n,action:a,...o}=e;return(0,s.jsxs)(m,{...o,children:[(0,s.jsxs)("div",{className:"grid gap-1",children:[r&&(0,s.jsx)(h,{children:r}),n&&(0,s.jsx)(v,{children:n})]}),a,(0,s.jsx)(g,{})]},t)}),(0,s.jsx)(f,{})]})}var w=r(92509),S=r(43427),j=r(29827);function N(e){let{children:t}=e,[r]=(0,o.useState)(()=>new S.S({defaultOptions:{queries:{staleTime:6e4,retry:1}}}));return(0,s.jsx)("html",{lang:"en",children:(0,s.jsx)("body",{className:a().className,children:(0,s.jsx)(j.aH,{client:r,children:(0,s.jsxs)(w.Ho,{children:[t,(0,s.jsx)(y,{})]})})})})}},92509:function(e,t,r){"use strict";r.d(t,{Ho:function(){return i},aC:function(){return u}});var s=r(57437),n=r(2265),a=r(68123);let o=(0,n.createContext)({user:null,session:null,loading:!0,refetch:async()=>{}});function i(e){let{children:t}=e,[r,i]=(0,n.useState)(null),[u,d]=(0,n.useState)(null),[l,c]=(0,n.useState)(!0),f=async()=>{try{let e=await (0,a.Gg)();e?(i(e.user),d(e.session)):(i(null),d(null))}catch(e){i(null),d(null)}finally{c(!1)}};return(0,n.useEffect)(()=>{f()},[]),(0,s.jsx)(o.Provider,{value:{user:r,session:u,loading:l,refetch:f},children:t})}function u(){return(0,n.useContext)(o)}},18752:function(e,t,r){"use strict";r.d(t,{pm:function(){return f}});var s=r(2265);let n=0,a=new Map,o=e=>{if(a.has(e))return;let t=setTimeout(()=>{a.delete(e),l({type:"REMOVE_TOAST",toastId:e})},1e6);a.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?o(r):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},u=[],d={toasts:[]};function l(e){d=i(d,e),u.forEach(e=>{e(d)})}function c(e){let{...t}=e,r=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>l({type:"DISMISS_TOAST",toastId:r});return l({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||s()}}}),{id:r,dismiss:s,update:e=>l({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function f(){let[e,t]=s.useState(d);return s.useEffect(()=>(u.push(t),()=>{let e=u.indexOf(t);e>-1&&u.splice(e,1)}),[e]),{...e,toast:c,dismiss:e=>l({type:"DISMISS_TOAST",toastId:e})}}},68123:function(e,t,r){"use strict";r.d(t,{Gg:function(){return a},w7:function(){return n}});let s={async signUp(e,t,r){let s=await fetch("".concat("","/api/v1/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t,name:r})});if(!s.ok)throw Error((await s.json()).detail||"Registration failed");return s.json()},async signIn(e,t){let r=await fetch("".concat("","/api/v1/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:e,password:t})});if(!r.ok)throw Error((await r.json()).detail||"Login failed");return r.json()},async signOut(){if(!(await fetch("".concat("","/api/v1/auth/logout"),{method:"POST",credentials:"include"})).ok)throw Error("Logout failed")},async getSession(){try{let e=await fetch("".concat("","/api/v1/auth/session"),{credentials:"include"});if(!e.ok)return null;return e.json()}catch(e){return null}}};s.signUp,s.signIn;let n=s.signOut,a=s.getSession},93448:function(e,t,r){"use strict";r.d(t,{cn:function(){return a}});var s=r(61994),n=r(53335);function a(){for(var e=arguments.length,t=Array(e),r=0;r{let e=s.get("token");e?w(e):p("Invalid or missing reset token")},[s]);let j=e=>e.length<8?"Password must be at least 8 characters":/[A-Z]/.test(e)?/[a-z]/.test(e)?/\d/.test(e)?null:"Password must contain at least one number":"Password must contain at least one lowercase letter":"Password must contain at least one uppercase letter",g=async s=>{if(s.preventDefault(),p(""),!f){p("Invalid reset token");return}let r=j(t);if(r){p(r);return}if(t!==i){p("Passwords do not match");return}u(!0);try{let s=await fetch("".concat("http://127.0.0.1:8000","/api/v1/auth/password/reset"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:f,password:t})});if(!s.ok){let e=await s.json();throw Error(e.detail||"Failed to reset password")}x(!0),setTimeout(()=>e.push("/login"),3e3)}catch(e){console.error("Password reset error:",e),p(e instanceof Error?e.message:"Failed to reset password")}finally{u(!1)}};return f||m?m?(0,r.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8",children:(0,r.jsx)("div",{className:"max-w-md w-full space-y-8",children:(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("div",{className:"mx-auto h-12 w-12 text-green-500",children:(0,r.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"w-full h-full",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,r.jsx)("h2",{className:"mt-6 text-3xl font-bold text-gray-900",children:"Password Reset Successful"}),(0,r.jsx)("p",{className:"mt-2 text-sm text-gray-600",children:"Your password has been reset successfully."}),(0,r.jsx)("p",{className:"mt-4 text-sm text-gray-500",children:"Redirecting to login..."})]})})}):(0,r.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8",children:(0,r.jsxs)("div",{className:"max-w-md w-full space-y-8",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h2",{className:"mt-6 text-center text-3xl font-bold text-gray-900",children:"Set New Password"}),(0,r.jsx)("p",{className:"mt-2 text-center text-sm text-gray-600",children:"Enter your new password below."})]}),(0,r.jsxs)("form",{className:"mt-8 space-y-6",onSubmit:g,children:[h&&(0,r.jsx)("div",{className:"rounded-md bg-red-50 p-4",children:(0,r.jsx)("p",{className:"text-sm text-red-800",children:h})}),(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{htmlFor:"password",className:"sr-only",children:"New Password"}),(0,r.jsx)("input",{id:"password",name:"password",type:"password",autoComplete:"new-password",required:!0,value:t,onChange:e=>o(e.target.value),className:"appearance-none rounded-lg relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 focus:outline-none focus:ring-blue-500 focus:border-blue-500 focus:z-10 sm:text-sm",placeholder:"New password"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{htmlFor:"confirm-password",className:"sr-only",children:"Confirm Password"}),(0,r.jsx)("input",{id:"confirm-password",name:"confirm-password",type:"password",autoComplete:"new-password",required:!0,value:i,onChange:e=>c(e.target.value),className:"appearance-none rounded-lg relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 focus:outline-none focus:ring-blue-500 focus:border-blue-500 focus:z-10 sm:text-sm",placeholder:"Confirm password"})]})]}),(0,r.jsxs)("div",{className:"text-xs text-gray-500 space-y-1",children:[(0,r.jsx)("p",{children:"Password must contain:"}),(0,r.jsxs)("ul",{className:"list-disc list-inside",children:[(0,r.jsx)("li",{children:"At least 8 characters"}),(0,r.jsx)("li",{children:"One uppercase letter"}),(0,r.jsx)("li",{children:"One lowercase letter"}),(0,r.jsx)("li",{children:"One number"})]})]}),(0,r.jsx)("div",{children:(0,r.jsx)("button",{type:"submit",disabled:d,className:"group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed",children:d?"Resetting...":"Reset Password"})})]})]})}):(0,r.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8",children:(0,r.jsxs)("div",{className:"max-w-md w-full space-y-8",children:[(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("div",{className:"mx-auto h-12 w-12 text-red-500",children:(0,r.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"w-full h-full",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),(0,r.jsx)("h2",{className:"mt-6 text-3xl font-bold text-gray-900",children:"Invalid Reset Link"}),(0,r.jsx)("p",{className:"mt-2 text-sm text-gray-600",children:"This password reset link is invalid or has expired."})]}),(0,r.jsx)("div",{className:"text-center",children:(0,r.jsx)(l.default,{href:"/reset-password",className:"text-sm font-medium text-blue-600 hover:text-blue-500",children:"Request a new reset link"})})]})})}function i(){return(0,r.jsx)(a.Suspense,{fallback:(0,r.jsx)("div",{children:"Loading..."}),children:(0,r.jsx)(o,{})})}}},function(e){e.O(0,[972,971,117,744],function(){return e(e.s=40141)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/reset-password/page-2bd4d7372a6a3ff5.js b/phase-1-core-infra/frontend/.next/static/chunks/app/reset-password/page-2bd4d7372a6a3ff5.js new file mode 100644 index 0000000000000000000000000000000000000000..b843a995a8473e250e9cdf3f97f3eb1115024607 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/reset-password/page-2bd4d7372a6a3ff5.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[363,626,966,476,256,628],{63521:function(){}},function(n){n.O(0,[971,117,744],function(){return n(n.s=63521)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/signup/page-4f04e1f363d18921.js b/phase-1-core-infra/frontend/.next/static/chunks/app/signup/page-4f04e1f363d18921.js new file mode 100644 index 0000000000000000000000000000000000000000..4ed44052149b4f01217b85ec87d4891ba095b4c6 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/signup/page-4f04e1f363d18921.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[966,626,363,476,256,628],{63521:function(){}},function(n){n.O(0,[971,117,744],function(){return n(n.s=63521)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/app/verify-email/page-b95eba44bbec08c4.js b/phase-1-core-infra/frontend/.next/static/chunks/app/verify-email/page-b95eba44bbec08c4.js new file mode 100644 index 0000000000000000000000000000000000000000..c76f9473d371616ce20043de5238714b7e305b46 --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/app/verify-email/page-b95eba44bbec08c4.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[476,626,363,966,256,628],{63521:function(){}},function(n){n.O(0,[971,117,744],function(){return n(n.s=63521)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/phase-1-core-infra/frontend/.next/static/chunks/fd9d1056-e12ba778587e956e.js b/phase-1-core-infra/frontend/.next/static/chunks/fd9d1056-e12ba778587e956e.js new file mode 100644 index 0000000000000000000000000000000000000000..1c1c7aa93759688029368919143d866094219dde --- /dev/null +++ b/phase-1-core-infra/frontend/.next/static/chunks/fd9d1056-e12ba778587e956e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[971],{84417:function(e,t,n){var r,l=n(2265),a=n(71767),o={usingClientEntryPoint:!1,Events:null,Dispatcher:{current:null}};function i(e){var t="https://react.dev/errors/"+e;if(1p||(e.current=d[p],d[p]=null,p--)}function g(e,t){d[++p]=e.current,e.current=t}var y=Symbol.for("react.element"),v=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),k=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),S=Symbol.for("react.provider"),C=Symbol.for("react.consumer"),E=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),z=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),N=Symbol.for("react.memo"),_=Symbol.for("react.lazy"),L=Symbol.for("react.scope");Symbol.for("react.debug_trace_mode");var T=Symbol.for("react.offscreen"),F=Symbol.for("react.legacy_hidden"),M=Symbol.for("react.cache");Symbol.for("react.tracing_marker");var O=Symbol.iterator;function R(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=O&&e[O]||e["@@iterator"])?e:null}var D=m(null),A=m(null),I=m(null),U=m(null),B={$$typeof:E,_currentValue:null,_currentValue2:null,_threadCount:0,Provider:null,Consumer:null};function V(e,t){switch(g(I,t),g(A,e),g(D,null),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?s2(t):0;break;default:if(t=(e=8===e?t.parentNode:t).tagName,e=e.namespaceURI)t=s3(e=s2(e),t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}h(D),g(D,t)}function Q(){h(D),h(A),h(I)}function $(e){null!==e.memoizedState&&g(U,e);var t=D.current,n=s3(t,e.type);t!==n&&(g(A,e),g(D,n))}function j(e){A.current===e&&(h(D),h(A)),U.current===e&&(h(U),B._currentValue=null)}var W=a.unstable_scheduleCallback,H=a.unstable_cancelCallback,q=a.unstable_shouldYield,K=a.unstable_requestPaint,Y=a.unstable_now,X=a.unstable_getCurrentPriorityLevel,G=a.unstable_ImmediatePriority,Z=a.unstable_UserBlockingPriority,J=a.unstable_NormalPriority,ee=a.unstable_LowPriority,et=a.unstable_IdlePriority,en=a.log,er=a.unstable_setDisableYieldValue,el=null,ea=null;function eo(e){if("function"==typeof en&&er(e),ea&&"function"==typeof ea.setStrictMode)try{ea.setStrictMode(el,e)}catch(e){}}var ei=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(eu(e)/es|0)|0},eu=Math.log,es=Math.LN2,ec=128,ef=4194304;function ed(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194176&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ep(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,l=e.suspendedLanes;e=e.pingedLanes;var a=134217727&n;return 0!==a?0!=(n=a&~l)?r=ed(n):0!=(e&=a)&&(r=ed(e)):0!=(n&=~l)?r=ed(n):0!==e&&(r=ed(e)),0===r?0:0!==t&&t!==r&&0==(t&l)&&((l=r&-r)>=(e=t&-t)||32===l&&0!=(4194176&e))?t:r}function em(e,t){return e.errorRecoveryDisabledLanes&t?0:0!=(e=-536870913&e.pendingLanes)?e:536870912&e?536870912:0}function eh(){var e=ec;return 0==(4194176&(ec<<=1))&&(ec=128),e}function eg(){var e=ef;return 0==(62914560&(ef<<=1))&&(ef=4194304),e}function ey(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ev(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-ei(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|4194218&n}function eb(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ei(n),l=1<l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{eG=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?eX(n):""}function eJ(e){try{var t="";do t+=function(e){switch(e.tag){case 26:case 27:case 5:return eX(e.type);case 16:return eX("Lazy");case 13:return eX("Suspense");case 19:return eX("SuspenseList");case 0:case 2:case 15:return e=eZ(e.type,!1);case 11:return e=eZ(e.type.render,!1);case 1:return e=eZ(e.type,!0);default:return""}}(e),e=e.return;while(e);return t}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}var e0=Symbol.for("react.client.reference");function e1(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function e2(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function e3(e){e._valueTracker||(e._valueTracker=function(e){var t=e2(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var l=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function e4(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=e2(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function e6(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var e8=/[\n"\\]/g;function e5(e){return e.replace(e8,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function e7(e,t,n,r,l,a,o,i){e.name="",null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o?e.type=o:e.removeAttribute("type"),null!=t?"number"===o?(0===t&&""===e.value||e.value!=t)&&(e.value=""+e1(t)):e.value!==""+e1(t)&&(e.value=""+e1(t)):"submit"!==o&&"reset"!==o||e.removeAttribute("value"),null!=t?te(e,o,e1(t)):null!=n?te(e,o,e1(n)):null!=r&&e.removeAttribute("value"),null==l&&null!=a&&(e.defaultChecked=!!a),null!=l&&(e.checked=l&&"function"!=typeof l&&"symbol"!=typeof l),null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.name=""+e1(i):e.removeAttribute("name")}function e9(e,t,n,r,l,a,o,i){if(null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a&&(e.type=a),null!=t||null!=n){if(!("submit"!==a&&"reset"!==a||null!=t))return;n=null!=n?""+e1(n):"",t=null!=t?""+e1(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:l)&&"symbol"!=typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.name=o)}function te(e,t,n){"number"===t&&e6(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}var tt=Array.isArray;function tn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=iX.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}}var to=ta;"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction&&(to=function(e,t){return MSApp.execUnsafeLocalFunction(function(){return ta(e,t)})});var ti=to;function tu(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType){n.nodeValue=t;return}}e.textContent=t}var ts=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function tc(e,t,n){var r=0===t.indexOf("--");null==n||"boolean"==typeof n||""===n?r?e.setProperty(t,""):"float"===t?e.cssFloat="":e[t]="":r?e.setProperty(t,n):"number"!=typeof n||0===n||ts.has(t)?"float"===t?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function tf(e,t,n){if(null!=t&&"object"!=typeof t)throw Error(i(62));if(e=e.style,null!=n){for(var r in n)!n.hasOwnProperty(r)||null!=t&&t.hasOwnProperty(r)||(0===r.indexOf("--")?e.setProperty(r,""):"float"===r?e.cssFloat="":e[r]="");for(var l in t)r=t[l],t.hasOwnProperty(l)&&n[l]!==r&&tc(e,l,r)}else for(var a in t)t.hasOwnProperty(a)&&tc(e,a,t[a])}function td(e){if(-1===e.indexOf("-"))return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var tp=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),tm=null;function th(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var tg=null,ty=null;function tv(e){var t=eO(e);if(t&&(e=t.stateNode)){var n=eD(e);switch(e=t.stateNode,t.type){case"input":if(e7(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+e5(""+t)+'"][type="radio"]'),t=0;t>=o,l-=o,tj=1<<32-ei(t)+l|n<h?(g=f,f=null):g=f.sibling;var y=p(l,f,i[h],u);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&t(l,f),o=a(y,o,h),null===c?s=y:c.sibling=y,c=y,f=g}if(h===i.length)return n(l,f),tZ&&tH(l,h),s;if(null===f){for(;hg?(y=h,h=null):y=h.sibling;var b=p(l,h,v.value,s);if(null===b){null===h&&(h=y);break}e&&h&&null===b.alternate&&t(l,h),o=a(b,o,g),null===f?c=b:f.sibling=b,f=b,h=y}if(v.done)return n(l,h),tZ&&tH(l,g),c;if(null===h){for(;!v.done;g++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return tZ&&tH(l,g),c}for(h=r(l,h);!v.done;g++,v=u.next())null!==(v=m(h,l,g,v.value,s))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return e&&h.forEach(function(e){return t(l,e)}),tZ&&tH(l,g),c}(s,c,f,h);if("function"==typeof f.then)return u(s,c,nJ(f),h);if(f.$$typeof===E)return u(s,c,ai(s,f,h),h);n1(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f?(f=""+f,null!==c&&6===c.tag?(n(s,c.sibling),(c=l(c,f)).return=s):(n(s,c),(c=i_(f,s.mode,h)).return=s),o(s=c)):n(s,c)}(u,s,c,f),nG=null,u}}var n4=n3(!0),n6=n3(!1),n8=m(null),n5=m(0);function n7(e,t){g(n5,e=oz),g(n8,t),oz=e|t.baseLanes}function n9(){g(n5,oz),g(n8,n8.current)}function re(){oz=n5.current,h(n8),h(n5)}var rt=m(null),rn=null;function rr(e){var t=e.alternate;g(ri,1&ri.current),g(rt,e),null===rn&&(null===t||null!==n8.current?rn=e:null!==t.memoizedState&&(rn=e))}function rl(e){if(22===e.tag){if(g(ri,ri.current),g(rt,e),null===rn){var t=e.alternate;null!==t&&null!==t.memoizedState&&(rn=e)}}else ra(e)}function ra(){g(ri,ri.current),g(rt,rt.current)}function ro(e){h(rt),rn===e&&(rn=null),h(ri)}var ri=m(0);function ru(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var rs=s.ReactCurrentDispatcher,rc=s.ReactCurrentBatchConfig,rf=0,rd=null,rp=null,rm=null,rh=!1,rg=!1,ry=!1,rv=0,rb=0,rk=null,rw=0;function rS(){throw Error(i(321))}function rC(e,t){if(null===t)return!1;for(var n=0;na?a:8;var o=rc.transition,i={_callbacks:new Set};rc.transition=i,lf(e,!1,t,n);try{var u=l();if(null!==u&&"object"==typeof u&&"function"==typeof u.then){av(i,u);var s,c,f=(s=[],c={status:"pending",value:null,reason:null,then:function(e){s.push(e)}},u.then(function(){c.status="fulfilled",c.value=r;for(var e=0;e title"))),sG(l,n,r),l[eE]=e,eI(l),n=l;break e;case"link":var a=cE("link","href",t).get(n+(r.href||""));if(a){for(var o=0;o",e=e.removeChild(e.firstChild);break;case"select":e="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?e.multiple=!0:r.size&&(e.size=r.size);break;default:e="string"==typeof r.is?l.createElement(n,{is:r.is}):l.createElement(n)}}e[eE]=t,e[ex]=r;e:for(l=t.child;null!==l;){if(5===l.tag||6===l.tag)e.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===t)break;for(;null===l.sibling;){if(null===l.return||l.return===t)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}switch(t.stateNode=e,sG(e,n,r),n){case"button":case"input":case"select":case"textarea":e=!!r.autoFocus;break;case"img":e=!0;break;default:e=!1}e&&aC(t)}}return aP(t),t.flags&=-16777217,null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&aC(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=I.current,t9(t)){e:{if(e=t.stateNode,n=t.memoizedProps,e[eE]=t,(r=e.nodeValue!==n)&&null!==(l=tX))switch(l.tag){case 3:if(l=0!=(1&l.mode),sq(e.nodeValue,n,l),l){e=!1;break e}break;case 27:case 5:var a=0!=(1&l.mode);if(!0!==l.memoizedProps.suppressHydrationWarning&&sq(e.nodeValue,n,a),a){e=!1;break e}}e=r}e&&aC(t)}else(e=s1(e).createTextNode(r))[eE]=t,t.stateNode=e}return aP(t),null;case 13:if(ro(t),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(tZ&&null!==tG&&0!=(1&t.mode)&&0==(128&t.flags))ne(),nt(),t.flags|=384,l=!1;else if(l=t9(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(i(317));l[eE]=t}else nt(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;aP(t),l=!1}else null!==tJ&&(o0(tJ),tJ=null),l=!0;if(!l)return 256&t.flags?t:null}if(0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),ax(t,t.updateQueue),aP(t),null;case 4:return Q(),null===e&&sA(t.stateNode.containerInfo),aP(t),null;case 10:return an(t.type._context),aP(t),null;case 19:if(h(ri),null===(l=t.memoizedState))return aP(t),null;if(r=0!=(128&t.flags),null===(a=l.rendering)){if(r)az(l,!1);else{if(0!==oP||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=ru(e))){for(t.flags|=128,az(l,!1),e=a.updateQueue,t.updateQueue=e,ax(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)ix(n,e),n=n.sibling;return g(ri,1&ri.current|2),t.child}e=e.sibling}null!==l.tail&&Y()>oI&&(t.flags|=128,r=!0,az(l,!1),t.lanes=4194304)}}else{if(!r){if(null!==(e=ru(a))){if(t.flags|=128,r=!0,e=e.updateQueue,t.updateQueue=e,ax(t,e),az(l,!0),null===l.tail&&"hidden"===l.tailMode&&!a.alternate&&!tZ)return aP(t),null}else 2*Y()-l.renderingStartTime>oI&&536870912!==n&&(t.flags|=128,r=!0,az(l,!1),t.lanes=4194304)}l.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=l.last)?e.sibling=a:t.child=a,l.last=a)}if(null!==l.tail)return t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=Y(),t.sibling=null,e=ri.current,g(ri,r?1&e|2:1&e),t;return aP(t),null;case 22:case 23:return ro(t),re(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(536870912&n)&&0==(128&t.flags)&&(aP(t),6&t.subtreeFlags&&(t.flags|=8192)):aP(t),null!==(n=t.updateQueue)&&ax(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&h(ab),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),an(ad),aP(t),null;case 25:return null}throw Error(i(156,t.tag))}(t.alternate,t,oz);if(null!==n){ow=n;return}if(null!==(t=t.sibling)){ow=t;return}ow=t=e}while(null!==t);0===oP&&(oP=5)}function is(e,t,n,r,l){var a=ek,o=ov.transition;try{ov.transition=null,ek=2,function(e,t,n,r,l,a){do id();while(null!==oj);if(0!=(6&ob))throw Error(i(327));var o,u=e.finishedWork,s=e.finishedLanes;if(null!==u){if(e.finishedWork=null,e.finishedLanes=0,u===e.current)throw Error(i(177));e.callbackNode=null,e.callbackPriority=0,e.cancelPendingCommit=null;var c=u.lanes|u.childLanes;if(function(e,t,n){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.entangledLanes&=t,e.errorRecoveryDisabledLanes&=t,e.shellSuspendCounter=0,t=e.entanglements;for(var l=e.expirationTimes,a=e.hiddenUpdates;0r&&(l=r,r=a,a=l),l=si(n,a);var o=si(n,r);l&&o&&(1!==e.rangeCount||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&((t=t.createRange()).setStart(l.node,l.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;nn?32:n;n=ov.transition;var l=ek;try{if(ov.transition=null,ek=r,null===oj)var a=!1;else{r=oq,oq=null;var o=oj,u=oW;if(oj=null,oW=0,0!=(6&ob))throw Error(i(331));var s=ob;if(ob|=4,of(o.current),ol(o,o.current,u,r),ob=s,nb(!1),ea&&"function"==typeof ea.onPostCommitFiberRoot)try{ea.onPostCommitFiberRoot(el,o)}catch(e){}a=!0}return a}finally{ek=l,ov.transition=n,ic(e,t)}}return!1}function ip(e,t,n){t=lL(e,t=lP(n,t),2),null!==(e=nO(e,t,2))&&(o2(e,2),nv(e))}function im(e,t,n){if(3===e.tag)ip(e,e,n);else for(;null!==t;){if(3===t.tag){ip(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===oQ||!oQ.has(r))){e=lT(t,e=lP(n,e),2),null!==(t=nO(t,e,2))&&(o2(t,2),nv(t));break}}t=t.return}}function ih(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new om;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(ox=!0,l.add(n),e=ig.bind(null,e,t,n),t.then(e,e))}function ig(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,2&ob?oR=!0:4&ob&&(oD=!0),ik(),ok===e&&(oS&n)===n&&(4===oP||3===oP&&(62914560&oS)===oS&&300>Y()-oA?0==(2&ob)&&o5(e,0):oT|=n),nv(e)}function iy(e,t){0===t&&(t=0==(1&e.mode)?2:eg()),null!==(e=ns(e,t))&&(o2(e,t),nv(e))}function iv(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),iy(e,n)}function ib(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),iy(e,n)}function ik(){if(50=uH),uY=!1;function uX(e,t){switch(e){case"keyup":return -1!==uj.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function uG(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var uZ=!1,uJ={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function u0(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!uJ[e.type]:"textarea"===t}function u1(e,t,n,r){tb(r),0<(t=sV(t,"onChange")).length&&(n=new i3("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var u2=null,u3=null;function u4(e){sM(e,0)}function u6(e){if(e4(eR(e)))return e}function u8(e,t){if("change"===e)return t}var u5=!1;if(e$){if(e$){var u7="oninput"in document;if(!u7){var u9=document.createElement("div");u9.setAttribute("oninput","return;"),u7="function"==typeof u9.oninput}r=u7}else r=!1;u5=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=so(r)}}function su(){for(var e=window,t=e6();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e6(e.document)}return t}function ss(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var sc=e$&&"documentMode"in document&&11>=document.documentMode,sf=null,sd=null,sp=null,sm=!1;function sh(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;sm||null==sf||sf!==e6(r)||(r="selectionStart"in(r=sf)&&ss(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},sp&&nQ(sp,r)||(sp=r,0<(r=sV(sd,"onSelect")).length&&(t=new i3("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=sf)))}function sg(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var sy={animationend:sg("Animation","AnimationEnd"),animationiteration:sg("Animation","AnimationIteration"),animationstart:sg("Animation","AnimationStart"),transitionend:sg("Transition","TransitionEnd")},sv={},sb={};function sk(e){if(sv[e])return sv[e];if(!sy[e])return e;var t,n=sy[e];for(t in n)if(n.hasOwnProperty(t)&&t in sb)return sv[e]=n[t];return e}e$&&(sb=document.createElement("div").style,"AnimationEvent"in window||(delete sy.animationend.animation,delete sy.animationiteration.animation,delete sy.animationstart.animation),"TransitionEvent"in window||delete sy.transitionend.transition);var sw=sk("animationend"),sS=sk("animationiteration"),sC=sk("animationstart"),sE=sk("transitionend"),sx=new Map,sz="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll scrollEnd toggle touchMove waiting wheel".split(" ");function sP(e,t){sx.set(e,t),eV(t,[e])}for(var sN=0;sN title"):null)}var cz=null;function cP(){}function cN(){if(this.count--,0===this.count){if(this.stylesheets)cL(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var c_=null;function cL(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,c_=new Map,t.forEach(cT,e),c_=null,cN.call(e))}function cT(e,t){if(!(4&t.state.loading)){var n=c_.get(e);if(n)var r=n.get(null);else{n=new Map,c_.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a