From c4820d4c4a46574392bdce5053001d987532457f Mon Sep 17 00:00:00 2001 From: Andreas Jansson Date: Thu, 26 Feb 2026 10:59:16 +0100 Subject: [PATCH 1/3] Add reference docs, Cloudflare examples, and test runner MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Split SKILL.md into focused reference docs: PREDICTIONS.md, MODEL_SEARCH.md, COLLECTIONS.md, WORKFLOWS.md, DEPLOYMENTS.md, HTTP_API.md, CLOUDFLARE_WORKERS.md, CLOUDFLARE_WORKFLOWS.md - Add Cloudflare Workers examples: basic, async poll, concurrent, image editing via request.blob(), routing by path - Add Cloudflare Workflows example: keyframe → video → stitch pipeline - Vary models across examples (p-image, flux-2-klein, flux-schnell) - Add script/test_snippets.py: extracts and runs all code snippets, spins up wrangler dev for worker/workflow snippets, detects image inputs and POSTs test fixture - Add ruff check/format to script/lint - Add test-snippets job to CI (skipped on fork PRs) - Update AGENTS.md with new structure and testing docs --- .github/workflows/ci.yml | 26 +- .gitignore | 3 + AGENTS.md | 42 +- script/lint | 33 +- script/test_snippets.py | 495 +++++ skills/replicate/SKILL.md | 201 ++- .../references/CLOUDFLARE_WORKERS.md | 178 ++ .../references/CLOUDFLARE_WORKFLOWS.md | 111 ++ skills/replicate/references/COLLECTIONS.md | 115 ++ skills/replicate/references/DEPLOYMENTS.md | 202 +++ skills/replicate/references/HTTP_API.md | 195 ++ skills/replicate/references/MODEL_SEARCH.md | 137 ++ skills/replicate/references/PREDICTIONS.md | 316 ++++ skills/replicate/references/WORKFLOWS.md | 152 ++ test/fixtures/me.png | Bin 0 -> 214417 bytes test/package-lock.json | 1589 +++++++++++++++++ test/package.json | 9 + 17 files changed, 3739 insertions(+), 65 deletions(-) create mode 100644 script/test_snippets.py create mode 100644 skills/replicate/references/CLOUDFLARE_WORKERS.md create mode 100644 skills/replicate/references/CLOUDFLARE_WORKFLOWS.md create mode 100644 skills/replicate/references/COLLECTIONS.md create mode 100644 skills/replicate/references/DEPLOYMENTS.md create mode 100644 skills/replicate/references/HTTP_API.md create mode 100644 skills/replicate/references/MODEL_SEARCH.md create mode 100644 skills/replicate/references/PREDICTIONS.md create mode 100644 skills/replicate/references/WORKFLOWS.md create mode 100644 test/fixtures/me.png create mode 100644 test/package-lock.json create mode 100644 test/package.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d220407..7bfc918 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,9 +17,33 @@ jobs: - name: Run lint run: script/lint + test-snippets: + if: github.event_name == 'push' || !github.event.pull_request.head.repo.fork + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Set up uv + uses: astral-sh/setup-uv@v3 + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + - name: Install npm dependencies + run: npm install --silent + working-directory: test + - name: Run snippet tests + env: + REPLICATE_API_TOKEN: ${{ secrets.REPLICATE_API_TOKEN }} + run: python script/test_snippets.py + publish-clawhub: if: github.event_name == 'push' && github.ref == 'refs/heads/main' - needs: lint + needs: [lint, test-snippets] runs-on: ubuntu-latest steps: - name: Checkout diff --git a/.gitignore b/.gitignore index 7f63c8e..b8f718c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ *.swp *.swo *~ +node_modules/ +__pycache__/ +*.greger diff --git a/AGENTS.md b/AGENTS.md index 67f2277..81996ab 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,27 +2,49 @@ ## Purpose -This repo publishes a single Agent Skills document for Replicate. - -Keep it short and focused: a human- and agent-readable guide to discovering models, inspecting schemas, running predictions, and handling outputs. +This repo publishes Agent Skills for Replicate: a main skill document plus focused reference docs covering predictions, model search, collections, workflows, deployments, Cloudflare integration, and the HTTP API. ## Files that matter -- `skills/replicate/SKILL.md` is the canonical skill. -- `.mcp.json` points to the remote MCP server. -- `.claude-plugin/` contains marketplace metadata for Claude Code. +- `skills/replicate/SKILL.md` — the main skill (overview, common patterns, reference table). +- `skills/replicate/references/*.md` — detailed reference docs linked from SKILL.md. +- `script/lint` — validates the skill and lints Python with ruff. +- `script/test_snippets.py` — extracts and runs every code snippet from the markdown files. +- `test/fixtures/` — test assets (e.g. images for workers that accept file uploads). +- `.mcp.json` — points to the remote MCP server. +- `.claude-plugin/` — marketplace metadata for Claude Code. ## Editing guidelines -- Keep `SKILL.md` concise and practical. Prefer bullet lists over long prose. +- Keep `SKILL.md` concise. Detailed examples go in `references/`. +- Every code snippet must be runnable. The test runner executes them all. +- Snippets starting with `// worker.js` or `// workflow.js` are tested via `wrangler dev`. +- Snippets whose worker reads `request.blob()` or `request.arrayBuffer()` get a test image POSTed automatically. - Treat `https://api.replicate.com/openapi.json` as the source of truth. -- Keep mentions of deprecated or unofficial endpoints out of the skill. - Do not add language-specific client guidance unless explicitly requested. ## Linting -Lint before committing changes: - ``` script/lint ``` + +## Testing + +Runs all code snippets (bash, python, javascript) from every markdown file: + +``` +REPLICATE_API_TOKEN=... python script/test_snippets.py +``` + +Syntax check only (no API calls): + +``` +REPLICATE_API_TOKEN=... python script/test_snippets.py --syntax-only +``` + +Test a single reference file: + +``` +REPLICATE_API_TOKEN=... python script/test_snippets.py --include references/CLOUDFLARE_WORKERS.md +``` diff --git a/script/lint b/script/lint index 2347e47..906d2a1 100755 --- a/script/lint +++ b/script/lint @@ -1,10 +1,7 @@ #!/bin/sh -# script/lint: Validate Agent Skills definitions with skills-ref. -# skills-ref is the reference CLI for the Agent Skills spec (agentskills.io). -# It provides the `agentskills` executable with a `validate` subcommand. -# Uses uvx if available for a clean, isolated install of the validator. -# Falls back to a local Python module install if uv is not present. +# script/lint: Validate Agent Skills definitions with skills-ref, +# then lint and format Python scripts with ruff. set -e @@ -18,17 +15,21 @@ echo "==> Validating Agent Skills in $SKILL_PATH" if command -v uv >/dev/null 2>&1; then uvx --from skills-ref agentskills validate "$SKILL_PATH" - exit 0 -fi - -PYTHON_BIN="${PYTHON_BIN:-python3}" -if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then - if command -v python >/dev/null 2>&1; then - PYTHON_BIN=python - else - echo "python not found. Install Python 3 or uv to run skills-ref." >&2 - exit 1 +else + PYTHON_BIN="${PYTHON_BIN:-python3}" + if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then + if command -v python >/dev/null 2>&1; then + PYTHON_BIN=python + else + echo "python not found. Install Python 3 or uv to run skills-ref." >&2 + exit 1 + fi fi + "$PYTHON_BIN" -m skills_ref validate "$SKILL_PATH" fi -"$PYTHON_BIN" -m skills_ref validate "$SKILL_PATH" +echo "==> Linting Python (ruff check)" +uvx ruff check script/test_snippets.py + +echo "==> Formatting Python (ruff format --check)" +uvx ruff format --check script/test_snippets.py diff --git a/script/test_snippets.py b/script/test_snippets.py new file mode 100644 index 0000000..96293fc --- /dev/null +++ b/script/test_snippets.py @@ -0,0 +1,495 @@ +#!/usr/bin/env python +""" +Test all code snippets extracted from the skill markdown files. + +Parses fenced code blocks from every .md file under skills/replicate/, +then runs each one in parallel (8 workers). Reports pass/fail per snippet. + +Snippets starting with ``// worker.js`` or ``// workflow.js`` are run inside +a temporary Wrangler project (``wrangler dev``) and exercised via HTTP. + +Usage: + REPLICATE_API_TOKEN=... python script/test_snippets.py + REPLICATE_API_TOKEN=... python script/test_snippets.py --syntax-only + REPLICATE_API_TOKEN=... python script/test_snippets.py --include references/PREDICTIONS.md + REPLICATE_API_TOKEN=... python script/test_snippets.py --exclude references/DEPLOYMENTS.md +""" + +import argparse +import json +import os +import re +import shutil +import signal +import subprocess +import sys +import tempfile +import threading +import urllib.error +import urllib.request +from concurrent.futures import ThreadPoolExecutor, as_completed +from dataclasses import dataclass +from pathlib import Path + +ROOT_DIR = Path(__file__).resolve().parent.parent +SKILL_DIR = ROOT_DIR / "skills" / "replicate" +TEST_DIR = ROOT_DIR / "test" + +DEFAULT_EXCLUDE = ["references/DEPLOYMENTS.md"] + +PIPELINE_MARKERS: list[str] = [] + +NODE_MODULES_DIR = TEST_DIR / "node_modules" + +MAX_WORKERS = 8 +WRANGLER_CONCURRENCY = 1 + +_wrangler_semaphore = threading.Semaphore(WRANGLER_CONCURRENCY) + + +@dataclass +class Snippet: + file: str + index: int + lang: str + code: str + line: int + + @property + def label(self): + return f"{self.file}:{self.line} [{self.lang} #{self.index}]" + + def is_pipeline_only(self): + return any(m in self.code for m in PIPELINE_MARKERS) + + @property + def wrangler_kind(self): + first_line = self.code.split("\n", 1)[0].strip() + if first_line == "// worker.js": + return "worker" + if first_line == "// workflow.js": + return "workflow" + return None + + +def read_wrangler_port(proc: subprocess.Popen, timeout: int = 60) -> int: + """Read wrangler's stdout in a thread until we find 'Ready on http://...:PORT'.""" + result = {"port": None, "output": b""} + ready_event = threading.Event() + + def reader(): + while True: + line = proc.stdout.readline() + if not line: + break + result["output"] += line + m = re.search(rb"Ready on http://localhost:(\d+)", line) + if m: + result["port"] = int(m.group(1)) + ready_event.set() + break + + t = threading.Thread(target=reader, daemon=True) + t.start() + + if not ready_event.wait(timeout): + raise RuntimeError( + f"wrangler dev did not become ready within {timeout}s\n" + + result["output"].decode(errors="replace") + ) + return result["port"] + + +def extract_snippets(md_path: Path, relative: str) -> list[Snippet]: + text = md_path.read_text() + snippets = [] + pattern = re.compile(r"^```(\w+)\n(.*?)^```", re.MULTILINE | re.DOTALL) + for i, m in enumerate(pattern.finditer(text)): + lang = m.group(1) + code = m.group(2) + line = text[: m.start()].count("\n") + 1 + if lang in ("bash", "python", "javascript"): + snippets.append( + Snippet(file=relative, index=i, lang=lang, code=code, line=line) + ) + return snippets + + +# ---------- plain snippet runners ---------- + + +def check_python_syntax(snippet: Snippet): + compile(snippet.code, snippet.label, "exec") + + +def run_python(snippet: Snippet) -> subprocess.CompletedProcess: + with tempfile.NamedTemporaryFile(suffix=".py", mode="w", delete=False) as f: + f.write(snippet.code) + f.flush() + try: + return subprocess.run( + ["uvx", "--python", "3.12", "--with", "replicate", "python", f.name], + capture_output=True, + text=True, + timeout=120, + env={**os.environ}, + ) + finally: + os.unlink(f.name) + + +def check_js_syntax(snippet: Snippet): + with tempfile.NamedTemporaryFile(suffix=".mjs", mode="w", delete=False) as f: + f.write(snippet.code) + f.flush() + try: + result = subprocess.run( + ["node", "--check", f.name], + capture_output=True, + text=True, + timeout=10, + ) + if result.returncode != 0: + raise SyntaxError(result.stderr.strip()) + finally: + os.unlink(f.name) + + +def run_js(snippet: Snippet) -> subprocess.CompletedProcess: + code = snippet.code + wrapped = f"(async () => {{\n{code}\n}})().catch(e => {{ console.error(e); process.exit(1); }});\n" + + with tempfile.NamedTemporaryFile( + suffix=".cjs", mode="w", delete=False, dir=str(NODE_MODULES_DIR.parent) + ) as f: + f.write(wrapped) + f.flush() + try: + return subprocess.run( + ["node", f.name], + capture_output=True, + text=True, + timeout=120, + env={**os.environ}, + cwd=str(NODE_MODULES_DIR.parent), + ) + finally: + os.unlink(f.name) + + +def run_bash(snippet: Snippet) -> subprocess.CompletedProcess: + return subprocess.run( + ["bash", "-e", "-c", snippet.code], + capture_output=True, + text=True, + timeout=120, + env={**os.environ}, + ) + + +# ---------- wrangler runner ---------- + + +def extract_workflow_class_names(code: str) -> list[str]: + return re.findall(r"export\s+class\s+(\w+)\s+extends\s+WorkflowEntrypoint", code) + + +def scaffold_wrangler_project(tmpdir: Path, snippet: Snippet): + (tmpdir / "src").mkdir() + (tmpdir / "src" / "index.js").write_text(snippet.code) + + (tmpdir / "package.json").write_text( + json.dumps( + { + "name": "snippet-test", + "private": True, + "type": "module", + } + ) + ) + + wrangler_config = { + "name": "snippet-test", + "main": "src/index.js", + "compatibility_date": "2025-01-01", + "compatibility_flags": ["nodejs_compat"], + } + + if snippet.wrangler_kind == "workflow": + class_names = extract_workflow_class_names(snippet.code) + wrangler_config["workflows"] = [ + { + "name": f"wf-{cls.lower()}", + "binding": binding_name_for_class(cls, snippet.code), + "class_name": cls, + } + for cls in class_names + ] + + (tmpdir / "wrangler.jsonc").write_text(json.dumps(wrangler_config, indent=2)) + os.symlink(str(NODE_MODULES_DIR), str(tmpdir / "node_modules")) + + +def binding_name_for_class(class_name: str, code: str): + for m in re.finditer(r"env\.(\w+)\.\w+\(", code): + binding = m.group(1) + if binding != "REPLICATE_API_TOKEN" and binding.isupper(): + return binding + return re.sub(r"(?= 500: + raise RuntimeError(f"Worker returned HTTP {status}: {body[:300]}") + + +def exercise_workflow(port: int): + url = f"http://localhost:{port}/" + req = urllib.request.Request(url, method="GET") + resp = urllib.request.urlopen(req, timeout=120) + status = resp.status + if status != 200: + body = resp.read().decode() + raise RuntimeError(f"Workflow trigger returned HTTP {status}: {body[:300]}") + + +# ---------- setup ---------- + + +def ensure_node_modules(): + pkg_json = TEST_DIR / "package.json" + current = json.loads(pkg_json.read_text()) if pkg_json.exists() else {} + deps = current.get("dependencies", {}) + needs_install = not NODE_MODULES_DIR.exists() or "wrangler" not in deps + + if needs_install: + print("Installing npm packages (replicate + wrangler)...") + pkg_json.write_text( + json.dumps( + { + "name": "test", + "private": True, + "type": "commonjs", + "dependencies": { + "replicate": "^1.4.0", + "wrangler": "^4.0.0", + }, + }, + indent=2, + ) + + "\n" + ) + subprocess.run( + ["npm", "install", "--silent"], + cwd=str(TEST_DIR), + check=True, + capture_output=True, + ) + elif not NODE_MODULES_DIR.exists(): + print("Installing npm packages...") + subprocess.run( + ["npm", "install", "--silent"], + cwd=str(TEST_DIR), + check=True, + capture_output=True, + ) + + +# ---------- run a single snippet (called from thread pool) ---------- + + +def run_one(snippet: Snippet, syntax_only: bool) -> tuple[Snippet, str | None]: + """Return (snippet, None) on success or (snippet, error_message) on failure.""" + if snippet.lang == "python": + check_python_syntax(snippet) + elif snippet.lang == "javascript" and not snippet.wrangler_kind: + check_js_syntax(snippet) + + if syntax_only: + return snippet, None + + if snippet.wrangler_kind: + with _wrangler_semaphore: + run_wrangler_snippet(snippet) + return snippet, None + + if snippet.lang == "python": + result = run_python(snippet) + elif snippet.lang == "javascript": + result = run_js(snippet) + elif snippet.lang == "bash": + result = run_bash(snippet) + else: + return snippet, None + + if result.returncode != 0: + err = result.stderr.strip() or result.stdout.strip() + if len(err) > 500: + err = err[:500] + "..." + return snippet, f"exit {result.returncode}: {err}" + + return snippet, None + + +# ---------- main ---------- + + +def main(): + parser = argparse.ArgumentParser( + description="Test code snippets in skill markdown files" + ) + parser.add_argument( + "--syntax-only", action="store_true", help="Only check syntax, don't execute" + ) + parser.add_argument( + "--include", + action="append", + default=[], + help="Only test these files (relative to skill dir)", + ) + parser.add_argument( + "--exclude", + action="append", + default=[], + help="Skip these files (relative to skill dir)", + ) + args = parser.parse_args() + + if not os.environ.get("REPLICATE_API_TOKEN"): + print("REPLICATE_API_TOKEN not set", file=sys.stderr) + sys.exit(1) + + excludes = set(args.exclude or DEFAULT_EXCLUDE) + + md_files = sorted(SKILL_DIR.rglob("*.md")) + all_snippets = [] + for md_path in md_files: + relative = str(md_path.relative_to(SKILL_DIR)) + if args.include and relative not in args.include: + continue + if relative in excludes: + continue + all_snippets.extend(extract_snippets(md_path, relative)) + + if not all_snippets: + print("No snippets found!") + sys.exit(1) + + if not args.syntax_only: + ensure_node_modules() + + passed = [] + failed = [] + skipped = [] + + # Separate pipeline-only snippets (skipped) from runnable ones + runnable = [] + for snippet in all_snippets: + if snippet.is_pipeline_only(): + skipped.append((snippet, "pipeline-only")) + print(f" SKIP {snippet.label} (pipeline-only)") + else: + runnable.append(snippet) + + print_lock = threading.Lock() + + with ThreadPoolExecutor(max_workers=MAX_WORKERS) as pool: + future_to_snippet = { + pool.submit(run_one, snippet, args.syntax_only): snippet + for snippet in runnable + } + for future in as_completed(future_to_snippet): + snippet = future_to_snippet[future] + try: + _, err = future.result() + except Exception as e: + err = str(e) + + with print_lock: + if err is None: + passed.append(snippet) + suffix = " (syntax)" if args.syntax_only else "" + print(f" OK {snippet.label}{suffix}") + else: + failed.append((snippet, err)) + print(f" FAIL {snippet.label}") + for line in err.split("\n")[:5]: + print(f" {line}") + + print() + print( + f"Results: {len(passed)} passed, {len(failed)} failed, {len(skipped)} skipped" + ) + + if failed: + print("\nFailed snippets:") + for snippet, err in failed: + print(f" {snippet.label}") + for line in err.split("\n")[:3]: + print(f" {line}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/skills/replicate/SKILL.md b/skills/replicate/SKILL.md index 0960d34..ea415c5 100644 --- a/skills/replicate/SKILL.md +++ b/skills/replicate/SKILL.md @@ -1,56 +1,181 @@ --- name: replicate -description: Discover, compare, and run AI models using Replicate's API +description: > + Run AI models on Replicate. Use when building apps that generate images, video, speech, + music, or text, or when the user asks about Replicate models, predictions, or deployments. + Covers model search, schema inspection, running predictions, collections, deployments, + and multi-model pipelines. --- +# Replicate + +Replicate lets you run AI models with a cloud API. Thousands of models for image generation, video, speech, music, text, and more. + ## Docs -- Reference docs: https://replicate.com/docs/llms.txt -- HTTP API schema: https://api.replicate.com/openapi.json -- MCP server: https://mcp.replicate.com -- Set an `Accept: text/markdown` header when requesting docs pages to get a Markdown response. +- Reference: +- OpenAPI schema: +- MCP server: +- Per-model docs: `https://replicate.com/{owner}/{model}/llms.txt` +- Set `Accept: text/markdown` when requesting docs pages for Markdown responses. + +## Key concepts + +- **Models** are identified as `owner/name` (e.g. `black-forest-labs/flux-schnell`). +- **Official models** are always warm, have stable APIs, and predictable pricing. Use `owner/name`. +- **Community models** require a version: `owner/name:version_id`. They cold-boot and can be slow. +- **Predictions** are individual model runs: `starting` → `processing` → `succeeded`/`failed`/`canceled`. +- **Deployments** are always-on instances of community models you manage. +- **Collections** are curated groups of models (e.g. `text-to-image`, `official`). + +## Search for models + +Use the search API to find models by task. It returns models, collections, and docs. + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + "https://api.replicate.com/v1/search?query=image+generation" | jq '[.models[:3][] | {name: .model.name, owner: .model.owner}]' +``` + +```python +import replicate + +page = replicate.models.search("image generation") +for model in page.results[:3]: + print(f"{model.owner}/{model.name}: {model.description}") +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const page = await replicate.models.search("image generation"); +for (const model of page.results.slice(0, 3)) { + console.log(`${model.owner}/${model.name}: ${model.description}`); +} +``` + +For deeper guidance on picking the right model, see [MODEL_SEARCH.md](references/MODEL_SEARCH.md). + +## Get a model's schema + +Always fetch a model's schema before running it. Schemas change. + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/models/black-forest-labs/flux-schnell \ + | jq '.latest_version.openapi_schema.components.schemas.Input.properties | keys' +``` + +```python +import replicate + +model = replicate.models.get("black-forest-labs", "flux-schnell") +schema = model.latest_version.openapi_schema["components"]["schemas"]["Input"]["properties"] +for name, prop in schema.items(): + print(f" {name}: {prop.get('type', '?')} — {prop.get('description', '')}") +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const model = await replicate.models.get("black-forest-labs", "flux-schnell"); +const schema = + model.latest_version.openapi_schema.components.schemas.Input.properties; +for (const [name, prop] of Object.entries(schema)) { + console.log(` ${name}: ${prop.type || "?"} — ${prop.description || ""}`); +} +``` + +## Run a prediction + +```bash +curl -s -X POST \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + -H "Content-Type: application/json" \ + -H "Prefer: wait=60" \ + -d '{"version": "black-forest-labs/flux-schnell", "input": {"prompt": "a cat wearing a top hat", "num_outputs": 1}}' \ + https://api.replicate.com/v1/predictions | jq '{id, status, output}' +``` + +```python +import replicate + +output = replicate.run( + "black-forest-labs/flux-schnell", + input={"prompt": "a cat wearing a top hat", "num_outputs": 1}, +) +for item in output: + print(item.url) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const output = await replicate.run("black-forest-labs/flux-schnell", { + input: { prompt: "a cat wearing a top hat", num_outputs: 1 }, +}); +console.log(output); +``` + +For polling, webhooks, streaming, file I/O, and concurrency patterns, see [PREDICTIONS.md](references/PREDICTIONS.md). + +## Key rules + +- **Always fetch the schema first.** Even popular models change their interfaces. +- **Validate inputs against schema constraints** — check `minimum`, `maximum`, `enum` values. +- **Don't set optional inputs without reason.** Let the model's defaults work. +- **Prefer official models.** They're warm, stable, and predictably priced. +- **Use HTTPS URLs for file inputs.** Base64 works but is slower. +- **Run predictions concurrently.** Don't wait for one to finish before starting the next. +- **Output file URLs expire in 1 hour.** Back them up to R2/S3 if you need to keep them. -## Workflow +## Browse collections -Here's a common workflow for using Replicate's API to run a model: +Collections are curated model groups maintained by Replicate. The `official` collection has always-warm models. -1. **Choose the right model** - Search with the API or ask the user -2. **Get model metadata** - Fetch model input and output schema via API -3. **Create prediction** - POST to /v1/predictions -4. **Poll for results** - GET prediction until status is "succeeded" -5. **Return output** - Usually URLs to generated content +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/collections/official | jq '{name, slug, description}' +``` -## Choosing models +```python +import replicate -- Use the search and collections APIs to find and compare the best models. Do not list all the models via API, as it's basically a firehose. -- Collections are curated by Replicate staff, so they're vetted. -- Official models are in the "official" collection. -- Use official models because they: - - are always running - - have stable API interfaces - - have predictable output pricing - - are maintained by Replicate staff -- If you must use a community model, be aware that it can take a long time to boot. -- You can create always-on deployments of community models, but you pay for model uptime. +collection = replicate.collections.get("official") +print(f"{collection.name}: {collection.description}") +for model in collection.models[:3]: + print(f" {model.owner}/{model.name}") +``` -## Running models +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); -Models take time to run. There are three ways to run a model via API and get its output: +const collection = await replicate.collections.get("official"); +console.log(`${collection.name}: ${collection.description}`); +for (const model of collection.models.slice(0, 3)) { + console.log(` ${model.owner}/${model.name}`); +} +``` -1. Create a prediction, store its id from the response, and poll until completion. -2. Set a `Prefer: wait` header when creating a prediction for a blocking synchronous response. Only recommended for very fast models. -3. Set an HTTPS webhook URL when creating a prediction, and Replicate will POST to that URL when the prediction completes. +For the full collection list and API details, see [COLLECTIONS.md](references/COLLECTIONS.md). -Follow these guideliness when running models: +## Multi-model workflows -- Use the "POST /v1/predictions" endpoint, as it supports both official and community models. -- Every model has its own OpenAPI schema. Always fetch and check model schemas to make sure you're setting valid inputs. Even popular models change their schemas. -- Validate input parameters against schema constraints (minimum, maximum, enum values). Don't generate values that violate them. -- When unsure about a parameter value, use the model's default example or omit the optional parameter. -- Don't set optional inputs unless you have a reason to. Stick to the required inputs and let the model's defaults do the work. -- Use HTTPS URLs for file inputs whenever possible. You can also send base64-encoded files, but they should be avoided. -- Fire off multiple predictions concurrently. Don't wait for one to finish before starting the next. -- Output file URLs expire after 1 hour, so back them up if you need to keep them, using a service like Cloudflare R2. -- Webhooks are a good mechanism for receiving and storing prediction output. +Complex tasks often chain multiple models. Use parallel predictions for speed. See [WORKFLOWS.md](references/WORKFLOWS.md) for pipeline patterns including video generation, image editing, and audio translation. +## References +| Reference | Content | +|-----------|---------| +| [HTTP_API.md](references/HTTP_API.md) | Full HTTP API reference — endpoints, auth, pagination, errors | +| [MODEL_SEARCH.md](references/MODEL_SEARCH.md) | Finding models, reading schemas, picking the right model | +| [COLLECTIONS.md](references/COLLECTIONS.md) | Browsing curated model collections, full collection list | +| [PREDICTIONS.md](references/PREDICTIONS.md) | Running models — official vs community, polling, webhooks, files, concurrency | +| [DEPLOYMENTS.md](references/DEPLOYMENTS.md) | Custom always-on deployments for community models | +| [WORKFLOWS.md](references/WORKFLOWS.md) | Multi-model pipeline patterns — video, image editing, audio, chaining | +| [CLOUDFLARE_WORKERS.md](references/CLOUDFLARE_WORKERS.md) | Using Replicate from Cloudflare Workers | +| [CLOUDFLARE_WORKFLOWS.md](references/CLOUDFLARE_WORKFLOWS.md) | Multi-step Replicate pipelines with Cloudflare Workflows | diff --git a/skills/replicate/references/CLOUDFLARE_WORKERS.md b/skills/replicate/references/CLOUDFLARE_WORKERS.md new file mode 100644 index 0000000..8b70533 --- /dev/null +++ b/skills/replicate/references/CLOUDFLARE_WORKERS.md @@ -0,0 +1,178 @@ +# Replicate in Cloudflare Workers + +Run Replicate models from Cloudflare Workers using the `replicate` npm package. Workers provide sub-millisecond cold starts and a global edge network — pair them with Replicate for AI inference without managing GPU infrastructure. + +## Setup + +**Install dependencies:** + +``` +npm install replicate wrangler +``` + +**Set `nodejs_compat`** in `wrangler.jsonc` — the `replicate` package needs it: + +```jsonc +{ + "name": "my-replicate-worker", + "main": "src/index.js", + "compatibility_date": "2025-01-01", + "compatibility_flags": ["nodejs_compat"] +} +``` + +**Set your API token as a secret** (never put it in code or config): + +``` +npx wrangler secret put REPLICATE_API_TOKEN +``` + +For local dev, pass it as a var: `npx wrangler dev --var REPLICATE_API_TOKEN:r8_...` + +## Basic prediction + +A Worker that generates an image with Pruna P-Image and returns the output URL. + +```javascript +// worker.js +import Replicate from "replicate"; + +export default { + async fetch(request, env) { + const replicate = new Replicate({ auth: env.REPLICATE_API_TOKEN }); + const output = await replicate.run("prunaai/p-image", { + input: { prompt: "a red panda in a bamboo forest" }, + }); + return Response.json({ url: output.url() }); + }, +}; +``` + +## Async create + poll + +For long-running models, create the prediction and poll for completion. This avoids the 60-second sync timeout. + +```javascript +// worker.js +import Replicate from "replicate"; + +export default { + async fetch(request, env) { + const replicate = new Replicate({ auth: env.REPLICATE_API_TOKEN }); + + let prediction = await replicate.predictions.create({ + model: "black-forest-labs/flux-2-klein-4b", + input: { prompt: "a red panda in a bamboo forest", aspect_ratio: "16:9" }, + }); + + while (!["succeeded", "failed", "canceled"].includes(prediction.status)) { + await new Promise((r) => setTimeout(r, 1000)); + prediction = await replicate.predictions.get(prediction.id); + } + + return Response.json({ + id: prediction.id, + status: prediction.status, + output: prediction.output, + }); + }, +}; +``` + +## Concurrent predictions + +Fire off multiple predictions in parallel. Workers handle concurrent `fetch` calls well. + +```javascript +// worker.js +import Replicate from "replicate"; + +export default { + async fetch(request, env) { + const replicate = new Replicate({ auth: env.REPLICATE_API_TOKEN }); + + const prompts = [ + "a red panda eating bamboo", + "a blue parrot riding a bicycle", + "a green iguana playing chess", + ]; + + const outputs = await Promise.all( + prompts.map((prompt) => + replicate.run("black-forest-labs/flux-schnell", { + input: { prompt, num_outputs: 1 }, + }), + ), + ); + + const urls = outputs.map((output) => output[0].url); + return Response.json({ urls }); + }, +}; +``` + +## Image editing with user input + +Accept a raw image POST and transform it using Qwen Image Edit. The request body is the image bytes — pass them to the model as a `Blob`. + +```javascript +// worker.js +import Replicate from "replicate"; + +export default { + async fetch(request, env) { + const replicate = new Replicate({ auth: env.REPLICATE_API_TOKEN }); + const image = await request.blob(); + + const output = await replicate.run("qwen/qwen-image-edit-plus", { + input: { + image: [image], + prompt: "Turn this image into lego", + aspect_ratio: "match_input_image", + output_format: "webp", + output_quality: 95, + }, + }); + + return Response.json({ url: output[0].url() }); + }, +}; +``` + +## Routing by path + +A single Worker that handles different model tasks based on the URL path. + +```javascript +// worker.js +import Replicate from "replicate"; + +export default { + async fetch(request, env) { + const replicate = new Replicate({ auth: env.REPLICATE_API_TOKEN }); + const url = new URL(request.url); + + if (url.pathname === "/generate" && request.method === "POST") { + const body = await request.json(); + const output = await replicate.run("prunaai/p-image", { + input: { prompt: body.prompt }, + }); + return Response.json({ url: output.url() }); + } + + if (url.pathname === "/caption" && request.method === "POST") { + const body = await request.json(); + const output = await replicate.run( + "andreasjansson/blip-2:f677695e5e89f8b236e52ecd1d3f01beb44c34606419bcc19345e046d8f786f9", + { input: { image: body.image_url, question: "What is in this image?" } }, + ); + return Response.json({ caption: output }); + } + + return Response.json( + { error: "not found" }, + { status: 404 }, + ); + }, +}; +``` diff --git a/skills/replicate/references/CLOUDFLARE_WORKFLOWS.md b/skills/replicate/references/CLOUDFLARE_WORKFLOWS.md new file mode 100644 index 0000000..fb50aa0 --- /dev/null +++ b/skills/replicate/references/CLOUDFLARE_WORKFLOWS.md @@ -0,0 +1,111 @@ +# Replicate in Cloudflare Workflows + +Use Cloudflare Workflows to orchestrate multi-step Replicate pipelines with automatic retries and state persistence. Each Replicate API call goes in its own `step.do()` — if it fails, only that step retries, not the whole pipeline. + +## Setup + +**Install dependencies:** + +``` +npm install replicate wrangler +``` + +**`wrangler.jsonc`** — bind the workflow and enable `nodejs_compat`: + +```jsonc +{ + "name": "my-replicate-workflow", + "main": "src/index.js", + "compatibility_date": "2025-01-01", + "compatibility_flags": ["nodejs_compat"], + "workflows": [ + { "name": "replicate-pipeline", "binding": "PIPELINE", "class_name": "ReplicatePipeline" } + ] +} +``` + +**Set your API token as a secret:** + +``` +npx wrangler secret put REPLICATE_API_TOKEN +``` + +For local dev: `npx wrangler dev --var REPLICATE_API_TOKEN:r8_...` + +## Video pipeline: keyframes → interpolation → stitching + +Generate three keyframe images in parallel with Flux 2 Klein, feed consecutive pairs as start/end frames to Wan 2.2 I2V to create video segments in parallel, then stitch the segments into a single video. + +The Worker's `fetch` handler triggers the workflow. The workflow class contains the durable pipeline logic. + +```javascript +// workflow.js +import { WorkflowEntrypoint } from "cloudflare:workers"; +import Replicate from "replicate"; + +export class ReplicatePipeline extends WorkflowEntrypoint { + async run(event, step) { + const replicate = new Replicate({ auth: this.env.REPLICATE_API_TOKEN }); + const prompts = event.payload.prompts; + + // Step 1: Generate three keyframe images in parallel. + // Each step.do is independently retriable — if one keyframe fails, + // the others don't re-run. + const keyframes = await Promise.all( + prompts.map((prompt, i) => + step.do(`keyframe-${i}`, { retries: { limit: 3, delay: "5 seconds", backoff: "exponential" } }, async () => { + const output = await replicate.run("black-forest-labs/flux-2-klein-4b", { + input: { prompt, aspect_ratio: "16:9" }, + }); + return output.url(); + }), + ), + ); + + // Step 2: Generate video segments between consecutive keyframes in parallel. + // keyframes[0]→[1] and keyframes[1]→[2] run at the same time. + const segments = await Promise.all( + keyframes.slice(0, -1).map((startFrame, i) => + step.do(`video-segment-${i}`, { retries: { limit: 3, delay: "10 seconds", backoff: "exponential" }, timeout: "10 minutes" }, async () => { + const output = await replicate.run("wan-video/wan-2.2-i2v-fast", { + input: { + prompt: prompts[i], + image: startFrame, + last_image: keyframes[i + 1], + num_frames: 81, + }, + }); + return output.url(); + }), + ), + ); + + // Step 3: Stitch the video segments into a single continuous video. + const stitched = await step.do("stitch-videos", { retries: { limit: 3, delay: "10 seconds", backoff: "exponential" }, timeout: "5 minutes" }, async () => { + const output = await replicate.run( + "andreasjansson/video-stitcher:11365b52712fbf76932e83bfef43a7ccb1af898fbefcd3da00ecea25d2a40f5e", + { input: { videos: segments, overlap_seconds: 0.5 } }, + ); + return output.url(); + }); + + return { keyframes, segments, stitched }; + } +} + +export default { + async fetch(request, env) { + const instance = await env.PIPELINE.create({ + params: { + prompts: [ + "a serene mountain lake at sunrise, cinematic", + "the sun rising higher over the mountain lake, golden light", + "bright midday sun over the mountain lake, vivid colors", + ], + }, + }); + + return Response.json({ id: instance.id, status: "started" }); + }, +}; +``` diff --git a/skills/replicate/references/COLLECTIONS.md b/skills/replicate/references/COLLECTIONS.md new file mode 100644 index 0000000..580e807 --- /dev/null +++ b/skills/replicate/references/COLLECTIONS.md @@ -0,0 +1,115 @@ +# Collections + +Collections are curated groups of models maintained by Replicate staff. They're a good way to discover vetted models for specific tasks. + +## List all collections + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/collections | jq '[.results[] | {slug, name}]' +``` + +```python +import replicate + +page = replicate.collections.list() +for collection in page.results: + print(f"{collection.slug}: {collection.name} — {collection.description}") +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const page = await replicate.collections.list(); +for (const collection of page.results) { + console.log( + `${collection.slug}: ${collection.name} — ${collection.description}`, + ); +} +``` + +## Get a collection + +Returns the collection metadata and a list of its models: + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/collections/text-to-image | jq '{name, slug, description, model_count: (.models | length)}' +``` + +```python +import replicate + +collection = replicate.collections.get("text-to-image") +print(f"{collection.name}: {collection.description}") +for model in collection.models[:3]: + print(f" {model.owner}/{model.name}") +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const collection = await replicate.collections.get("text-to-image"); +console.log(`${collection.name}: ${collection.description}`); +for (const model of collection.models.slice(0, 3)) { + console.log(` ${model.owner}/${model.name}`); +} +``` + +The response includes `full_description` (Markdown) and a `models` array with full model objects. + +## The `official` collection + +The `official` collection contains models that are always warm, have stable APIs, and predictable per-run pricing. Always prefer official models when available. + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/collections/official | jq '{name, model_count: (.models | length)}' +``` + +## Available collections + +| Slug | Name | Description | +|------|------|-------------| +| `official` | Official AI models | Always available, stable, and predictably priced | +| `text-to-image` | Generate images | Generate images and photos | +| `text-to-video` | Generate videos | Generate videos | +| `image-to-video` | Generate videos from images | Generate videos from images | +| `video-editing` | Edit your videos | Edit your videos | +| `ai-enhance-videos` | Enhance videos | Enhance videos | +| `video-to-text` | Caption videos | Caption videos | +| `image-editing` | Edit any image | Edit any image | +| `super-resolution` | Upscale images with super resolution | Upscale images | +| `ai-image-restoration` | Restore images | Restore images | +| `remove-backgrounds` | Remove backgrounds | Remove backgrounds from images and videos | +| `sketch-to-image` | Turn sketches into images | Transform rough sketches into polished visuals | +| `ai-face-generator` | Generate images from a face | Generate images from a face | +| `face-swap` | Create realistic face swaps | Replace faces across images | +| `generate-anime` | Generate anime-style images and videos | Create anime-style content | +| `generate-emoji` | Generate emojis | Generate custom emojis from text or images | +| `control-net` | Control image generation | Control image generation | +| `language-models` | Large Language Models (LLMs) | Chat, generation, and NLP tasks | +| `vision-models` | Vision models | Image understanding, captioning, and detection | +| `text-to-speech` | Generate speech | Text-to-speech and voice cloning | +| `speech-to-text` | Transcribe speech to text | Transcribe speech to text | +| `ai-music-generation` | Generate music | Generate music | +| `sing-with-voices` | Create songs with voice cloning | Create songs with voice cloning | +| `lipsync` | Lipsync videos | Generate lipsync videos | +| `speaker-diarization` | Speaker diarization | Identify speakers from audio and video | +| `text-recognition-ocr` | OCR to extract text from images | Optical character recognition | +| `text-classification` | Classify text | Classify text by sentiment, topic, intent, or safety | +| `ai-detect-objects` | Object detection and segmentation | Detect and segment objects in images and video | +| `detect-nsfw-content` | Detect NSFW content | Detect NSFW content in images and text | +| `embedding-models` | Embedding models | Embedding models for search and analysis | +| `3d-models` | Create 3D content | Create 3D content | +| `utilities` | Media utilities | Auto-caption, watermark, frame extraction, and more | +| `flux` | FLUX family of models | FLUX image generation and editing models | +| `flux-fine-tunes` | Flux fine-tunes | Community-trained FLUX fine-tunes | +| `flux-kontext-fine-tunes` | Kontext fine-tunes | Custom Kontext image models | +| `qwen-image-fine-tunes` | Qwen-Image fine-tunes | Community-trained Qwen image fine-tunes | +| `wan-video` | WAN family of models | WAN image-to-video and text-to-video models | +| `try-for-free` | Try AI models for free | Free-tier models for video, image, upscaling, and restoration | + +The search API also returns matching collections alongside model results. diff --git a/skills/replicate/references/DEPLOYMENTS.md b/skills/replicate/references/DEPLOYMENTS.md new file mode 100644 index 0000000..b704c51 --- /dev/null +++ b/skills/replicate/references/DEPLOYMENTS.md @@ -0,0 +1,202 @@ +# Deployments + +A deployment is an always-on, private instance of a model version. You configure the hardware, minimum and maximum number of instances, and get a fixed API endpoint. You pay for the uptime of the instances (not per-prediction). + +Use deployments when: +- A community model cold-boots too slowly for your use case +- You need a private, stable endpoint for a specific model version +- You want custom scaling (e.g. always keep 2 workers warm) + +Official models are already always-warm — you don't need deployments for them. + +## Create a deployment + +```bash +curl -s -X POST \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "name": "my-deployment", + "model": "black-forest-labs/flux-dev", + "version": "5c7d5dc6dd8bf75c1acaa8565735e7986bc5b66206b55cca93cb72c9bf15ccaa", + "hardware": "gpu-a40-large", + "min_instances": 1, + "max_instances": 5 + }' \ + https://api.replicate.com/v1/deployments +``` + +```python +import replicate + +deployment = replicate.deployments.create( + name="my-deployment", + model="black-forest-labs/flux-dev", + version="5c7d5dc6dd8bf75c1acaa8565735e7986bc5b66206b55cca93cb72c9bf15ccaa", + hardware="gpu-a40-large", + min_instances=1, + max_instances=5, +) +print(deployment.name) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const deployment = await replicate.deployments.create({ + name: "my-deployment", + model: "black-forest-labs/flux-dev", + version: + "5c7d5dc6dd8bf75c1acaa8565735e7986bc5b66206b55cca93cb72c9bf15ccaa", + hardware: "gpu-a40-large", + min_instances: 1, + max_instances: 5, +}); +console.log(deployment.name); +``` + +## List deployments + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/deployments | jq '[.results[] | {name: .name}]' +``` + +```python +import replicate + +page = replicate.deployments.list() +for d in page.results: + print(d.name) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const page = await replicate.deployments.list(); +for (const d of page.results) { + console.log(d.name); +} +``` + +## Get a deployment + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/deployments/your-org/my-deployment | jq '{name}' +``` + +```python +import replicate + +deployment = replicate.deployments.get("your-org/my-deployment") +print(deployment.name) +print(deployment.current_release) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const deployment = await replicate.deployments.get("your-org/my-deployment"); +console.log(deployment.name); +console.log(deployment.current_release); +``` + +## Update a deployment + +```bash +curl -s -X PATCH \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{"min_instances": 2, "max_instances": 10}' \ + https://api.replicate.com/v1/deployments/your-org/my-deployment +``` + +```python +import replicate + +deployment = replicate.deployments.update( + "your-org", + "my-deployment", + min_instances=2, + max_instances=10, +) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const deployment = await replicate.deployments.update("your-org/my-deployment", { + min_instances: 2, + max_instances: 10, +}); +``` + +## Run a prediction against a deployment + +Use the deployments predictions endpoint instead of the regular predictions endpoint: + +```bash +curl -s -X POST \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + -H "Content-Type: application/json" \ + -H "Prefer: wait=60" \ + -d '{"input": {"prompt": "a red panda in a bamboo forest"}}' \ + https://api.replicate.com/v1/deployments/your-org/my-deployment/predictions +``` + +```python +import replicate + +deployment = replicate.deployments.get("your-org/my-deployment") +prediction = deployment.predictions.create( + input={"prompt": "a red panda in a bamboo forest"}, +) +print(prediction.id, prediction.status) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const prediction = await replicate.deployments.predictions.create( + "your-org", + "my-deployment", + { input: { prompt: "a red panda in a bamboo forest" } }, +); +console.log(prediction.id, prediction.status); +``` + +## Available hardware + +Get available hardware options from the hardware endpoint: + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/hardware | jq '[.[] | {name, sku}]' +``` + +## Delete a deployment + +```bash +curl -s -X DELETE \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/deployments/your-org/my-deployment +``` + +```python +import replicate + +replicate.deployments.delete("your-org", "my-deployment") +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +await replicate.deployments.delete("your-org/my-deployment"); +``` diff --git a/skills/replicate/references/HTTP_API.md b/skills/replicate/references/HTTP_API.md new file mode 100644 index 0000000..2aff0f0 --- /dev/null +++ b/skills/replicate/references/HTTP_API.md @@ -0,0 +1,195 @@ +# HTTP API Reference + +## Authentication + +All requests require a Bearer token in the `Authorization` header. + +``` +Authorization: Bearer r8_your_token_here +``` + +Get tokens at . + +## Base URL + +``` +https://api.replicate.com/v1 +``` + +## Endpoints + +### Search + +``` +GET /v1/search?query={query} +``` + +Returns matching models, collections, and docs. Each model result includes metadata like `tags`, `generated_description`, and `run_count`. The search API is in beta. + +### Collections + +``` +GET /v1/collections +GET /v1/collections/{collection_slug} +``` + +List all curated collections, or get one by slug with its models. + +### Models + +``` +GET /v1/models/{owner}/{name} +GET /v1/models/{owner}/{name}/versions +GET /v1/models/{owner}/{name}/versions/{version_id} +GET /v1/models/{owner}/{name}/readme +GET /v1/models/{owner}/{name}/examples +``` + +The model response includes `latest_version.openapi_schema` with full input/output schemas. + +### Predictions + +``` +POST /v1/predictions # Works for all models +POST /v1/models/{owner}/{name}/predictions # Official models only +POST /v1/deployments/{owner}/{name}/predictions # Deployments only +GET /v1/predictions/{id} # Poll for result +POST /v1/predictions/{id}/cancel # Cancel a running prediction +GET /v1/predictions # List your predictions +``` + +The unified `POST /v1/predictions` endpoint accepts these `version` formats: +- `owner/name` — official models (e.g. `black-forest-labs/flux-schnell`) +- `owner/name:version_id` — community models with pinned version +- `version_id` — raw 64-character version hash + +### Deployments + +``` +GET /v1/deployments +POST /v1/deployments +GET /v1/deployments/{owner}/{name} +PATCH /v1/deployments/{owner}/{name} +DELETE /v1/deployments/{owner}/{name} +POST /v1/deployments/{owner}/{name}/predictions +``` + +### Other + +``` +GET /v1/account # Current user info +GET /v1/hardware # Available hardware options +POST /v1/files # Upload a file +GET /v1/files/{id} # Get file metadata +DELETE /v1/files/{id} # Delete a file +``` + +## Request/response format + +### Creating a prediction + +Request: + +```json +{ + "version": "black-forest-labs/flux-schnell", + "input": { + "prompt": "a cat wearing a top hat" + }, + "webhook": "https://example.com/webhook", + "webhook_events_filter": ["completed"], + "lifetime": "5m" +} +``` + +Response: + +```json +{ + "id": "gm3qorzdhgbfurvjtvhg6dckhu", + "model": "black-forest-labs/flux-schnell", + "version": "...", + "input": {"prompt": "a cat wearing a top hat"}, + "output": null, + "error": null, + "logs": "", + "status": "starting", + "created_at": "2024-01-01T00:00:00.000Z", + "started_at": null, + "completed_at": null, + "metrics": {}, + "urls": { + "get": "https://api.replicate.com/v1/predictions/gm3qorzdhgbfurvjtvhg6dckhu", + "cancel": "https://api.replicate.com/v1/predictions/gm3qorzdhgbfurvjtvhg6dckhu/cancel", + "web": "https://replicate.com/p/gm3qorzdhgbfurvjtvhg6dckhu" + } +} +``` + +### Prediction statuses + +- `starting` — booting up (may take seconds for warm models, minutes for cold) +- `processing` — model is running +- `succeeded` — done, `output` is populated +- `failed` — error occurred, `error` is populated +- `canceled` — canceled by the user + +## Sync mode with `Prefer: wait` + +Set the `Prefer` header to hold the connection open until the prediction finishes: + +``` +Prefer: wait=60 +``` + +The value is seconds (1–60). If the model doesn't finish in time, the response returns the prediction in its current state. Poll `urls.get` to get the final result. + +The Python SDK uses sync mode by default with `replicate.run()` (60-second timeout). Pass `wait=False` to disable it. + +## Webhooks + +Set `webhook` to an HTTPS URL when creating a prediction. Replicate POSTs the full prediction object when it reaches a terminal state. + +Filter events with `webhook_events_filter`: `["start", "output", "logs", "completed"]`. + +Validate webhook signatures using the `Webhook-ID`, `Webhook-Timestamp`, and `Webhook-Signature` headers. Get your webhook secret from `GET /v1/webhooks/default/secret`. + +## Prediction lifetime (auto-cancel) + +Set `lifetime` to auto-cancel predictions that run too long: + +```json +{"lifetime": "5m"} +``` + +Accepts durations like `30s`, `5m`, `1h`, `1h30m45s`. Measured from creation time. + +## Streaming (SSE) + +Models that support streaming include a `stream` URL in the response. Connect to it as an SSE `EventSource` to receive incremental output. Language models typically support streaming. + +## Pagination + +List endpoints return paginated responses with `next`, `previous`, and `results` fields. Follow the `next` URL to get the next page. The `results` array contains up to 100 items. + +## Error responses + +Errors return JSON with `title`, `detail`, and `status`: + +```json +{ + "title": "Not Found", + "detail": "Model not found: foo/bar", + "status": 404 +} +``` + +## Content negotiation + +Set `Accept: text/markdown` when fetching Replicate docs pages (e.g. `https://replicate.com/docs`) to get Markdown instead of HTML. + +## Output file URLs + +File outputs are served from `replicate.delivery` and its subdomains. Add `*.replicate.delivery` to your domain allow list. + +Output file URLs expire after 1 hour by default. Save a copy of any files you need to keep. diff --git a/skills/replicate/references/MODEL_SEARCH.md b/skills/replicate/references/MODEL_SEARCH.md new file mode 100644 index 0000000..d6bdef2 --- /dev/null +++ b/skills/replicate/references/MODEL_SEARCH.md @@ -0,0 +1,137 @@ +# Finding and Choosing Models + +## Search API + +The search endpoint finds models, collections, and docs by text query: + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + "https://api.replicate.com/v1/search?query=text+to+speech" | jq '[.models[:3][] | {name: .model.name, owner: .model.owner, runs: .model.run_count}]' +``` + +```python +import replicate + +page = replicate.models.search("text to speech") +for model in page.results[:3]: + print(f"{model.owner}/{model.name} — {model.run_count} runs") + print(f" {model.description}") +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const page = await replicate.models.search("text to speech"); +for (const model of page.results.slice(0, 3)) { + console.log(`${model.owner}/${model.name} — ${model.run_count} runs`); + console.log(` ${model.description}`); +} +``` + +Search returns metadata for each model result including `tags`, `generated_description`, and `run_count`. + +The search also returns matching collections. Use the [collections API](COLLECTIONS.md) to browse curated model groups. + +## Per-model docs + +Every model has an LLM-readable docs page: + +``` +https://replicate.com/{owner}/{model}/llms.txt +``` + +For example: + +## Reading model schemas + +Every model exposes its input/output schema via the models API: + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/models/black-forest-labs/flux-schnell \ + | jq '.latest_version.openapi_schema.components.schemas.Input.properties | to_entries[] | {name: .key, type: .value.type, description: .value.description}' +``` + +```python +import replicate + +model = replicate.models.get("black-forest-labs", "flux-schnell") +input_schema = model.latest_version.openapi_schema["components"]["schemas"]["Input"] +for name, prop in input_schema["properties"].items(): + required = name in input_schema.get("required", []) + print(f"{'*' if required else ' '} {name}: {prop.get('type', '?')} — {prop.get('description', '')}") +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const model = await replicate.models.get("black-forest-labs", "flux-schnell"); +const inputSchema = + model.latest_version.openapi_schema.components.schemas.Input; +const required = inputSchema.required || []; +for (const [name, prop] of Object.entries(inputSchema.properties)) { + console.log( + `${required.includes(name) ? "*" : " "} ${name}: ${prop.type || "?"} — ${prop.description || ""}`, + ); +} +``` + +The schema path is: `model.latest_version.openapi_schema.components.schemas.Input.properties` + +Each property may include: +- `type` — data type (`string`, `integer`, `number`, `boolean`) +- `description` — what the input does +- `default` — default value +- `minimum` / `maximum` — numeric bounds +- `enum` — allowed values +- `format` — e.g. `uri` for file inputs +- `x-order` — display order on the model page + +## Validating inputs + +After fetching a schema, validate your inputs: + +- Check `required` fields are present +- Check numeric values are within `minimum`/`maximum` bounds +- Check string values are in `enum` if specified +- Don't set optional inputs unless you have a reason — let defaults work + +If unsure about a parameter value, check the model's `default_example` (returned by the models.get endpoint) to see what inputs were used in a working prediction. + +## Picking the right model + +- **Prefer official models.** They're always warm (no cold boot), have stable APIs, and predictable pricing. They're in the `official` collection. +- **Prefer the latest version.** If search returns Kling 2.5 and Kling 3.0, use Kling 3. Use Nano Banana Pro instead of Nano Banana. Use FLUX.1 Pro over FLUX.1 Schnell for quality. +- **Run count can be misleading.** Old models accumulate runs over time but may be outdated. A model with 10M runs from 2023 is likely worse than a model with 100K runs from 2025. +- **Prefer recently released models.** The AI space moves fast. Most of the thousands of models on Replicate are from the past five years; many are outdated. +- **Check model tags.** Search results include tags like `image-generation`, `video`, `audio` to help filter. + +## Listing model versions + +Each model can have multiple versions. Official models route to the latest automatically, but community models require a specific version ID. Only community models expose a version list. + +```bash +curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + https://api.replicate.com/v1/models/stability-ai/sdxl/versions | jq '[.results[:3][] | {id: .id, created_at: .created_at}]' +``` + +```python +import replicate + +model = replicate.models.get("stability-ai", "sdxl") +versions = model.versions.list() +for v in versions.results[:3]: + print(f"{v.id} — created {v.created_at}") +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const versions = await replicate.models.versions.list("stability-ai", "sdxl"); +for (const v of versions.results.slice(0, 3)) { + console.log(`${v.id} — created ${v.created_at}`); +} +``` diff --git a/skills/replicate/references/PREDICTIONS.md b/skills/replicate/references/PREDICTIONS.md new file mode 100644 index 0000000..f63344a --- /dev/null +++ b/skills/replicate/references/PREDICTIONS.md @@ -0,0 +1,316 @@ +# Running Predictions + +## Official vs community models + +**Official models** (`owner/name` format): +- Always warm — no cold-boot wait +- Stable API interfaces +- Predictable per-run pricing +- Maintained by Replicate staff + +**Community models** (`owner/name:version_id` format): +- Can cold-boot (seconds to minutes for a new worker to start) +- You must pin a specific version ID +- Maintained by the model author — interfaces may change +- Can be made always-warm with a [deployment](DEPLOYMENTS.md) + +The `POST /v1/predictions` endpoint handles both. Pass `version` as `owner/name` for official models or `owner/name:version_id` for community models. + +## Create a prediction (async) + +```bash +curl -s -X POST \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{"version": "black-forest-labs/flux-schnell", "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}}' \ + https://api.replicate.com/v1/predictions | jq '{id, status}' +``` + +```python +import replicate + +prediction = replicate.predictions.create( + model="black-forest-labs/flux-schnell", + input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, +) +print(prediction.id, prediction.status) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const prediction = await replicate.predictions.create({ + model: "black-forest-labs/flux-schnell", + input: { prompt: "a red panda in a bamboo forest", num_outputs: 1 }, +}); +console.log(prediction.id, prediction.status); +``` + +## Poll for results + +```python +import replicate +import time + +prediction = replicate.predictions.create( + model="black-forest-labs/flux-schnell", + input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, +) +while prediction.status not in ("succeeded", "failed", "canceled"): + time.sleep(1) + prediction = replicate.predictions.get(prediction.id) + +print(prediction.status) +if prediction.output: + for url in prediction.output: + print(url) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +let prediction = await replicate.predictions.create({ + model: "black-forest-labs/flux-schnell", + input: { prompt: "a red panda in a bamboo forest", num_outputs: 1 }, +}); +while (!["succeeded", "failed", "canceled"].includes(prediction.status)) { + await new Promise((r) => setTimeout(r, 1000)); + prediction = await replicate.predictions.get(prediction.id); +} +console.log(prediction.status); +if (prediction.output) { + for (const url of prediction.output) { + console.log(url); + } +} +``` + +## Synchronous mode with `Prefer: wait` + +Hold the connection open for up to 60 seconds. If the model finishes in time, the response includes the completed prediction with `output` populated. + +```bash +curl -s -X POST \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + -H "Content-Type: application/json" \ + -H "Prefer: wait=60" \ + -d '{"version": "black-forest-labs/flux-schnell", "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}}' \ + https://api.replicate.com/v1/predictions | jq '{id, status, output}' +``` + +The Python SDK's `replicate.run()` uses sync mode by default with a 60-second timeout. + +If the model doesn't finish in time, the response returns the prediction in its current state. The `Location` response header and `urls.get` field both point to the polling URL. + +## `replicate.run()` — convenience wrapper + +`replicate.run()` creates a prediction, waits for it, and returns the output directly. It uses sync mode with a 60-second timeout. + +```python +import replicate + +output = replicate.run( + "black-forest-labs/flux-schnell", + input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, +) +for item in output: + print(item.url) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const output = await replicate.run("black-forest-labs/flux-schnell", { + input: { prompt: "a red panda in a bamboo forest", num_outputs: 1 }, +}); +console.log(output); +``` + +## File inputs + +Prefer HTTPS URLs for file inputs. Base64 is supported but slower and increases request size. + +```python +import replicate + +output = replicate.run( + "black-forest-labs/flux-kontext-pro", + input={ + "prompt": "make it look like a watercolor painting", + "input_image": "https://picsum.photos/id/237/200/300.jpg", + }, +) +print(output.url) +``` + +Output file URLs expire after 1 hour. Download and store them immediately if you need to keep them. + +## Concurrent predictions + +Fire off multiple predictions in parallel. Don't wait for one to finish before starting the next. + +```python +import replicate +import time + +prompts = [ + "a red panda eating a bamboo sandwich", + "a blue parrot riding a bicycle", + "a green iguana playing chess", +] + +predictions = [ + replicate.predictions.create( + model="black-forest-labs/flux-schnell", + input={"prompt": p, "num_outputs": 1}, + ) + for p in prompts +] + +results = {} +while len(results) < len(predictions): + time.sleep(1) + for pred in predictions: + if pred.id not in results: + p = replicate.predictions.get(pred.id) + if p.status in ("succeeded", "failed", "canceled"): + results[pred.id] = p + +for pred in results.values(): + print(pred.status, pred.output) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const prompts = [ + "a red panda eating a bamboo sandwich", + "a blue parrot riding a bicycle", + "a green iguana playing chess", +]; + +const predictions = await Promise.all( + prompts.map((prompt) => + replicate.predictions.create({ + model: "black-forest-labs/flux-schnell", + input: { prompt, num_outputs: 1 }, + }), + ), +); + +const poll = async (id) => { + let pred = await replicate.predictions.get(id); + while (!["succeeded", "failed", "canceled"].includes(pred.status)) { + await new Promise((r) => setTimeout(r, 1000)); + pred = await replicate.predictions.get(id); + } + return pred; +}; + +const results = await Promise.all(predictions.map((p) => poll(p.id))); +for (const result of results) { + console.log(result.status, result.output); +} +``` + +## Webhooks + +Set `webhook` on the prediction to receive a POST when it completes. Use `webhook_events_filter` to receive only certain events. + +```bash +curl -s -X POST \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "version": "black-forest-labs/flux-schnell", + "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, + "webhook": "https://example.com/webhook", + "webhook_events_filter": ["completed"] + }' \ + https://api.replicate.com/v1/predictions | jq '{id, status}' +``` + +Webhook events: `start`, `output`, `logs`, `completed`. + +Replicate signs webhook requests. Validate using the `Webhook-ID`, `Webhook-Timestamp`, and `Webhook-Signature` headers. Get the signing secret from `GET /v1/webhooks/default/secret`. + +## Cancel a prediction + +```python +import replicate + +prediction = replicate.predictions.create( + model="black-forest-labs/flux-schnell", + input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, +) +cancelled = replicate.predictions.cancel(prediction.id) +print(cancelled.status) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const prediction = await replicate.predictions.create({ + model: "black-forest-labs/flux-schnell", + input: { prompt: "a red panda in a bamboo forest", num_outputs: 1 }, +}); +const cancelled = await replicate.predictions.cancel(prediction.id); +console.log(cancelled.status); +``` + +## Prediction lifetime (auto-cancel) + +Set `lifetime` to cancel predictions that run too long: + +```bash +curl -s -X POST \ + -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "version": "black-forest-labs/flux-schnell", + "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, + "lifetime": "5m" + }' \ + https://api.replicate.com/v1/predictions | jq '{id, status}' +``` + +Accepts `30s`, `5m`, `1h`, `1h30m45s`. Measured from the creation time. + +## Streaming (SSE) + +Models that support streaming (typically language models) include a `stream` URL in the response. Use SSE to receive incremental output. + +```python +import replicate + +prediction = replicate.predictions.create( + model="meta/meta-llama-3-70b-instruct", + input={"prompt": "write a haiku about mountains"}, + stream=True, +) +for event in prediction.stream(): + print(str(event), end="", flush=True) +print() +``` + +## Async Python + +```python +import asyncio +import replicate + +async def main(): + output = await replicate.async_run( + "black-forest-labs/flux-schnell", + input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, + ) + for item in output: + print(item.url) + +asyncio.run(main()) +``` diff --git a/skills/replicate/references/WORKFLOWS.md b/skills/replicate/references/WORKFLOWS.md new file mode 100644 index 0000000..98a064d --- /dev/null +++ b/skills/replicate/references/WORKFLOWS.md @@ -0,0 +1,152 @@ +# Multi-Model Workflows + +Complex tasks often require chaining multiple models together. The core pattern is always the same: run models in parallel where possible, pass outputs as inputs to the next step, and stitch results together. + +## Core pattern: parallel predictions + +Don't wait for one prediction to finish before starting the next. Start all predictions you can, then collect results. + +```python +import replicate +import time + +pred_a = replicate.predictions.create( + model="black-forest-labs/flux-schnell", + input={"prompt": "a sunrise over mountains", "num_outputs": 1}, +) +pred_b = replicate.predictions.create( + model="black-forest-labs/flux-schnell", + input={"prompt": "a sunset over mountains", "num_outputs": 1}, +) + +def wait(pred_id): + while True: + p = replicate.predictions.get(pred_id) + if p.status in ("succeeded", "failed", "canceled"): + return p + time.sleep(1) + +result_a, result_b = wait(pred_a.id), wait(pred_b.id) +print(result_a.output) +print(result_b.output) +``` + +```javascript +const Replicate = require("replicate"); +const replicate = new Replicate(); + +const [predA, predB] = await Promise.all([ + replicate.predictions.create({ + model: "black-forest-labs/flux-schnell", + input: { prompt: "a sunrise over mountains", num_outputs: 1 }, + }), + replicate.predictions.create({ + model: "black-forest-labs/flux-schnell", + input: { prompt: "a sunset over mountains", num_outputs: 1 }, + }), +]); + +const poll = async (id) => { + let pred = await replicate.predictions.get(id); + while (!["succeeded", "failed", "canceled"].includes(pred.status)) { + await new Promise((r) => setTimeout(r, 1000)); + pred = await replicate.predictions.get(id); + } + return pred; +}; + +const [resultA, resultB] = await Promise.all([poll(predA.id), poll(predB.id)]); +console.log(resultA.output); +console.log(resultB.output); +``` + +## Pass outputs as inputs + +Model output URLs can be passed directly as file inputs to the next model. They're valid for 1 hour. + +```python +import replicate + +image_output = replicate.run( + "black-forest-labs/flux-schnell", + input={"prompt": "a serene mountain lake at dawn", "num_outputs": 1}, +) +image_url = image_output[0].url + +caption_output = replicate.run( + "andreasjansson/blip-2:f677695e5e89f8b236e52ecd1d3f01beb44c34606419bcc19345e046d8f786f9", + input={"image": image_url, "question": "What is in this image?"}, +) +print(caption_output) +``` + +## Pattern: video generation pipeline + +To generate a video from a description: +1. Generate keyframe images with an image model (run in parallel) +2. Generate video clips between keyframes with a video model (run in parallel) +3. Stitch clips together + +The exact models depend on the task. Search for the latest video generation models before starting. + +## Pattern: image editing pipeline + +Edit an image in multiple steps — remove background, apply style, upscale: + +```python +import replicate + +source_image = "https://picsum.photos/id/237/200/300.jpg" + +styled_output = replicate.run( + "black-forest-labs/flux-kontext-pro", + input={ + "prompt": "make it look like a watercolor painting", + "input_image": source_image, + }, +) +print("Styled image:", styled_output.url) +``` + +## Pattern: audio/video translation + +Translate a video's speech to another language: +1. Transcribe speech to text with a speech recognition model +2. Translate the text (using your own LLM capabilities — no model call needed) +3. Generate speech in the target language +4. Lip-sync the new audio to the original video + +## Pattern: document extraction + +For PDFs or documents, use OCR to extract text, then use your own language model to process it. There's no need to run an LLM on Replicate for text processing — you're already running in one. + +## Suggested models by task + +Always search for the latest models — these are current recommendations and may be outdated: + +| Task | Model | +|------|-------| +| Image generation (quality) | `black-forest-labs/flux-1.1-pro` | +| Image generation (fast) | `black-forest-labs/flux-schnell` | +| Image editing / transformation | `black-forest-labs/flux-kontext-pro` | +| Image inpainting | `ideogram-ai/ideogram-v3-balanced` | +| Image upscaling | `topazlabs/image-upscale` | +| Background removal | `851-labs/background-remover` | +| Image captioning / vision | `anthropic/claude-4-sonnet` | +| Object detection | `adirik/grounding-dino` | +| Image segmentation | `schananas/grounded_sam` | +| Video generation (best) | `google/veo-3` | +| Video generation (fast/cheap) | `pixverse/pixverse-v4.5` | +| Image to video | `pixverse/pixverse-v4.5` | +| Video upscaling | `topazlabs/video-upscale` | +| Lip sync (image + audio) | `zsxkib/sonic` | +| Lip sync (video + audio) | `kwaivgi/kling-lip-sync` | +| Text generation / chat | `anthropic/claude-4-sonnet` | +| Speech synthesis | `minimax/speech-02-hd` | +| Voice cloning | `minimax/voice-cloning` | +| Speech transcription | `openai/whisper` | +| Music generation | `meta/musicgen` | +| Sound effects for video | `zsxkib/mmaudio` | +| OCR / document extraction | `datalab-to/ocr` | + +Always fetch the model schema before using any of these — interfaces change. diff --git a/test/fixtures/me.png b/test/fixtures/me.png new file mode 100644 index 0000000000000000000000000000000000000000..0528df58dd55d7f5ec36f36cfde283963e5a13a0 GIT binary patch literal 214417 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%0D!NMAC&V#k z>m8_Y-($2U`p#c8c;**jj4!M9!-)))i}yqruvCmAFiKFS40gICBaVPJwaMU3IToiO z7RXj!Vn|4cO#Vs+vepN`q|gR^!c%D0nnzP0gOcq`1tQriT2pNR1XbYAsJY6ig!ypd zA|JS_U8Hj@0q-{LSTZnh;^%?tjww$eitF$W3?xk+)x@p;4n@}|Idq=iJuLzMM};v{dOWya?`c(VH zwLdXw6J1or$Sbc5kccWG*;ZdsV=yvGR<=T4w%M^1JTUWb&n9fr@?INNpKWf>S1;G^ zh1k5mTOIVv=0Eq_SNm7@4|}`zX4^|cJ|2y&>bG!PJ_&OqF+H?jx`YV23c@!R2T63RLl(!_s71PvLxxgT!F8p3W8uq|>e zgbdH4YBPu!C6#oLr?S+j0;H3&1W?rW-e*&_!jYwqDxGwT)XBk^IZz%l!Jwro!?ziL zFl;rZ8Yw0CDPHSZh^$cl5tEVWoc)p))+JXTW8uxL?#AgfS?P1BXpB)tRvtMl5QU(KG8ZATDZX7iYwELAjyi7a}#+?v_>O0713jpeej(M4rl_noWM+5X%_ zQCP$gK!Q2BW!fxzKpYpM(@iImB4ikm5Fc{FE@i6BmkKOTNGmbgF*$}L>vQMP;mVp$ zpWpNXf=ZK=eeHa9mBS4EBQ>Ly=<^vn4;NICI&e8EACPF%zE^fu8R{+dYgyI^HYrh; z-S?4f;THl6$(f&uJs&w4CeRRRkr|CgpV#rKTDn}zJHzGz=|q-%l3dmYkT>k~nPJ=p z|F|~TV8V1VoMYE6omaiHhTCdNic?zcaG39GZCf86Y%Iy#04~ijaYl&QgY$6zh)8jg zJ}SB#dMLIH5fMyOZo7^Ov6a)P)H?`OhmY$6)aijzYA zok>l159~BR(hQjcWkU9Vl3sizBUvH*D%m;61h)(fQ=jru>@7lvi^JcJ;vrB?^Gq)> zdFGls+KC(wZ&uNr|VC+aIX)#>{jVx#eZKT(jx$ z$OaWLMWa2nP~6(eXV_Q0XntI%5f-4s(%C0RKRj$d5;&h<=ID29n2kynm|OE)f7T8omI z3y7^Br~I)K9~_>GFmlI6jpGnshJlfmVG4?v-80q|X4{L<$YIQwF^6%Q0}GG?z%0FW z)X>t_S}P}GyE9T^3^$?TBs7O0*)*J9m>NXV*l-_{SL}c3ii?a&O%J1k*e9qFj#$NM z(nK_rp!iWvrD`E0n!r<(rdhcXXR$SvlP!Gp7k;VY0AC%2hW2>~5Ba8tN0h|N_H4@z zA`f3frX?9wrP*doH3A?ZfATKo41t9qlHnL<^hl1>#Ox&fZ1$F-qxDz*E=z{|!~s`b zWs<{yDx?+uz=0fbb7JZMxQks5uB4fCiquR#OkhW$DZF9s5=nL?s(!08xVLVxjxH%C z#CASa(da1}5nxzF(albQLAV!7{4?|gULL23gp=b>i?}(y~ zfBMY8v&5r1TJc;CDP8KvoRvY37ov2F&BEP<|I*%|G0YeVm1|U)dUUsJ&zZjc{AKgx zdQI0b#2kA0w6$l|V5Y9d`sY26!SqYtuNam#@@uJ3Ll02iPU@H8s3Yp|Hzce%Br4@~eqN5<8 zCR?CncW$JGK)*#Om>=X=5`&xCGV2O%(X?*VpY*+Dk&Yf@9)(fL@H6%fjY4?@R)(&g z87bC_ipf5AxMJ4qRI?I28`-E@NRKT|$vHYU?W0ehQvb&k$%m+ zBr&q{4=QLGo`zj!Oq*B{keQ9xdg@PFq9}|9XDAL~mN4Qe)zllX1~zWo#-vrQ<;XxT zzG0!5)uI`7S|Ub75yT{GfW%eAJQA~JsQ5+jNyzvWi}DNXPn}Q|~9A4sY1P&($SqJ(%*>Uy1%^X$EeMtChrrhn6YQYNqKf zl7j3Y@*+iaEmgs4tGAt^!F)Nl;I<5sPwNF8-s2s9#uXzJB0yPKRZUYDMwQ|MWsB1l z?ah)hgGkTF$l2}b8LPRIMA%l-Jx&p(yvsn&@ zRmB!CC6kK1Ya~=X>+h+>L-g;^WuS-hO@Ieegd8nG@l+rSsc3e&jXp}U_OXeKu(_D+ zCd^|l-eBSh;W&bXkkXD!lB7CiiI|Z^>KvuWGg4K@L!nV|5!5qDa;R%;JtnZti$`RT z83av6F!UsLWZ|Z>tRJAlFs#)+ev>lU>KeR}hJh_hDs0iXyMT(5r6%`;y(Lu9_`%YCIc#2?fK|*CMS5UMA)Qc$JRlnKDT(GQn48UnqdB@l z>kci^I`XJ_`6P*pWje&2qOwgU7n5EmeHx!%G!n#9G%Ufw$U-|5gos=L2VneZc4X(w zrbt!DBN`Gpd%Ma+B9mAf zcP^G8qEIgeu^;_ohX;A4*Fy6t*Vq&J2kTZ0*8Boi!QII z70OVkN{)yumkdV(c>J!oaOlA9IV7GHPpTH%M8p@sa`-GYr$)}rjl^QDE@=P&KmbWZ zK~xk3;atEFp&E|B(tuP5RU?C(QKrSBMMdsn_$o0rP~^!}@zTAynPgzccC7vLfFM;xpoU(c zi_UN{%Rpnlw_J63eM50Z@#;%~rXoPR_!YvIk&OjfR7kL|>Od{k1|y}m6`2Qugkyjb`Ra@-v6Ll*i@KKX?ya&F zIH)lES~1T8b@P(_V(ouEd%LScedUa?6-r>i53vAM^HsJ!ksz=JeremuA;2j0I8Zu% zdHa=H1gKF`q)_M;9wZUNlT!s><>Q0m49Ap0KV|j(^5shjm#9ci1?xaVH zl27dd%}B(-Gg`CMpDw85dv>h=Q$Vc0hu4u`(u{Fqw2rBI@`u}U166b!DPSDf`fLP? zD8=E4xhLYiY+_!^$d#$+R~BVx)HBnC78!`)l-=Rx_U7-OKmGE{-`BrvUay>D;Wku< zK=0O%nVG>X>EZEz$}0-234|QU9EE`Za&4+v8PdfZT4;`}>53S2WF{yAC`u5*6h2hH zhF6f0x~O!zc`m}|)MXIhy}qhxBvB+ssH}_`;PVQqWPVKOwfy1oV_?qisL@cYEo7Pz z7Q#J>u1*=?j(Nx;Lku?xZkeiV%Of`^g!Zf(CPf65enR5NE4HmJQXM0g!rs=-stZJr zc(KqksAsZ1tDj=MPNk(z-7Ff698!4D6PcLGWPE4m7-cPT7Fth`{et;urs^+!!qce0)W= z{$T|V@|PRlP<=jkq8#| zXmAF-(Y7TfTFSiWk&lg|Z z*I-IA9bczp#>%iP^5*8g#ySGV9u+ zVXUR}gUB9(PCei}eLeLvq*O`RGyDp%BCB}yIJy=Xx5vDumO{n=`8KNzm#T$kK9(iHxET z80#PjLXRx2X}_Xr5ZiMR*lCC%QxW*&Nt@ z4Bw@L1XS|x@B(Ycf)-u0>eAtntJS-T38gKAd{WbvLBb;oj!xUEg@3}~UvPgFS>`Qk zS_*d@c(5msJ7$nyY40EIfg!$s)(V8T4fT=U@ zXE8;38jUJ4thTrpGA2j9K}RqM|22_OqsxrNwhnt{R<5&OjLOb)qVCPj&4;_YpMLu3 z{SSAu<>iL5w7&R%{@?$-rp(Y2Ci8dK?}-|R4l|OGqril`boxB63$ZhG{hwaS5xgy%3E}?-?V84#25Whu2fBNmSOA0evq{>nun;MA4G)^ia z$-+j)SLNP{$?MSWMf}9~%JCvjh|C;JW{$R`R|Eju7HrXyYpSWUs)3bbY#mFoOW%8D z-<35VHDr!JG7K}(o}E@~c}db!L;Qpk&NpcoH7QFLtUn}uN|sRyOJPx?x|c(nl1KG9 z@>51?k_#Zc=&~tUIrn2wMkYHqn9)%db2w+br>kBV1zU4rDo@UCm7FeYyji@izWj2} zuA{v{`gFgh9)OVM!a(@=@Q7B(t!9AOECE$q9ZIk9JR*Y*%-z&BU?l575CO2{luNs{ zd&M+9k6Z}rO)$COuDO)%?PGX+Mb>_c#k+!ml%&vWYB|4B93?i5b->o837%60v|}KO$(dpvYQwh-t6HNlk2O$a{(+osPemnF z)vjs=(wvlFPhr}kq!=Pe2U^1`5mmPKqGU%B%*lj&0UuD|gJ<`WBRT;F!|&hU{q1jm zdw7fiiJ~qD0Wxe{U9aAMxHEzl!d}hNiiUsv^vmPs@!lAlm5)x@s0}|&sE^_JT41Wc zC_VY|VgvR+380$IZ zz8Em`mh<2yGmLHaO-102hL;|LJvjmZI8gwTEx6Lea*j0$pzXACa;G;{p>!I?j9!hJ zLs!cxln5Xph|*43s~o0MOkgxz%RncCHdYEV8wgXYhA+eMnViy~iq_=PsYJ%CGWKU6 ztUg)z`f|32h-yjXwS-a9r1vc2Q3ku2y9{#6WC-p^L+V~ecB0WNvdSiwVMd?X)y%bU zlrk;&uzlLxf1O+VezsVy7B3H3dYrlXoJR1*dkB}))A|V4&#s@Z?K}vVQ=uq6rA-7> zw8rI2h+4?#v}IZf@zEJFPKhdpyM*{aO}>fQY=qHvD>K5WYny(v+22 zw$VyV$PwYPcK>!v5k^+TTF?=GF7tp0P$VQBrk<&U2v9qrC%m;^CY*w3PmQanQ3tCl zoZ$5Y8vql5%q8L_QI292)X6cqR>JeZBj!Ylc&)mqV5?MJx(qe0Zd6_5-!RC(^ATC; zF8<5TiRhBaGZ;=^qF(7EN7|62phk>ki|s6qPeDaDQLCK?M6M|g8p9=oOQ_`4b}|F8 z)$L8pzShuXaAF}4&3^4JdBkoa1r>z~N*3tI8`QM9!0NEGh=4JOV1duIRlH38mV-tz zVr{#yQCh4up%H|s{3D3p{#G>+WyAo~;L1oAJZEZwbT14bXF?=mP%h#72$rJK>W&f; z`F1Qq!PJVO7@fG3g+1(URkTyFNh#W$UrDr9G(80w?Z`ZQgKIqej}k~+L~w=+*-S1n zYYt&0DCXfAq9;-{qeQaHv|$oQQKvEzcf^PaS*CCm$t1qYNm1|>SER!56H%q@BTr=% z1W4u^B4$+bzXou=nQxz7EatP-;>!NM!}*2)GBIK)7mUput>F&uT^2W+<$HCLNsXmP zoXbr;yovzb*gitW(hVz%3@{DFmu6J-CZShk%^8iMNN5=|F+9Ov;W>XTW++3&U}<|T zb7ZzGo-8N-NVLi1=_z(x^duT1YO<(|FppF$K%!%?N)$U1hnYze&-KGMV=?8VZ+Vd_ zcRizc95ym%>Ugx*@?(Y(e&GRAZxZ+z1!IWAy7bmDPV-pQgupk119FVOGipFQz#BhF zt1cyyfEHn4DpZy6;TVS?Xut3X1xM1A+1ry0(lk*_Y+TSpnP)ycvdxwZGGaDg-6Bkt z1E>h6pgNtB%*2< z(~v?kwKd%&Jq0C6z!bHF!M9dz^%_G6M}$f`GIKxYQ+AC{F12#1PPY zGx_E9X6}UPv)RE3u2-wo%5Y%$vbtF1oU=dxhS!U$+12)v+5*cV*wEJDoV@W$Mkp1@ zu2$|~$u=J}C!@Uk;<+p?&;i zzz1%!QX;0X%x#R5`y(}#^_^UAvQyr-lnaN7kk%8bx;W^NLQDuDhLA<%IBAG{p5ErO z;e-@!JfuEBU;ee60@A}rsIn+Ha$enK2unZ$rdEIR$24ABUP@3ZEA_DKL-nc`;TNJo zZ*OmPFZW+RYgrTDp1p$E+2s73#uk%QLJ0-G{weK`=u`?MBXW2K@lzN8dw&YimeUXo ziE=ZqM_voLtTi$&oMLMD9Z(Zu_tO@%HLYxv9 z2MFnik+-sKMoiAl*!c*UH!>TuOIJOAOR(fotVO(tb>58+V(Sfu^8OYPda63?1-=^X67cd0Zk`Z+GX};6p!lUH|Yg3 z%+r>U!hivKX@JQ+9#iinhOGB-z@G@p1+I>={;YSk;!v9yWjTihg~-NH9<$5a^V@e9 zH+si&tIKz1=GSk}-_4$UxLsacKYV<&h+w%`eSZCHs@eE(wOmp)K7IV`*68fmnO~~R z;%aG#j-v+Ey(Z>K4kQge#8d)?!^pr_-t)lyG=I~FSW<8m*kAzDL zV0{;Oyka?;8$YLUX3tYuHFN-L$;DGjUlc&moRI4&A7yFZr7O6T(Uk{b+NIac=;@46 zM9e4EAEwPB%CnVBHDzn`yM5S^4LC{bsT9{TD3o3ORH~FZy*xZT!bUD`%3J~A7}?#` z!~(&|hT%0)WqkkeAZ{z99awn;M-9BX=p?kAgv^4=)e7a*=aBJ-A3i|c4O_geQq$nnUkg}-0Vo;Rai(M@cs`Wb#9kDDh#S);EJIw`TbOWGj>QtO~ z*}f8783O_(RGt)EbgdId-lfYSeWFqMAX<1n>TqhC8EoAv%bkX_`lq&dzwDm2=IEUl zGrOY3yqmqa9wfUz4Upx5wFnod-kU=E98B$vv_!=mFOS;l+(n7T=a$viW*>vRC_$(n zoWWnQB2UEA#Bmv!p79BAYC-g%=@vk0);66^HL3$FtQ>o)r_TNJ=g(g(#ouhKc_EKz zI8=AMRt2U|@M1;rA0FUlU34A*9rT6DL{aE>AjUq?=l|2E>zLyB&R*|MphUWE2*CPE5(G zw3Y~2Xhd+dVDc0@xoJ>?!PWy^#P{&fqf=icSEZC|p`&pt+cR!1%BQ~xd3t;#fTGK3 z)aoJvZaLDtb5O*iy`gmzsV8x)C}@9tBL5%6{rAzJkgXIt}%%OycgHW;%5g>vGGWdnZ6i_qtrItb4<^AKs;(L)7tt&ikuPni&bn4I{qA@{<<$Mz#;nOWLqxQ*`q5Oh~*W3vD1()ZMCFK==zJV ze5F$d#!UL)s%)B%5IN>?{B2x8xd4o&S{g@-dTp8^BEyUsm{hZch{BgCHae3~5vtJ2 zQ)hr-j@ipf){-mO#N9DkJYYj5B__~8LnfBN0Tn5O$inH6bA+YJM&QfPGjcD4r*4rK zQK)EG5j~NhttAPSP9W_idp_p53%b(B#s$RRqC;SE1F|(DLEx(;iqXd+kOQvjJ=#q3 zC5xfcrLa>u%l_~@+h4w$yL@}Ty1bq57A&qWPqAk#t}oBFOY@cwR|}-(mda#qo!ETd z1AT*Llo0}DHL;pLo1ROhFM3l&O#&*7=uy0@V{xiTs2o$FX)-9!VQpcoIX-!H&j%u= zf?%y*e)+}IQB_19kHG@5CfnnZ$f+UH&HMKRrGkF__-oV$3l8e28X=m>9FuIT?E`oZ zQoPocABiFo20lMuRy4}RJ2nmfBs=zPi-7rkus`W1Fjm& zu+W7>si?%fDYg{FoxT3_^G|Td(7}j{XH8bjE@s57Zlg&O{>fh$F85+6YfOb~RQboB ze-ejq|M>A!8Vt*qG$fUX?_YlXW9Vb&W-*Qd|q~!M(A-Hpk_pE8kNy`cJecx? zR+c1crXu79LOc|?kX|0s7bha(qDkF4A8yLTb34pl!+CGnhLLVOjAXl66zCefV9Cf7 zE~Ab3ho&n9N@bJEk*8c5HY?ZjQ!*$3NDw)oZPTOW(;qv^L*m1~>R3gfRspqo3#qCi zRfp0ud?9*5STUz38K^sUR2(_f7|}>8+dV{sl0=CV^p6Nt{bcJsu)~*eDbYooWP#|# zmR1!p1ZCt|;h=QLBuf55Q;M?KswiFIc*?I%2Gd(%S%XrmU$aDM?fM|gzLmdwa?s_= zm3xTZO|H*xUluln%yeXHm$W`U&lXp&tIPGHy!Vu2JM49gyY-WOD>{7T&aEq%+HRB8 zw6q5NR%%6Xl$I$2O)69_2-N?lvqr$hNzG5a8HxgzKE%on*L_;o zigR$9Y?{dzSF88$-)jQI`NIz%2neeyDJ+zrYJ(^O9I1isC1KGxc0P4Qb?msl+YXxE zQnsFer_BZbIg4Y0r-cL5n59fr`|ja8vMPbcqN`e4JlR8NXe9!UL?#})CoAHOq8RG<^G!vsE*c^Xg3hXYu9TCxiq|%YQu6)8jC|VP}-n{EJ!2 z>@kq2Jm5XCJOjJF8~JdP{l*4#i)(}QqvVhZ%T?MaH6?P60!d;HH5DKDgcAb<=+5PB zkZC$IHoRRlBgS#ch~RO!eT+KKV;-9wHm<9{3)@FJFtmB$P0Ut zeML7&83S;({2T?)3*1AU|lKmlT>%6Zp)%Ep_F;vEkidHLn zqXo4PXOF$rS&PdbK76>ly;H9HWj}rT2twdVQayjvvFySvWduJ{`RBFJAYFdx~Z0V7|sjDvL+QDsB`uP%b{ zd|71GmEy>7Y30dD54A?E8F>UAU4P^_XpsW+iUS;lR&-#T8z5m!mTBcKm$>+j1S!}6 ztcWcO$!c{|+(cQ+WeMbA?JWwmV{c#Ka~}Im#1lR4{rewaTZTXV^xr=H`gcNsUx@^d zD)SqoS@-z)(`OcTFK;KIAC3F5#M50(k3PjidKFgbj4_;bqwLmT9jbsWP(2_E`;-lqc ziFvH-5mu2|$t8~}c^sblWRrrry)fRj>J+soGYq0)?-DLXrI92SNoD{TWmY+Xivy^- z0+SP&L<_JK@l1`!uY2BOco3Scq@fcUNf~LHq?%23F9!qfU(SA=Ao9t2wYyqb1#`|~ z@iM!b%vqn8bNi@~FthaY)7H(oFr~B9Lw2W)u~B*dCHG=i9>|cn<6a_1(MYL9&A`MZ zr^yj9n!bPdGEnp5BU(iIa>S6b3gebR7i&@FkXSVNWUk3V68`uR3o?q5b%=ygT!s>K ztMyuE&Qc^#pIfHLmg0lN*_xFrH-+Gn%w%UUlg^YTO8mW&AG4M0gFI@iQZ zjvQoI(kD}d{3sr5lK8{}KN8Ybl=2FJRLa-=_rHdLxK6F@ecg@ne$^HIcW_e^6c z0)|0LofAUzs3U<$8%kEuk71JJitS8pbWDR>NQED#9C-%#<)9zAp%*GuO?u9Bm?C7( z+MJb>)ijJlM2}45rV;<;fBlQ*`O823g_T+a#^s=-1_5aq0^jbrI;lP~?qn@!nx;mS z@*%<$Bss&=?fZ8`iEdZ~V;5!%+Q`~Yj2zVG%ugn8=WQUktb&e|K^leI&>FT&KToiR zi=&;>31X{t%#P85cODHKVUc#!^E3Qrv0V``sX|(@VPF_}<3P!^ds;qxqc@I>Q=EK4 z4^eIM?f0Bd5GGve` z(eZ~tLS?q9k!$X~vQgIZ?ikatF3C*{iLM`wNGe2BKNIk?)=NJ$a~Sm{k+-_Mw)RVL zi|d81fU5oMRx-Obp4MMJeRVG)a-UufyPP4hTx5YiwGL*~RYQ5NHL{qa)<;>Ekd6gu z(j#Kye0W55D9p1xHDC-P(5U1xLA7|G(pBnJtRbXV#vV1=3hVn9NtG~3$iqeq&BE0S z@@Hcb0vz7Xd@?b&6{`(+X+Q=h*wq0MpT2w*2fC7%ahcicI!Z0gL1IFt{p)z!UG9@(3p3!%#U@z-c@PdEK0l4sx zM*$g`0)9EmT`B`oj4otu;q}RAE5MiQa^cEWI86XQ{Dil(zMJu+&a0bxJv==YW~}?0 z>3eRjuW_@O`|S$IgoqLeppV?IA9*;P$6x>YR~V46ZXaYHjrPGorohkx%Bg=H{@bT$ z6fn;;+IHupMC5J}I?B~u!5OK!oL-0S!5~mIsX$fKx*CqU*KBF=t0T0IT{NlD}TlKVeE)95emFC2*6%M?} zNwv@DQ}1qEAS3mU3ReZfQaInXQBg8=4{xT#Y)Lg~siLLtr6w36&k_@+I*qzPNp4YL z^arun0}x)jCNWh9K?*5sifkzpa}OgoJ?Jv4me7|Ri>}1Y8H*7>A!sj5z6aKHDwl`XbBmb#Y%lI<4i=X&-Gpsor-`g@U?rK>&Od@-#^-6lJ9& zzd}`}jy-G5i#0x|Rw6lzsq5pgmk>F$bl^eL$Q>nxm_p5$>_qJ8{6es0=-S@&GDB3% zsA;}-{^m`T2-~fu;bourtFy&cS<2i+Smor?=dbtr>>xG7+>iW%%@0udNdiSwDG(i~ zke}O)z;GNNoimoV43aHN3W=aZvW8kAex)V5B2Apy>gi8-J7`JSK_ht-q*Q6C)aU|6 zW&^X<`B=4B^uYop%Cg|AM}<{Wl#@L%q4(;FB1Ei>s&%Ak>S&r7Zi5rpjO`)fNVluI zyG+Kr@LdZXRB#vhPFpd6x_L;ws7Sf9_x8cWrB8%W)?wFb35~CGi;4Ur~36o2HsuvGzfXnzNZ&`=2FxZQTBiTyK1yiXT1T!>TM#Y?2ot-8KN#-06 zqKEX{u?=0CYqLx^Rkglu^17Ly&sQ&xtIgcewB!{%%2E~9!B|g{!|m<0F7TJXISC3j zvP9KHm=;3NW?xvT6F2h#S?{eMiDWB0rin_|kc;^#ti^DxgZg^NRM*E(AEO8Dw*2la zlUvgz?E}-&v#==k!T{Ecs2+fYKphpGM~mq8b(O;Lc_vk2-M}Hy6=h;zL3y2?uVsQc zai3K0-no{O+1NQtMqaUL;>MqU{_l71Kd1%+R2`d2;Aa*8)sogLUAWO?l7axUG%{U> zPuh_p0&7PuYNCZHdWzp#H=(EC(j^X_M+vf^5u1?&A)1VWVTDYB5QX0l31 z^L_sCnJPp$@KbLM8A|TI(uUr>e@Bps=_$z(ZLLZSZ`3iLV&^J-5H_e<1d|gHKi_}; z`Szzj{qz6WE!irkPus_rOS1}k5(n3_VA66sB@5gKuF*J`ECG{S@^Os^PAdv?uV#;inmShSrOVVso33Yh}yNCdBn%fn}Vfa)U?--skTTGc-^Uy%YA z7ehrPrnxoJRtaS)Q#2Q^$d*yky}-qjQ8F>bNT5jAx3#X?$rB4?QEaU3Spt6by1hEA zFSqxv4+ih(fBrmkmG|;|sd)2KB%3Pg7f2#$b7EP{0bwLUld6C#aB4jV-8(Rq1GmT= zZ5$Q$^TUT9De&6dsvpaKGUQoh_cG#^C^a>niUf%a%DMr2+|vBPSaBLyGQ-#_hWLd8 zLjIsOwt3vFaUE{Q`tPovM#E`D{~!M0AO4U3@?ZY+r{Amm3D%^9n1U%X zvXQ~av6tOFjzJSX(ucyo`|fwOCHp|sjC+b?WlShL_*#uA|@%2xpE2B{ZMbKaY z{0{${zdnPdj?61{!cJgiX!_{z{H!4x-u%Ll;VBk&&6x0XcSa@mWuy_Jv=#~5APfJR zwW1A4D;y;y-t!g*mfztu#U6!k1fCrqsx__Dz=XkDRiQ#A19(ES8y(73ZhwqH7r}Y7 zNSY|AzqKf_aW>Y2F?hC+G3Z&CpfJHDn3y?16roD>6;EL&3F{yZNvr^&bq*>qq>nD@ zDxSQOF=&&#@BSnK?VJrYh94NBaMtnbLtH#vJzQG}^KgFoc-glIe6b1M5lmF6dowbw zYEcH$R4IOvH~y61x7}Fl~zcV1G6}$nWR)! z#0=R&FC+huIqnri7*OV(siZ8!&(l8HGfZ^_9CDGke1V|!Ss^g-`|tk>EbIv5uP<9` zGR%)`7T*Bjkda^uBMNStCIb@^Q9hX}h}@M%Ztf*-IFeW!zWURD`cMDcKm5c0{-6Id ze0lroje1cOfV>rifI_Jut|uGx}hYMUczVQ5vSu!_}2$fYN{X&@s4H zdkYE5D6k@|vM7Zdh3BIzOYF@vkPk;R5|N6iDC*wFugXeA*0HGPR;zAAnfidG{GUgwc%vXmN-YhvNHPpck% zOzlVW%^k(jv`&wNHr7X#PSrGkbill&^KR)N7e=UTpZHp|QX_2tuc<9nMR zd=xQt#>6TbrMjMEM3u%F+-*#BiT+~Uk~6%kjjG!APE#{WMXVy(do?Hs8n#Cm!=%7V zdcyH{?@AM7w1QDB346I>^3VSq=yZmxna3ud1f$G`XV7nKq;0x` zAV2*0BXt5puD)d?eGZl>?G&d`8zzV7FpE{C8a6r&LaCHiu&oXh{Hj-E71BE$3cEEB z@WpFpM*m{M$o-D_F|9wGymfBWbQNJuGZ811%R+7EcU!D&Uj$N>Qi=ZCfBV1w^1~0b z1Px3Z*F+*~!~fP{l)vunV5Or~9N6vh;peJGDyQH54yh|VmV!5h6+>^-k{mqw{U3hM zz{JemUf3g)6WrVE*f)<$}VF?LY3QRDM7KAvDz9A|D(Vh99VP#m_dVOWB67aH~FAP!& zV_dCyKmYi0cm4eE@%irE^BvJNePSInojSXG<$SH?=W1RS3(E0-z>#A^JS0!tCC4j~ zLtCBw3}1xFT+Y>CtSBO_@aCRq8e3pAq{-~(FTZr9nP5dP>&KsdvfO_H7llrZqEbL7 zxG4vyZit5hXoI|^!}{B!GuHBDKrIZS-?Rd*$%p~P;93N@`jm`o^v&59!e_nAQt~Yf z?b3-@UqjqH|Hcilk`DC)7UBSvWfWljt+t7;IY~3tzmvUgEZ69p1(9QVi>fEH?-Zkg}3~3R4!Ql@4(I`r# z0%#}B9&R1YZ6#t;*r{KC%lwIQl1nz098R3#jleX{uxuLQhNOWZsb^HIh(e}8)1VfO z@Mt#zC+d*3Si(!9CS(uN8pCfFRC+BG(mTn5k>%h^`d<^o(e#Zhj|#gy;hF%}Y}UqM zIG7Ev>e>JeSmAM?OtKPaM=*d`7=*qWAq4_1GCs9go{2U2mFLa{s>3VXG)`5I3ji6* z?hH2>Gc8mN>kR9oK&DTSRLW;Z1~9U9kB^;V|MB_y>cts_4<@I^;0pe0t@p+kEDMGA zjtt>~>h!lN24Z0P{{82_RN><7EJ`-|u*y6^7E-U!Og}dbj;h^hfy-s*Vkt*YNUxy= zNJNqNkOP>cE5TZ^X7~H=zdzIymX5xRGt@LUW)NvbUm!HeJI#)olEs_XyVa6dFWAB$ z>EB;GvO~DE`at&>?o?Yu99_zjbWf8rGgns!*;Ex>0tpisWBfYkb0iDXS_ zu`FcbUVjRx0SjRO=rV{b83%lT(m;t|#43s?grqvyz!y#8BzUCW77L_hbl--O0_9Z}eOkA#y;Hp@tFczPX^S3PVixrjSg3wgID^ zl@zcjh7eokd{l%nB%-fXb}XdHBrdx$7-|T_N(&>P)Qm^7Kgv@sM0(mn0cABQ@~_AW zE*~sUq4{AKlc*kp+;Z`wpCC-Qi9456h6X|b>NWO?d`b(&!J%k0S>J_n2iKV1`TH-1+mzLz0$6eRu2zJQJYEbCgWBDX7Cw%9c2cFc=;~{Il;uK z`&bxO#)Qna@;A0_@(YxtE*(#`JH1!!lr7Dbhh_M2nuCbe@ zoSj}hS*&PbVRZMh(nUAS-d{Ve%?|VAgj(c8-$6LiJH_VEg59EVA}<7aVGklUhu`+ zw+h7|;xJ8)O~B4zmf@F0Kn*1#=B>nDT~-&^TexL!t1M?aT+~NCY&k>`gis~paDMa+ z>TgES=w)G6Ms9G%$CgV6PPcJH;1$E<^Xw*Kk7`Q$I`7@%-NT77O1(duDEoVUxH&Ql z=15vI8GW2st4dKBKF+bwrDFYA%+iF;$}qO18^Fphb#mPMw4An12SA)6QddjLT8Qnl zvpWHf8%igsVGG7dYA^dLjF<^2#b69mXh|qMFf`YK3$y5OKgp!dJIc^rqVpIfJN|nX zlH!2*G`wE772D!D&7xxKl!mSl;!$0~=zMe^t$m#x;04W5+T z?jhnieGJkeXocnIVUf}e=E!`1qSaJwKG4Y$-K@232;~cM3~!&C>TV4l9|=M$axF)E zBlpXuXuhQNjbh({V`X$>OnO-du8UUj-8j_9q7va302#iSF{Up%R%!Gf1YpxUALN_f z8U3PWk^U>Ea|C#JOLp0A2@DIhJzT*kVp(H22$E_W>!lqTEMdyon}SG-F|9g~9mG*a zr1I2vw~%Db~#hDK`GlKA(|8k+ZbG6@` z9=*0CkBR29&UZKORql)7)VB|>Uyfh@Xkgxgq&pKXP5@AO?2y*zL9fO^AANY;42>NF zOHJ@cvz!cpp{%N(Ja&;)5PUNCajK+@4MnS&MEDpqZbTJ7tAM=$dImMz3!%D_ z&-9HZP9e&Q4*#O96-HO47f6%fG`$|`{AXT`Mz{oMA%XE1+aJ`Qzp>U7f)v3NGGoH= zJmf9AK`2(j)44Ae0f4@1O5p)emI%1@+t_blROWsgLkFJB6^5hYwy2zLq_z1Eu8J^j zAyKz0qq?VK_3RXKSe&sop@os3;t3u)BF_t@BDVSN)OZ@gF^JSXg{y)dZO=J=_;7c7 zYS#SwK+&rmGYw0W}JUF5OsJI_-IX^R^zApnX`962GNGcT6>jvOsixN`XMtn+X@T95dl)*g7h38fPKxU8*&;cTC>q@?fdQWx!C zabkfjDKLKo@hb(+N>Q>HkDl*Ap+o?yVx`j7%vy3~16R9eVuJjvs#KE*7MBiNAPE>< z*-FAF0#Eta{I~kKhPNi4>}JSi>7v0P39v)?r$J+?*s?RX!H4*!GUbcI>+O1_2yK&| zF(B1c$BJxE?-9q<|A8$Ug zfoPXD@$vfQ`0nhf^z|rmL)AiBa&&N04_=tuxt(&2DbgK$2FIN)9aFCAlNsQEE zUuDRxV`^+3g1ZiZS~JW6SW z$0CmGD)L0Je_a-J!Rjdm2LPm1f&xpSC^NFNPw#L2rn7)&!bk5+y}6M&4(b=WB49Xa z5l_=_D+{{qlLUkf<0QcJopG%QXiP^FG1nGJ`8?@5Z+BMfNL(dC&8;r*G7Jqm3=1}D zCX95f22hsa^v=>*HKtw`4PL3K#amagz=*R=)T(%)kNxYFpc+|j@qGW3A!)oyOVHdg z(;t*(4xWGWzC`F8KhQ^8_;`U5NtOZL`IGcE|^n6Y-Y=72|O|; z%4)O4ej4j7FWgl>t|{klxhc383mr!30+v`h+M8@smabhu$^7guxW=#kC`QcvE?|IG zH0+wN9(C^a(J~Fz<0QR#7r}(dwEi>pqloGE7;cTO*Do>W4Vx$RhIt7JWnY6Vu*gvL zxI(V30MyUQ_Yo5>ak<` z@~8{OgD1HH3FN!SB)erJ^?hc8<@uX)(>k=6$Sz4Gu8l{Yni*}gf;OCa=5ngpusk$2p&DjGdJZQ^K(s)STMylWm-W zrby7d`SNt7Cpuv0XFW+R6qsI>V55Et%`RW#ms_OYzA3!;v)vy6z%r}LEkP4Hqe745 zRm&GXn9>^nQYco*l&G#_H+`eMIr7o)A|gXDi86)QK#Cw3bAxdNkG$0qY7C6`N{Usu zs!&C!oQ+C^Wg^XS9GhpkFh~ZO+#4xF+r4;mioP_L0UO~{Nowq{pB}byn1W*s^dEDe>N}A$aP$Y{qjPyyTA|tqH>*CoU~`AOh2Kh+;i2&ma$ zCfHgKRMHSZ-2j@P!SJYwD`o}G-aVi6krmrme1kb77|cw&WDLzI1)wPW4aWB@Y^maJ zIU4Ypw@Tq-&++C@w%nuLkBY(ppk}D*#`34LyPqDe-#&dfdGqDlzyI>pUp`*_WMJl3L9Lijp#C)`3rJVR}d8h<1W!zy}mGnf&=~B^wlh-~S*f;j5-iqOdI<42kYfM zpZ)dvuMG(8*Bmar1%=EXMa!bur)HTX{X)C2RLWEuP#EjXnI2yN4!9#CDHF?{d4FsZ zB0CenPVWx0*aw)+OlD~;A{YOuXm59YokW%1Gy`oY7F+sGEYpwlfS5+dtO^odS=Lr{ z_cNB&KmqH+)_)W(Y{pEf;U0oNzW?A6&p9*hKmYh6YjKM3Ngn9^hRY(B${+|%)MSn@ zhZliulC!(>GaEHrArZc>He-2)z|>@xP=R8cQ^)pn+&L#vipD8839YVk$Mb8Ro=DYy&;Rt;IZCy*{}=J-f48$k3;((;W#6J3F)nfg9qu|0gEn`w@tEcsSvDNI*ondLMI9$$_7I??+ z;}f+Bxc$k?{!%wqTd!dq!Ildn<^w^lq(aDyxTB+wS20ACn#Unh(MpZYHa$oxFbG5P z)&2=|!&TGh(h(8=TVc4D3Uu-u0IK4WsFZn3=16ZJ&o@V3|IQbkebw;GuS}c0cdYBx z(c?!)%(VOa<(lCWYNQ@UZ8{$=JzTVF@;QKVrPG)Bd$ahYje?4OehBGKA_davjqTqO&f{ZY9)M9 z72A?-f!#}xqr3MuTiX=noL0+%=4*@YXFN`*g3Y``V(c+ZqwX_^OH_GM7+0F-hR>Tf zef2?zw0kD_qQTu1vlM^ju*=$j%@p!prmjV#Ns}La^tkwtaM)ep6r)GmHX5$B2i^^A zVnUjUvvS&aQDv>yX-d!vc@G9+7^-a*9vo~?MqCwkY)YHC;gIH=Ck(+ukISJ%vO)@G zp-#oXN;^p3c6JJSh_MQSGD5o0-$jWlGmxV-S2+qIJEnVr+@nSug^C}&o?IwaqZ{nJ+;V!2yDWj#x=kQ<54zZfYpDs-SB;Y|O@y!x$OoVwySM$WYC;H7oQQzOXRI8%w$MNA2;pxP*7%%u7i z14-j{vBvaTKD%o@!9vTgIG@~h|4C;Ls4g6dYYpG=ozKF8m+TP))e3gOgf-!fUb#nV zGiAc5v$)|F9)x&qvq1(hy$>7KGv#jv5e!i-t$9P;EpfiE679*CFI1yS^^Tn-k@}y5 zxXYa3liQVWZo@Sh5aW9XxHdn&w>yif0(d2#h{W&bK0?d|X1 zee;L!e)7qR8~X>tMdJlzr`fT+9VDW3lBzN)oy`SpVM;YfD_jKA4Z3}9*-`1tVjQ*x z9dNalmsnTPq z$X&+W*iGr|-Yrg&G@gc(5#wIqwNicY&=ucs8@`B#Ijc|i^riDpGmEN)zIaDpXU(BG z$#$bkGI&}AAF4Elfo2UwYtxAn7@7u#IcZDH7jIs@wQ~DZziSo8_RTlBCZxKJ zQB*9;WCUHV9Nw!^tu#|`xL^79I*+^sK>QkGQ#WxV6fvR3sTH1SZ=CUluQ*d*sk{mr zPYezRQ)%*(Z!yM>K;hqT$wT@6huqombq7i64K@;X@#OFk#HrD`G5Ao23N^rqsF?t0 zt$_>-yrK*J&dmt2XETX$7r=o?e?FKr6N-vpXM$x{RJ)n^%9?C2nk3DO>ixu&@s~+u?~AO%vHzOX!T+FjWRtZ#%%7ORMJeRu&VaJ=Ixa zIS=nyIah+$3V zj6I`A0CfRKry(2;vY~W0={|v0Gc{W~C*uBgXKk%V;WX$hGF8HaPP$aXYzqoXev>okDykEY;9|n<~^!M+K;@jNjYd;;Bjh)Mm`{tXk-5WWB_&BN5 z$j0jqHX7`9m8mO#gyWc^ZlogHs}y{22Y=Shs;^R*MNF7XzOl=r{Ta(*3dP2Z_1&l` z)aZJAAgN8>^VG?{`grZ|GvvMf;*E2_|Md5NeD~EGi$bKSA7J9*>~hY2fN18YV@faYBAMUYh6WpQ#JRFKB2a* zOw%^AV2GN?B4LquQFmNY#`IdRXy58&d*sUcpxOnPvh$Tkv3KGz*tNSKS@LR})$+$y zz{@G*fvl-lT5olTfdoTV2{k~Ge>eb`X}nUT%6edqzfdNtgv_X<>x-mPf-4QJnLAYV z7C86@0Xte6$|AL_q1J{NWO_6P)6SI!l&wF~w9Q}}`ht};iB`NJxJ-1epiXC~4OU@c z`OPp8k9Ff$w-OvB3!S#Ps%Al?zN7WYrFKZ&JsO||e@B^)C5UijGySOFL-VKcesQxS|NE605s(NyJ*-;^G&A*5R8>Fu_UN9ooLbou;X2_W{b}yGqp1pmvbVfw!OV$dXH$GuCJ4GdE zpv2V$PEpr@Y?^%`rD^oXO`7FwHrpDS$zm9i1QTZ!w(H2Zdm;a$ZsSsEWf<)eU}nhO zLzc-{tb;G_Ji?$azkCOMoXCV`7y-c9j|#48#PV65Ni2F)k^pa>->4v*hwPmY z$`@-=+lHc7(=^X1Zz@iEnjlJqi=uwzz+@-6bje8L48nwJ1@K3Cz+;18f7{{nR4PT? z(ek&$ADvmCRS=DeeQDS#4{kZ4faJ1}2@rJ5*chY-;yndHLCkc8diLfweN{&( z)CK~AXJPUkZ1>den!#RlqpLCwZ_1}CD5~qdlcHWmXsT9xprHcw8hRZK776e|U~!e_w^jB~f(tV9+DJ$FX^QXxcr{ms|Zit5ry zYDR6`pxKpw+;D8)9)nUnZ|YGd)w)G~V4HNr+y8l)Te`jYDL~~taGU?HUh&8QBQ!M5 zThlr|BV^L>Q1&47)NEAaGTX_m7}Bu*_060XZ_;84FJdj6DB507yTpB!* z;%XJ#UB~e&?2DP@eurz#ak?0wFe5)T<~WO_7Kvuv~bG9KPzA)R&Nh!2A!cyG*3PfA6|a z{r0X-+}>&IrL&%v5wL%A@Y@%<8pf+LC9X4AnRBHGI)_;Fs>H~NAo`^s4G68*KABN4 z+gssJ`?lCM>Y@Q6KyzZQ*V1`w$yv=#^|J&>>k)$07lSoV4%T5xNv$tVFT^-$532IB zd10V2oGBri^y4jJo9%5du3>PTQm~e8PN+&dIxmL%HLba7p~ieTQ${jFpVj`9v+=;_z5W78&ji(}*shY7@&0 z{YnR`z_*lfLlN}ytb4Ft)R4E8<(Q9+_>lRt|5$*)<}vwgWnmeu`?PdqU?q!8j0jEuuv0@knV(GW{fpRjv0 zdE^QWXY&H6RLOCXwoiO1s)kuwHaMIF8J1H*8SI;3#W*_CCUq$F@e^}cr;HtBNtN$e z)E{SUStjgkMT`cOC0hG&!34C5)VWrA!UZEjb370NV6$#R0HO<~lW4*YLq)EdOm{Ji zR(G(%?<^FB=txGOcn$KJezV%a9<~J&{NI1La;n*#DNqZv&QG*YKmX;Y_dmTqxwy;# z8P2+4@Y94o-SzOv-dU`aBB4CQ{^bu=u#JFjBFjImo37dNR6OPntl5PeZ8@yY)jN3p z-SeOR{!a^d67N|Ml+`nHcG3(kXS^v6sHpvZ0_m6Ol7;~kkKXcGj$#CV+TaF*B3Am- z0T4C)cBM@2m?5skDtQwtG|Y0nq*Z@0`JG%=+1Hhix0}zz?b3MOIB}MS%r!~v?NEp$ zrikq2$A`K?0jQzt<$N{`!&mRVgh7Btk4y!z8L@Ohu(vv%)*mYa0xHM+Gs11IO*#O` z`SbGP?OOHC$s}GamJW40VkFvMOxVo{Y(xqcBI!_P%H?FYXz(f&N`LFr*g}Y^PN93( zU=TF)rTg}8ox?iIfF4fY9KZVJoX^bRx?M(LD8|F_W!lRE;2MW%7uD$Y zAdD7YPL-xOqoxQD5*+x6m|8~huzoke#bOZ4d?&nGFcGlm2u`Iey9WQM7;pMKsal)U z5I{0e*(AJolgp~@#nq`vZ!<~MX7jk!?=Jk_4Cql_GcV?S%oH>eV+U7LLn#r(t1Lqp z5U6(894tU+qr~c*klfjx+Bo(7lMSKkLv2T3&W6!CM*xk58^c06N4zpQ;51I` z%71ix3x=}GTy^{Eunzy@==8-PPAdlF!g_#f(x|)VK4PW~sB9f7bgr}A8VlQN6KjJr zKCz&XF}A|{vq;&>c$@hCr*FRd`hR}SEHm2rfBx71O6JUjlu*@KMPh$sk0V>lUq1-8 z+FwLn*Q@2f-ETMASxu{deEg^sVx)$)0B-nHVfdQ%=}yl5^dJNu!F)M+6|T`1{|Y(F zmuV3qC9AKove+n85E!v?Sy8IL$;Gc)Yl^4kClHAc%Q)z%7j#gf6}@-?<<9*&zzVjm z6>W_FL(hNheie4nyoH&u9*1)6S`_|r1h|4B8zf!7zSc8^L@b((Kg>n}a${a$dv@Zi zU|gmgWalZh39@S>woHHXM&dYDeeKmKVV{Y4uU1lv?P`U8{2g8i@92L0L^meaE$sZ} zn~bj(x}NClJD}<6-Z;p`NQE#aB3R2C@uGK zJGGVVdaipgZYlgoJB{ltA2^Z?Q48*k1P4>HoTNK{N*8WOWC~q&9@T|dVyN0(`X#v6 z3vVgx;%w1s)K-4pgmyzwG4?n8I`)0AaO{gdZZQ+&f*(7x`MlMbw#!EJl$riJ`aMIj z5m28$0*#Rb?%H8yGp}5bdi!+bqX74|i=8=}vUTOUW=4@)WMMs|(+?jPBUwIUWg*af z40H3?hoGE-3#NU&$27No4n`?U1)!5N8dYUbKp8!rzuf8fojE)xi8qv9aWL4}+Jio} z0lz2P$`??Iu-AEvr)>)0NW0k`@bbl1wj`XtK6d=|$xqie-+%wZWoun#13GKLaF_k1 z`*EcM9)=qh;mjPyFE|@t4#KGtTCq?jDdqNXv(*P};q6h_1uMdj+8=bmCL*|TP^FOY zWuY5mfXgNd zfRtij$PLdr&oQ8R!NX)%^sT(R#~4L0gtXjg20i9Q9b9Ki8qS@Ll7a&iNaUq77Ytp! z?W{=U;wif|^p0ANkBVG_J8~4v7nQ|wzxX_v>@GaFMg$nr{6)Ke*U+AG1aKSbE07>t?P%Cf=D1&V2UxnPa;O?^T` z1b(TvcDK#%bKF3hEG;;wI&7e1EoiqVM;FXo*y-`zm^+YY5+Fn~(vyH8Hs)sR zNXW`@q@%Z?pT1#>-K`;F2GbKo@KV0fTkWG-0F086Q720U?15?xpeDi~c;_oRwWv)X zdVviju`)Cb27fN?o@ZsL6X?Xs^Y7S~pczaTPJRCB_V532{cvY_-u2H$j$5b0?B^Po zFpjufJWIq!p$J`dbEuQ(Sk<$FyAmj>yYtV2*}0_~>w!Lu1XQ(zbtx4eZo5a1z+2)d zSQvyB%COpJnzjXyujniN!Z_4w=J~4a>1C8D|8c_ZZ+qU6I6o^vQ7Og1SPlMRfZx2A zBmZP_@6@2%-;B$DC88jWELP>om%!_l>WJqm@3OhGbK@vy4tQ(BiZEG<&(BUEa$Re( zgydFVi~%K#nJLzg8(|hpnMe@LpMQqiezO!iszlotd0{vIP;qATv;mVWQ-yS*In8Tm zVN5Us;!jWdV%Av+jbLLmTVZ!cj}T8jP`e0UwUf9!{M$U`v+oANc|a!^pa^ zR6a~e=@mU2$L9MvSh${&d3;8Y1pt;Q+06)T2$*Ix7#xIN*iGfx3 zbKGNg7PtX_${p+2Zzeo-%7d+1(}^m9=k`WjymgL@avHA6F!N~w3*c@puD*UT|ML1D z{?q?*@#?iTbpL$xPZ`Vey{m>ZE$~^rv+ytenjuyf&E-zBOf##*swC&p@#^t-9GU0o zHlf}3@;s_P-q2CeCcsV)O{6e|BrS|ZbHK%)d%3wTC%hbKtVcRVF))h?NUu^W zsZxuNby8k!gBxIAKOkljpFMGrDb{TM;e@oD&fc)>Mxlx@e?xn)6?7WQwSeG&e5V(A6G?Q;K21yr6zs`Lb@abmJ!3Im z3%}TMDtMLKK(PH=U?Oqk)hfGyBd5U0L%`Q7PU&1Fj+G<82}0me%`|+1Q8+SfiI7nv z{1`RGE^a*t#!lrCbq8SJBI6BoAOmzbAqZhi6qREX{_RDxF)s=VO0^b8gFIG=yunW zn$A#wtBUK1D_!ja4pu{1PXf857IYQMrHt+MBI1A-ox4zfkVRmtj~$emDE7Yl6)CnH zIZ^cIpFUju{Qh4)FojzF$NJDwlBE`N*5|eBy`X!StYP>7%~AkwJnr9Dz9dLpje2bU zhd17CkM2dMML2fozXez~>!x<-h3qCX4GI+r~|hT6m6NZ*O|<{MQ6$NrB4<@Z)WjI9!j5}5^r@yDUW zrc?)}6Z(;LrQK2!DGDZ5Y~ehEY=QUbAL2Wt*y1j(?u27}Q@If>L|PT_DI{hx;xmdO zvz33Hj}xqSqB&HZDki6lpbrnX*AKp$cu&!M1XvgaTG~BwM$9-cA3ZuVC2_>uvpmh5`dB;pvaOMypH5Up1mpab2}jF5}j# zJrTe79WV*LDseCbC_=6V&Zle=_^hU#*c4?#&&t?l0971HeD<~zwJl}NoC5A3|b0Y#nxgiQ_z3Nty|9JR=)J<;;a zEYhL9gCg>$7%~xTpA~{XxkL3{zPpfF44+lpmcR~8HcatCMk}IN3-^Or14ecO9Kg`0 zB>o+D^lB7X+A8alTZP)nusu#GcQAw)QqsRM6;@fOah}5p#Y+!<<-|~D{f*n<&YbI} z(iV0wd?YJPZx?NoUAc+0(s!ffUqtd*=>$P)WDh_qi|zWEzeiFe?h-bVmcnN2uy)c? z{vN@(kO2_<;n6rqGcFD*V>J@tDpI9r8!3WKM)B)QG`O z6jIF5>qetu-+_!w+2;VP20EJM#-kPj&HAMfsxCOYv?{2Hm?BXAsKL#ZHJhMXnYbxu z8YZJc?}4O@`0K_f+=NubO0tS7<ogTzJ6p<$&06C$&1^hzLS zW4PY8&8OnP@)jS0A<5L8^O0q%lYO^Mw`fk|&;{!VIB!`~Q!0tT22}=QoYxHm90Oun zE2#n<3wZH>Mbkzn`<UEM5Z|U zTxOxOLJ6Miz?61f7oLrf9E~z0M)6c%gKWNg`voNW^Pj(G1aW#V%aZT-j{Q0F0w201 zlo^1&8#UjF-`;NHK2f&ln|Fz14Zu!+R(L*cTvuT9FQ4^xyL!8XWJ`0qp1o2XAe;z3R#Pg`xts$fw6jqZIF3ev%n@&MSkcTp5W?_d(xnb3%!pu=^%}5s`$*ERxcA0s|VS& z*n_DOrPXG~Xs;Bc6iPVp3ndE0cnOIspP**G&Yv#YwBhv0RzVk{`T(rT&^-4Np5cE1p+~)p} z&9B4~JGpqr3AW)W{}SChkDC(?PuF8q%{}(%7;m0#$uK^J zqPh_UUJ>0SK&t_x_0xA)(fh#U-l2Sdo5C%U`3z}$^$5Ox!@=K0fAI_fOj&C5)HffP zs4vrSCSjk(TI!N%Uv3kT3l@3QvnE1XMjCx#(bMJe_38aJ0Wvl6@^p23a{c5hKaBy6 z!B`Ehex>wVNRhp#AoyRy$?=`uhy*h!_MNeenbCay5olC#aLP6Msqz?Nh9J;MZljBt zHe6*f^J25rcgF2fLc9NEMOP$Pq>;)g=&Dj(8|+gzy$6ealf`9bW=R#3k`0WMOnN&+ z_fZP!I50VFPL_}S>3Y2vT$T_4m^uhZJK(l)8+RtfW3_ZyE*%VUZHIjQ>;T!J4x(i6NS^@9 zvR`a#%t^s9%e ze$Ab0%>AtjlN;x-AM&segupG8-Xw2@In;sWvjlbdulrwzT>hlitEqw&L=n^5LnowO z3Cb1-Zm$rt?srM8Ro!I3(S;UL8}4ExO=?Rsw}@`0jJu44RHEe+7BS2Hx?G1TxEE~m zK?Ap8hx^Gz6&A)LKw_-b2o>xT`gkPMs!VpM*d;i<6ZfQkIro-AueU4BfMVQXbrg8t z1tW3ZZ^2gJUtc#ETCZ@7lZ;%_uEC-dddi#BkEd7i-DvCWs4>vFaYTYebagfQ`nIM{ z?;?q{=Xq9Q&;Xd#Y!A>w?;I`BHXBnf5UEZ;Wy7yjCBsLRru^mNCbrZ+!Ah~f3s0tu zqnmM^v5`i|TvBvzZE}bet&5bKTYU#VRYF=dlfRueP+3u3Hr;n4pMe$~pSolD%*|A9 zrddb?c=;n#Ey}it<>I%2@d|)M&oj2`O7}ZtLr2$JONdGYFeC&oeb1}rlx(9YG{X$r z%GAIB5DUn8ATUVvB-?sXWtk>Os1y>NfDq3o*J^Qi=cPJht5myr`d8|$;a+V%IvoDe zw)?5&P?IGGwM^;IR0knq83|_1NODb_nVuh^kZU6bO_-@U1o+JE)5ZOnCBSWP>_{3j zSr%~L`#~sbEQE9Fqb9C;Lvi*6a4xQTbzSb2^=EtMn-|1xRHY(sZjJSlZ)u`(dAc6< ztq{NYuiT}u`TXr0=?jnnKN5|ZEACcC-WCrH;fQW@G3hn@Qu7xya41ZEN}@BKd|>MK z?9Mmwl(wTS!P2AUDP)xtPE(?pQ%A}9umOOKkW)EHR8LhP?V?aA%Wqbk5{hr&NwB44 zW>jbtprBO`_KG%gOpEY>2CPca;^Q+-tezr$PO&M2ECRo>9u4jxS1#$80wP3SEqxg} zMVB_l1Qq#{#Lz&5u5-tnaAZF&1uu!IoGYAxoVI(}$JNje&iPPbhXpFh>3Ji)%n%d4 z!itIgnC{DseFLC%I$0_pDO`sl!i0F?T1Y273y&I#2`rK$lt+Ez%{|CzB87QDhUm39 zh#b1X%h+iZ4+G(yvbDLm$1*JuRAHBZk3JGOV^0IQx_dg|iMT0AXFBSj=qg%zm>D^y za(km19Fq<{UA$`i9d>lb_@J(-Xw}kGi%vuCrf0B)QHV2PA`kq>@UM-B>d&|X@>_%0r4;b3UAqw zne72dTq(>|_~lk$_uDHsy_!ovRl3|#*r*{lD;Ap9jVoy3pQzPnMLZ4L6=5G}^$rj~ zNT_WhJuZ#emv>{nbbg)4B7UFVf8e)>`|MUUb-IQrKQ4rNq{*AbLdl)4#ey zv?W`{T91dDV>^J}Kls?)u@jD4W}+8IC1}ljq;e%oR(AzVPYk63AxMfxm?R&0(TS~w z7Fl!MM;j?FCWaORL#D@&vBH)KDU=}tgt|;-Suy&FzRJNMVoI33Nodkdchg%)B{MD* ze&tj7YUbib{bKzjnjFK_Z$^R41A;+H9exy{C9LPhD4mmVi{a`WPTc3Jl zgau=#zDa-DNC|vghHpK&x?2pCW}W8Cvy4VKZwTA5C~|@-VUG-vTeg%WG0PX!=?)o6 z4-4*$h(FkMShL|R%g@ps?LlK^6@{guVNlLkN3DKQhD{;%5 z8<0A)I~K%rW;@Hcfg2myASK2|Pz}4|#IN31gD5|SLx>-g81?jLnNAB73A$?Y2l%jK z&Wn*MVlLjcfj}0k;bjteSfIdvId4C6{Q0cw_DU@7GykQt3N7%M{xLMuWhbxF;5@q{NS=WbfX*+&Hz%0+z?0-n>0|`QW?Gfy#-2BL&N(r?_+@9#_k%aGXHt z|J3G;(qz8~&gM^UsmCxy?&La^Ud{T;sdKOlo^~jc6;kKt)J+IbaQ5yEsAPOG^qcN( zk#PrUo?T=d!J#mykJ{^wG`BtVrKUAaVyl2mgBVlhiPPwo-Qo%Za5J(%bhIZAjz$tx zA?iYLi~pLaGgBqZmR6SGos=@u>Il(Rf{t^t%o>q_j<))3oSXW#Eh0>r{+qHHyg z39-J_+t=?{CSxu~XzbC@!CfOehHvV~#8S(v%m!GeGkDqOn?ox_h`ZL90v7`o;eDd3 z4g=#>h*XARB0FecE;hqu{Ce=zU=V(`N}FAFPlYgu5hqPm8_?hnS?`m$1R8S$fSfOl zQX`-zr(Fez zCFJJmhR<@Jd477VGE%B)=Rgk$tBBg7)%jXoj~xt6%Hxh||UB~3~Z9+2B5pa!T)Cw`OZ4d?w6NCM z%Il=x2&C%D=!R z8)4QKfT4YQ0T5gm_-Sjx=I=(qy30{a-}K;x+nauEO{L`q-;+NPxq^IhwG%b z0KJ{m4t-YczxF>2^Z(1eEV6zTYOe(ZgHSt*%G7eIslGIh*~r;}4NOo)EwK)eHTm~H z{&4^O&*vX+FP}d+ByZ1W_0;lyLYL*a21xoo4OO1ieZ?_sV06|o} ziU`qKCnCf^gQ}X7q|8`uz|(KZG}#tr?#5CJR6RbzAS#^&!9?ghhCxjqX^}~Mj?<0) zfa!=dlO9d8-ac!k@=Fv8&R$#5Jjb#+o!U@Q+`>&P$y}oL&?nqPI>O^aL}E&3q=DOL zucFRh3n6{nQl2(?$)e5an5TO57}Uj7TNPn^pBBMcRj;CrLxnCp6(_6BdJTo1@6Tw7 zP{7xFVWidB^^8qt5w}s9HH2e$4IW=zqRNDtP3kIH1^~!NBBSTh=0XYdg{;=1xYzWV zE3G`EicXVg>U1XBRp~NwysEB#%dPRC^(NV^K?&EEkBmNxw36Cgmk3Mi?}$$lcNPavZar4n<2D%T)gI<{0JQ5deIjZVP)Ib3{prR2t|XPoWCHn_ z0KX1~0Kw(9A~jOGcZXxihid{BVJqUV6WquC^n17$>@ye@ND3>dPZ9pDyA@uEsEFbb zEk=Nzjh;xeU1N989Jvq%InpCt^&g&o{+GLd{>P91&-332cJ#rgwE`&Za~n8PRLX7L zjyWkZOc`hDd80+`X+vb1(s9t8dSwEPxiO%)dzGNq9BZVrAgFMaDPqD^O=wh%iP!QD zKDLbB+zaiivMSU3_ag&JM~)`Txu(I(%nzJ2S|b-gLsH90V$>WwQu`PpBYyfI^vim` z(!oP7bVYqV9wiR(AOw#4iH#7qX2`X|ja^AT1iyrxmfSR6g0xbBq6Sz5kvTtJXGhNQ zHNXZSR;z$1C_t;aS4MxS7<#h$!MH(Rs?cx^ETYmz=a_XWp}{G+PDe~0=nRGiQRNfH zBG@*Ww&qvo$vKjf4*SvW&TXT$r3RQ7zXW&?zSXir=tVub+xDBC{PgtUuQxw_bNTj_ zZ^S?rebc+-Nn-$PZNmZc$fF@}To+6Yv4)U8eG_$dLXZUJG&-%s88)Es*KWPq0vyUc z&!x#}{^;ZuozHeZEZ;%Z7R(K*RMyB!E2sG^tZ^K?`{fYNvlW&P4|bfxsS1{iM*I%K zMmS`L9-bN0(+;n4Nq-SvTva+HE!c$r?7H9;5NBu$n!qSplD8EnlshPIG6~jc;+`hB zDg9-Ip}(8S^e~YvwT*y7pLM@tt@{;s`E355C5w=(IXu^!qNcl_;cFH{jG6 zMH&e)D;bQ?AFsA}svsQ}_wwnK8kmxiCD?Lx|1%AbA00*P@EF?Gp@ELx&={8`dn7SS z0Qx`(L&nzey2f=~?SDcc(r6^Z;Q|Dt)%vtA_aB`bZp#KFhUVcHCV(^L#IRlNX*Eo7 z&7kX#Lw(E0+=of6Wl(JT)#Jz^uE3Hy6?GVSnVeKp?2u^E0@!WJWC1OQ;(!?WdVvE0r5hCtD@S519yLWzN}f+2EED_b>HUX? zpT9c2e8moPe7!>HAd-t2t>NuZSU=xfrxqx3D7KGBm^EIha1izjVoDiquH>*`SiIzOM3q( z@J1Ec(wqR|ViC+a25e8B-%2F>a{C18EErSZx%n&rLLX0c8_lz%I)Nk>gN(iikf1dC z!K%zQ=kKjj@LYLq3I2y}7A1!%9Mbk#QrQrnyHPKms2vnw$lO~;>0q0Tb^_L(9m6Rl zWxk%(bM)aaM?Zah{qTHwetY@!)5q(du0CAd+?^kFAVX41<{1`@{`thQawZJ=D8ybO z{r?RY0Lg*;3rIP!=vSduF(pXFuog$dBD7N_I|dvT3;07b&Z(8RbqUhUIwVL}#ihz> zP`TBHl;lGNOJFk3NO9*&GL)>_V{clJ8rSFpPQX6frw)XCCCvq5Z-IKEgJs!yc#IYpWjYoRU z4)Tv^VHYP8?PRZBT4s5e?>_%ezrr{U)ff%8kcg;BUvz<1YM(;y@8U{=L1qG%y|=2Z zBb|lm3?>F=-x_gwaO}3EGKEf0ZeHCm!K@DTAYXL@sTTHa>8zVDP8NjcKjIeUe>;XS zxj~_naSFT0F30KNcTzFK#e{}$4V^kgMpNFgFwgB9Xw@aF;_CF~pHF`N`0n}P&B@2d z>p#E${`R`|z;=z%>L(4Skk7vCz-VX))nrJry<^^QQAzMp3gSP51~H*Yt0IjK#`D8? zjCyJ;ioe!Lqu#VLW5ZM+1Rk=(f4+bf$R;Rug9)i6Lhz9S?GqsoEq7CH(LlErdwse$KZ|u@o5q|;% zLDo!r^1=tfEC&piANU-qlx6^LMq6lEc;?s#OcLw)SPD!f3CbzD~zUHhct>`udmA1E<;E-d}t%o5VuI%mRkb<@wtTGc(+> zV`4!aiOc@pcCM#O_ytut*C*h|{yz zcB~@j=H#_8AA7^(#7Og<0bS0*<(TR3&ih!Sl#kAsJC)OR3-e<4EE=6rsuik($VRW6 zC+G+vYg~L-_w~8ae*MlLpU?mC>8~$N^F2NL-Q_p0?tO8j)P0kJO4XFb7qAZ-)GE3g z?;E@i%{Yn?hcUguvTo4FdGu=CxOd}mbA{MDvD|KP1>O*0OHK0o;Qgi_BTf1y{=t{| z4TMDDSU}LnsEVt%x?p@nM1XG2`P)9ZF##o8M+r_*Y5BTHB&3=?kyjKx^qFM`0EoZL z6ZPLh(n&K8D30nNa#eL~!N^?^=!V8NxilkcZ&!y8*~Hv{w6h9OyXcguGh1B+v~t~{ z^frQJ89i&73bTR%BsYj$kXouEAHWzf%2K#->(&10)33sQdQfpgr?@=vd9ic_Se{#8 zkF|RFl8UGMlgA(Le*AA&|M*Y$|NQan1Eafx(lkbzw=Z9(Gf$6y{(t}3jC(TG_N?R< z08oh5%jz*{V95}5gNIe|aC4;yniAt3uPXGRtK-jE}2)h-G4RqLRYp#?kS4!T7%Wx;_~D?y|L2Gi5qmSd;7LKvoMddfR$)ZCvb zwQP_}SZL%bITnr9!@NnZHXyqT6|ui^)gEA7yY{DHIdQ7d3^*l{guaTbM>h>P)7~Ir zXHp+oH1_k!)#c+)r;jIJpMCkt;IuiucG+hhLhXPwT~Y(FMjB9dHuWcdDrO-IEp@Xh zpcgZDwr*Va6%!dN$}qXdg*b;1mq8&lVb*n3>k8Az4h>rvG&eo&M}L5k`!ML?-brTb zz#~3tO={}zL;4GI61(H2x%g1_+&T)Q39!$Xu4&H!G04T!;j3aB>zkmYu;2`6$&oaye6Q~hJQK)dx%;~gt zxR_1zL06`W{T=K@+cGMm5v-x1clxsEh}WP;6{O>pD5*Bonu+EEzVNq6BU#4I>b-Vk zjs!JlFF}J1rsSTl9mZp^P( zgAwb7KcI2X!IxU0nv@;B9L93Lf~_0Z6|%|^esT|QI2S6mhI7XXS|*Px>v@r z7WM!arz276%nFJQzf3LtGL&B(T_HQe?LJd3Y9IRkqC}KZ_{Yn~HA3WmrBKs24$XeiyvicL z0?kF3S8f&$5AC=Ex(c|!dPUi;*t`H}^I11)1xrSCS&y+U5qUZN@~f{w5(1>=w9c!m z_dovl)AjX7U-V5%RUM!KGB|^voytv{t)R#ZSr|e%lOkYVIKaQQc6BhypW0NQbPX9v z`N)6tU~C4<5SPz7orDm9R3ki-awBqceH&;n!qvX&&r3}s?8 zn_A*bM>|CI^#1JF9^iXZ0v+!Ad?$e1h&;x{hw_pb4GxXvEvLqvBFzC$;Or0VWbijUcTrOybARX_{7v)8Q<%dDc|NJ}DY2xu8CS_I&?A--7L9<$Wmn{Ke^O#}_&BwUw$0u-l(8Y?%wDs>|eyNDPmc z<+4m6_sFAxt4eT~<5OKkCtI&UA3jS;)~hXbVfc7lfmfJSG)Tc;F24XE`mz35-@WgD zg+Y5eh^Mh+XOcLq+6Nx=#eD9DZi_@kxx>^}cF{m0v`+KIS2yyN`LNcse*g2Ik!_IU?5)FE$&@T08VPB#YGAzq;z^mLmQOtvh~)45!rsk#WyWVr zzD3$j?dOL-Wr&z*U>82b0d7Ydny0x}GL%t`CY_{H2d*wq))0&vopN1ql~m^QK+va8 z9aNXrDj+Q`B-PEi{(@<|;#=`mWp7>0em5EuMrS2-c1INfOkSQ;XVzQhi33WSSA!$4 z#44LW0Z!S0Wx%aQrNewk=3tO*Strlepr=*HEeljO^*h5_kO5yn+aNlLKoZxWHUMN4 zwJ!zmu`WA7$Tvc%LaQJ?7@%o}qtQ>=?M_*dyd4KzKbNujkufC%U zPWCWOM?(G7#IqMhm92CDJ0DM=84JHk%0F%vBKcqDb*rlT)Ix~>H1e9pL*0B;TWEj{$ zZTO>D@FJmH#e;{2l^=ZYc+tPVrhR3nVXZHRh7Pxt>d+5g002M$NklZ?_~sdlv5G~2*SFn)dFfeOph-L$%2u(SQd4})y9EA-(Zl)Ar%{f zmX>8Jitsvr3-eTwv0lS6MwFQjSK8mYL(p5LQA(C(Gub{BsQ0!y#IaOzflIZEBpEby zW+{JNY=*Bk(e`D=ljnc>`TIAwm%c{tFtfiq|LV(= zw{OoboM<25f|{T=*c35t{nF9o$lBvYgibKm=oqUI$cz3DuRj+`sl+92emoJRX7S_@^loYdI{L%SRae@EmaK~up4T)fjK)k%4;es z8VNai2RFKo8M3dVl2K%e;6`j0ExwXW_eHb{HD#l}`1Wgu8gH<3V5fA3OUVG@i8&Hh zOsP$7<${dzRgl&pU;;yes5$y)6dXo9t$jLZZ`o$*0tqsC;2Cmt%FqhDd@2K;SXhmG z$AjOS>dN-fycn)_6SS5^teJa!Y3T#p04h)eA&ePF9 z5HZ~d5pRrQl{!I0bjzVMOJ!KOq%qJZkneNUMmC1joMcjJXx`YLnu$Sh^Gpw9$OxV8 z9r-H-|4iKb@Y9E@v-gj;cc=F^M_1py`tqAsU%tC|(+=0?W9JQ>z0yas`WNnsL**4Ko$}=8ts)%0YS)fO0<-G*>?XL*#iHjTa>TF zUD=e2{uOw=-QDl=LaJ$aaOqpsKmPC|tO;bF8YT}q2Z=)1+Z(~8AUuccdxHW}pMxTo z0f^56ESi-HmzW6^*^`X?!vG>COUs9&&n(H6I03Zm_hbjHq8@l&D-JIOtp#AX<#8A!JR4`#u5nnrzxUtkzdpVpQ;hTL%hQOE^u)xECA3iTL zimcC~%Taqv!W#6Zk}0F`+C;XDYHDR8`82+Si2=-*5lXk@@UU28$dN#GPV;)AKdE_Q zJJ(e(#mYw9J2c^xd{>nPipG-z!;UL9S7mu(j@j3}-wDDO5-C zrgNI%Avv=qAZ6AsDrw6EL>AK6b1C5_)m05BHyUmDUY`{h3{I)oOpjqrb3{Wlb$ZCk z1TX{V(;I34V620P&xRSZ%MYhmouM{{PR5V`R!p^S+wszkOJ6u)nn|RegbobIR7D)t z*qT)7xl+PUW)gH$AF`i+%J!^e*g zAHRF`&Bb$lPp2Ea#r<&`hvV`%;u-739HV9d&GK1*;+02X-R$B_ZEg4K)q1-y>o6p` zV|9jbgLVXFK~H;1j1#bT=KIm^*$%z3mu2sa0e$z~cfN!}jpKl3XhxcsmbNqk!)DpE zT>3Lz$kdWmR%bM$hwnbUfBW~4^25*yaR@_R@o`<8=}`kRpD=`&Km7Ou3<9P=2R$qx zNaQU~W#kE}+MkT#zIsw`t`!D!-1sNkVvnQ}SJGkNs7txHsTR=ruaWAlQm2^HuJkhi zG>@AZ&K5*FISJ2saOe{a@4AhW+VXZ45h1dN&TQgqPHzD z3e9Rv7p3aBwxJf@I6$hIQukf8=}VCVYxkyCAbgtu0M|s%s1cD9MmM;-8%p?>`!SD^=OpmsermSUf^mNlkc3rMAtYaBq*E zuiNJA>$-gd8V1L9TV$+Fd^!8tdMJJImk-ZZx6i&Bd;8(``or_}cc)(+eRwpt@y)E1 zLoDHFsliw`OIKIz#fNcI2i+;!LM8VgVEOc790}UrCVc{P)qO`hIzM~XF^>-L7cyE^ zV{;aDEc56aGxfaax6eUZ8lb?pzY=CJ(*dyb@ z`;qbn7wUiy0UNdJW^rJ>+KTMeVPJV}9O%`68m6rqWNc}Q<XFG|~h{k0~B5ClS2c z=-h7DB>Ny>V0W)*jaLxd`5T>`nxMp5OnZk;?{3d-?kv0i@aOxpk8EuNi`m!a53>F= z(Ft{vA+_q+?zw1UW}fe>d7n`r{N zK}o82YN(6&)Ff+T#OQ{lFzQC4z|9Ph;Xun#f{y-_Wcu~Uh^le4Qn6FAaZx#M#)2`v zCZi*(x@yaf>pnl|28A(jEi`EqrO$J5-8JY@Qj=H!IO7$=ZR?YUh7d>q-~EZM zV^uI+HI`GcgIz5%kUKGN#r!E^xM5}dg+6u$sAeTql?I$Ub9j*L_gQvzblm`}+8nk| z)hn{q*0(25m&Q4t&FHo82?OjSYgzr{%UkBq6z;Jx!n;UmOef;UW zufIc66yxt|Bx~AhO)AGY%8-^1z6@nMe~RR8`7f{K6N?6Vc+#=WbDI^C$O=H2-Dl~{ zK8$4!z@3Fb94(+R+FAiiZot}zI zEdvQ6XE9h!=%-?0l&pe=amwnq7E;ab)ejJ;3n5(>0dBa^sFtAilTgua3*AhtkO5YA zADBNszacYHBZX6CSW1Qy|9TRc?KNR%wsTuJ+X16TuMA=uZfJWImGHUXlS_*!=#FnM zs8inZ)McCF+aHrk<4PS~O4+J&Q^r2mMN4-sNSfkLiI@)YHkI0IEB`5emQG^QJXk@R z(+-dV2JArr{uQ`Y#*TE>2ca|`Q2+%p0XhSNdN;DmLh!e+yS#>(8&P;Wx>MG)HB)S$ z0qaGP*}N_{)iANbmnjqtlNOeWkdynbz*{bSKY45E&nlF+~!22OC>v#)9YSf zkDNzW8c5lE{LIaA3xnJM(7`L!0|^d1)br=bDjHAxl!#e8HV%Vm_1#=+8y1Q^9N!$>0HCpDhEa*rQ(Xg+ zeQKFk^Y;R?gV-VI*T4|wYy>DHk`}eUNia|QFP3xfMy2fC0MMibr?fcbb9Q$9-ss%T z{mK2^^POGdeQJ_SSw2lVw7+CVcfeG$rj|z3u3Dn@*bZ$OF_nB%hQ6zMs%Zv>5oD$F zC7IC}hCytN+G>MJA(1gzQ38V_$I#TpXw}(bda(}cnwM%bHtBS)b{O$Y#CIzz?|InHE2T!P8ToO=0hc|pAO%UfPA~rGtqZWPp zLoD8Avq&P#Bq1?J{H77#=6P80#S zr3w6&CP zEHEiwJ>Nt^)|XubM46Zpu}-i_Tn&VTP@>6J_~Jdm3y8LwzOf>v>>)}65Ho3Gd@30qmL)Uor-MsiqV=g)~sMksd306HqUit zL}Lc*n7H`tQ$E505a%}<0Wsd=$PzWp_Iy)s4}e)7{c_ok;Q)&rc7r8Q%Yuc+(^u{3 zzj$|X`R?`Yk0v{wAFpp-UA%^Sz-~7IJk7;ow35aS^UbfDZ(eSp5>fKF1^eut#Cx@5 zodSpg(H7|Ngfh!*xU-N*7)BN>liJExIC+50a)5`Q^;*`&(2^ z-+T%~)Tb1p1d+HhfS5o`MhHU{$A3BgZsz?ij2{8`x(SA+{mK)NuX-8qid6=V?xkzZ9&V( zW~z(iV_?hvwXSGyA7w`iBiJE2R$myUz3AL4{W8I{+_%rSFJ^8nm@rXrcTc3-fA-j6 zq}pb~(VQSwx@d5nec$-2-_S}IlE7DzwnddSyfX*hLP1}RJb%UdKf9l8de}88+nOoO zet(o;t@!h5DvM_KPs;uyoy|o18XMKKVKL2l9n~Go@^*1LFhIflZGw@G<85NNz$rwo zS^tGAr5!rC{l!bEYa7NBRhfX|BZV6a9<*h@AU9KvG1(^Ic%(T%ZlR3zV346a<0zyP z-QliWI&cFWGfpmz8mY0;g2+J_i~?mzX>*yNLsDandOtQ|Bdek#K~nRV5fPRv1tJqL zE1rx5*-iFroSQd56bHnp;4>#EmaX;J;7SW)IKa%Xs>$T`iA479pnk|m9a;t;Jc&>- zlY07g;OM~iq*^|^U%VyRo4@cpQ|rC+N<=y%n73)*0Moj0FQ70~XsW>PSZK99wN>7J z{P2;1AUpsPa)m#CHZlK+9=cT%KaJR;N`*v-MsvuKcvUn`0DjV6r1JAt&8`wi(}r@^BOZ}y{#bQFj*F=e??!#S~N}vWZ~K>?td4%AZ(+G%0+W`dnzF>4|>)+Np^_ig>rXRp4;52+9JbHCGiy~R3oqq?72?* zg7}^GPRz9$-t(4cXM4VkrA$?9`fx2mdNl0NGo$>A7rk60No#~xv#3O&MlS2U1RVW` z(r^dap;!&zywEL3oL)T0;--rb>B3CixM1xCP`JPPwRs~6TSN|B@xNOG=OkCF(?_ZP{hLs^5b!$H(Ud8BDK6 z;G-QZkT|1M>XrK^8|c!GWvoT$VG9F?eOT$X$wJ?%IK7I>J}^5eBu&ZZj8og z0t3k!3e_xOws`EKbzW*r-%~wC2%=7?#i0yroE#)l!;Wd4Ju|yO;e|FZ!aK~ajILTR zksLT!@0n*YcSi@-t!U}!7U76BNr^J?DA>SEyrU^S#eO7g(I7jpS1E$XFbeO@Tjj?J zu&D{tQxBn5kXFNmf|^T}m{I@@2-0_d{NDZ}Q;ZKR%SYnIOwq&S7mNDPSaINKd&BhDv5QAE_ zH}4T?#$RMIuSJokwTi3hR-3a=ky1gkSXkn42aSjKS2jt973u!;B;}I0`pY5XrTL&% z``8?quVQ7%=CwPMa{QF1lQv&V&D#bULLMC4HZmB9u&auS*B!N0#$d4?%0fPMp^w@l zKtOU>Nyj60k?h7?Z{=-OXR~>m0wr`9ktfV9!~L`0qM_RYmIcRZJYg8Xr6dKVw z_KSLEFvME=BiY08E5nsXK9TcyeS7>`7iJ`jB<3nrxmPTQK6fJI|6(e)9Z{D4~J26Uj zsXL(Wt3C2!eWq!Yp)s#@P$aA;=YEQl?rv`dT8q}GbF3CxmeIOH+<$W{JlbQBcNM=9 zCl>(DK_?`0Q!v#;8>}%^+GzL8H$G|D`{j(VA(Fx%gA}oj=rD;hJE(UJ z(>&#jVg^r5R#Iw{g$vdbC`IYsUG$7NWlSup)>8@APkAhwsoKiHeT?!4w8#V=!5!5E zKv$Pn=6p*aCaq95A23CmlYu9OhA!W=k|zJ?w#11(kPcR8)yvE6{f({3|91D@ zH^fffm?C%l(@%dpeL1J@Qjz>dfP<@pqduh&254FMqfGdG_4ELUU<-!NDfilUF$QfV1A z0~~H@-JZ>{Ok+E3Ab#G4&`6x;%(k47)5(6NZiB0GT#E@a~Rgw~_ajV<+r+%)HN)jNTmyuGNcP#x= zBRBMoJ-gE+Xbh`N7~=Icqk`-~YqP64PeFKM7>{D)1cubN-bfb1S@n8t^tzq}SkW&t zZ(p5RE^Cyy2rl9>?2IGS35RzYmEq|}L-}%*`y4KmwXT_U>tcUikM;@N-$T+;=9N+c zYP|4h!4TyHC>U0dkv-7yub!nSQE-LyHS@RuoM zP?nux<)VnS!BoBgkXq`fOz&l(Bs3B8__^@hI!M=azGYWGxh8W_gAh=ez#}V$9;JZv zgKlLy04qmJC#aI_(R*S|Q&Sm=wfAsRkjD)56oBbwKCW1L9;s1aj`s4E_>@ZGsx}kA zx81p5t!>iHGYR=$STgpz-L3+4he6Jy$+%%S{j$oV_eMA14n>=b5{ zUAtyVAR8htLrll4&t6JbdvTY3{qI3Ktbb64K%l=piUk8%Qzltd6?vu3*=B~dYk3b} zjxUsGrFw(raZ+ABY0+m7~ExV3#-Oc5pa z#ySV7d1M$0#Pk;U19YZF8f8p9B%z%lUGqrvboFe0Sx?PSvJrdCY`UJY?U9T~B z6)pXuUrtDJ?Qr3d3pdwK=eqjNrRN619h_NItwLS@{PAZMR8wgjh+m}AyfK7&C7Pp} zam1W>8AOIB3xnp#(OuRHO@}X<#nLC+9kewewG4e)(9?)$(jg~Bq~gOz*UIgj*-=HJ zV~&KR&_hyt04K@{@i}p>@@~ zrFrNMb>X75kKc^7C)OcR+bt$Pnf1+Qf#&W$vre7Vh z*1?B-@dn5!mu5vsOR8W~ks}P&d>MjlEwgL97%wwh=wbSjt&<`y0f3o-K;EBoy?UM@ zQvGqjfOtAJ-H|IQ!|_C4eLGdNeUJ9h)-7sp!B;ugU+rH|KnE`PGEY++y_;!JOK21& z827bF%1X9U7yr#z>|@diB*X*Xk|&S>y}5`0q7c2ovRQpx1jhH2LDsN5sSTtxq7EUP zLmN+3D}XdF&glH@o!S+D0w+xbFi+aVO{>Zb&u3{3g-pHLq$5P#=f-&%WjjBNMA)1~Tm^I%`71DB1D z1DJxL9R_7=uXiwvl|fFqb&9Or{6EIa`Z`EKc|udQjP$zaT>`~#3Z-Kb*ARAG+3Q>GeW1*4wF)K)-N-8hg4{=#y%Y*htIGaZ2hbk7#A3uD)wFxxo zpd3wT)Mv_9r^K`YPiE+}<6jO|?MB(XK3xPD3Yc1(F~4J%2veqbqa+3YLPQl`{<4Ct zzwahewM#Xs(UBogo5Y4h!+KkkNkF)spFZARiT#{^^Ge;dvA~fe2Ulk|_t(Bn|0sSg zNb%gad+|2~vY4$^Y8Fz?+zn%X(;oQgp;u+fsL!O5N8y4gMfyTea$Fo=3|bjLM0E_UodN*`_dl_HF^`(f%60Px zfMGi=P_Q~kB0)$LDzz27{k|U0Z05yAYC5&3D{2h{(&%~$@1?%!C^2PPmsTTzcOS|q9^|=^hPf0U9dUbE?Sf`A&nLZUnzowJdalsK4 z=>VDSzEpRfCJy2U9|1;2%Q|{+%VmPNKSn;nxGY08V>D9lJV&#H8VK0rc11u1qO&F{ z3>3eT%)rwRNs7PsdCb9QTbZd>6pWc$s@(@|D`=j_yDiMcgCPD#i*Dz>8Uk|q9Vt7Q`(g3X2@KeKtoVxw>?hA;f}wLzFzut zZ}`M=Gfhq!(7|Z6sGL>2-Xo(C9c!A_FwyfeTnARn8{+4B zcR?Pl@xa^EZ+KC!CDzEgE>B~bXh@O)aF)LY$7ifWR_)^2A>aRcc9SYP4_8*vbwsWx z@b>qwG06ReLNF-(9mC4&-eN5L#sXUU?~FWYw04csm8B^eL?nXUu>!!Wxc~FN|Bs98 zpf?xB&L9!vs1*{gUe)1e%RsachZCc|tQCpDP-anX+_dM|ZfK*YJ9vu1iWoss;zFpA zlr-5Be&J6){RDm1fLC_eo3}FG*;!omJ}9OjrBfpFYZ#$w=XJRu^8Q4K{?^kRu>#ml z1TSp#^mK7U~vpLfz_$SqwcS9qTrZe;CWRbi0Y!j$%_1A6rf_458F|@Fo@=L zq{UcU!jUVSPV5rY-JwSWS=@z&M5JAoJ+z_~_VyeQlvZZz4gZ;9M2H*2(;=pkG7N`i z{u|+&#Z|qNViNUi2^}X(M4pHWqk@c99dQqIvfAKGXtkA+VMc5x^AU++h;3fe#$F(w zA9+5_t`nW$?%%x}KqY6>o(tQKM;`j5xF{z3eUg~{p{vu#x-#}mlbqB+SXx<8hxsuI zgGYP!H4XSY%#=EzER|H^WHvweglOi#uPRw`c$bjZVzwipoZ7x(D;J4mHJS zX|xm=0~JtHV0oYuJvfGI6Kum31D9qnW+Vq3wP|Qx^P-W2yVS3zN{f!=Smj7*r$A9n z10COCo-h1(8SHxvi87d)X9f`jg({=$T?gm2$0WdhTtxQd*~JFpZ1e+_Tb+Ch2YIiL zE?%9y<(D7{au<+YY!rB0vC6jrKdcre&w_Cxg`D# z21)FuGXSET4r1oaAflWO8SamCz@cFwr#g3!c9o6$6TqAyML{E$E;ASy_@k!-iapI zTL0wk_UXgVpMLzq51Y+vz90ZkkOa#{cqlwLSbK%InA1{B+09^@wgP=)p!L zEzx(!HDqyfy}pc#b<=%6fswQ8Dl$OrVnNc3JS#!H8{y7&xVIbjsa^i)ygc1m#uQnR z?9J=fl79a1Q9KUs;Eb%i`1$jtYcr6fS$CGpb9=glJogEs(wC1@9M~9oW30!%sE%@q zoDMg@L*yEs`;Y(l6O#%sp?h=I7sT|~4b8^?Eb8jSNqpPnAmkapcYhW->krzwh7JM> zcz9=Nv0XR$0pV~KrPzHMdU#+8)Z!cC@AmFmDe8-D>Y_b-tpmJ}Lz0DKE9HoB!BMhk z9!AX1Zd{#rHd1X)$&fh*G~o{^-TKn|!#m$r_~z9&x5QD1=<@F6`tIc6@ZS8mOa-Px z7<~8X_Qk3otDu`^03gB(ntsA`DcnYqpPoM3Ai3!S7P^MNxT{T`puy~*L(mAOC1$YG zM+w{a)wszRtmNOCqb#z5L|9tflBBkWAQ2^U45(}z9DKSNr*c+ov~j%f>E$i#3%g9m zRYV($H|D%~eU^9LS2xHReUbs_@(Fo;a6sJr7nn#CyirrpMob(%+gdJLj(z>#e92Eg zVGpemK#FLgU0r zsW?YaH2G?lF0p0q)0x=WzX2Z5o6WYR5+g^>kR8qOcV1VBf%=Z4SNA@VU_1P20tzO9 zu2=~!5|P~zhV4wDb+4A%9sBE%ejLu>a(1AQMoCB$D2Z!{)3XUBx&wU{;yAnSyg*6< zucM-J{V~h(x}7du=-bzZk z_mY2Jc5Z~dTLE33j0$-C+oRpS?)o@ti$6FMl%D$>OlG!Dj!CClESg5Al2jRKp4^+- z0C%wvCiQ%k)4OGq+AjW4Z0+Riuh&xsvk-mzfE(7_*1r8NniY_ST)5AEE7;%~7v-y5 zgt<>Wzp6>?rU-333F>4rb>~B+@ac^9vn%C5*x(P!>jPFDbIvEXbzac0tea}G1bhhdb6f7z!L?)(toxJX%L#d_ z$6f&B=W@-KDFlWbD|I=jUG>+8k^&ebL?V?Y%`-Vw@8uW9+Lm6)z;j zBort}+1rD75TZsGc{Cw~#F`PJBWPHdcdS4Tgg=rHC`J%Lbdywa5L>|7h!7x1UcjHe zv)*U6o*}bt&!aSX6!I$oB0`t~x=2+M35&dk{>*&)@rJP~9nNa-WuhR6vmH2( zE|HtThVUJI>Q~{!-yBGo5M~C4rB8C@Ge5J(G!B{DLeex_Z8`wHFeoS;6fchekK?A% zy5?5cw~^;yaq|83^R=DKpri?DwU`TsV0+V9>prh*Voi_ zC2-bhF9lwGxFRU0Gi_bPd2v7?E%k`{(G+UwATTq~94FX59vK}InxU>i$Q(FFQZ)z~ zu5T~>F#PUJ_htLHzx_>+=y$*Sotzcaz>`?#ab^xpemXc;=$2G$N|J}Y;>WQrCx%TT zXZ4oeH{}P38ts;Y482R?&&~gwL%EeQCW*ITWm+^jpi}FtvIYQcW1cCb=_OkjB$(wb zhuH^^ZeS>s!NW{M=_hcKy{O#OU7w}d(7;4O6(ud%C+#xS> zkx$DLrd@K4vt5gY)tq9@S&zw!5gT0K7y`@GaH?uVubX7BQqlIanP?m(vuU z))ks{ZyN?et4An_*K$U@GIGr70dwS@+G*(I@X;JMVbCKhqOVQ`FoZB{WImN5n%;+} zi!d$8BMMgM0nkQeIER&3zS4j zv%^ zwH^$@iucv=!oHWyt22r#2F%_fseqx+YO=R)ERxt9-tiLKt#ulOY&{*n8ZV43)Wo%H z4M>#+wVXmTq+G4?YWz(Qs5*tV?DdwcX&rIXbjQ)c&329VWs=;EqA+9b;H6gM=%}4= zQaUSdYcDf`M#vSKj;MaXh43J&hUy59+Mz24F~)l|e42-8>X(DNV`mf0RuwJ}Yozq` zW1w(hi^N~Qk%FbBBcm&$?e$2&K5HeGuD2m70HVp-CYq;i8;T+_!GX=f)WXthA`_`i zn=tDJ!UR#>^e9-Y#@bPy4PH!KZCR%!#BgUgfo~~I;(`wvyrZHkV&)g+#HxZjc+IGxVU(XWGDVb<#r`pCltlLMh;(1@p3_26@Ow1**LBOiAhK9rKB z2RH?QXDrW7hTZ@+o__lDK?gpz))_Wi=;S5ij#c71gRLl1uV94v z(V7X%e|6b^?L6*H*7~9C%hRhiGajY zLO|CP1{MAlV)<333yHR^=tqHuV7`336@Ojv ze2az#6)dn!r9fCQOtOr!CSU`>!Jhhyf|2Dg85tlnlBSbh8ejJ@C?<#cskrW)kg0&q zqS~vhp@q$QwR|ku^~_OtkIM~xjhi$xfKxYJQ)E-t!=tm8qt}NIr;jb|I~8HF`JwUG-|1(Y|B4J#ZDOEynsWR_0yfjuAOzz&-G$LGC5?u&rOC%@G-6# z#rD)8A9q%^sV{v=u}5u2jis4VSeY3<**>DBb^qvMK-T|t_P@56FK~c{a`t?*)c>rb zRSOo4qK%iCeM3sT<&~*dP`s|6+MO{DJM=YPS=k~CoXHu4(HLb0Kwc{su!HRW`L*cL zQLn=*-Q2+tqXy-28_(&>Ix=`Fy;{hH$@cQY4|*()WV~3p4-hfGW=bN^n{S2Dv8QWu73a;h^efE#D?`xH!nUDet&1HRhFf3@V?RcC|p)s_7QdamygZi zos_NKwJ*eAvmsv_8?v%TBS>r#*xzjVp`l$Fl$tP8yMQ3MZ2p90mdF5SjXJ|S%~32s zt<#rv$V3By{RwWw_ATSEqvp!mUNEQX?MDR!`luKHK+2wy?OPN)~fz8hb{b_HM7nb#Fb;NwPf++-@`ySeU6d zV*55v#Sb{zC=o?Xj?k1%q2w6bv`4mspRxrGd?)1DXoi7==wJwex^#n!b#V}yus0hc z#I#hKHQPr*d_UU00=QEVyhMNutH_d_y!;z7r;eS7vMQrt-LGtbvr?fd=w2@n;?l$& zo_;mPV93BY6|lhLG7w-M%tHLp)2oYKJXVV11-1DZvw$S}?#Ap29#5))3QUWyoRC7CybIQH7gd`4IZqNzNA|K#b<*%iKts z$qPes@i|-;K94`M=3a9bEzV*xEcMHW4|zS`o9+14@>fVD9<+)h7*=4o?%lkSN7*_C z2oBHBFIXk@KiLs^Q_GVwLeFy10_SJjy|-O^pA6xje3n_~Li$`q`Y`69J0aT9G4toP z5YRP?$ec&Unnh&5lmKIhrd0uCNQ?j%`Eie8XT{o7t?JEzGs__b!9h<$NP_~2hfDuL zO`=FjNu{va&F10b!`09C?>`**DCTY35E|V3;Tto)j^5fROaR!xfe-q!*V+MMdST1> z$7(+_gvEplSL*tbo+eT2|EArEqsg*_%f$T@U*sqYs(7>UcK=DG{XvCQ26f@`c=BD3 z%`C?aENO!(m?mU4UnPu|m^t~%WFJ}irj?B)PPK$#YDq5z|sH6{bSI<~LPb z0w*3qCTkbD=B{SPCG&HzX3}~c2doIWP4AtaewU#C)3wIteOt@qD2r<9mbZ$k;k7rA zHsiZcl|W>ZCQ)a9Sw1h-%}dJYpi5OMqw6<^)(kckqZt`A30&ChjnO|erh_0A!@~#` zn^u5?vh)WAGfQY@7HW=8HkWGXw=p4mcB~khJH_`P{nsh$Fxz7^lA-sK&Q+x#ho&WoK8h~G?REGd21fxM4)wF ziQe{*%$0Wu(w6tKi6!Wy69ls!+2>WSp0BT-E+0==3?^CG-PE#1jdRO_zB+ zqy-a#8`@{ey_ykP)up#tEu=Z`EPSDe9yRrC&BV_zVdaZ6p$FYr7mX{EaS4ldGnL4@ zmkO`YD_LdEcQaE845hlQ?$${#rs|?0g??X+P+Furn@9Nh#VX&B&G4Q$dzOv^5M|n9 zdx}_N;Xo~u)C3X{R9zfc!*9Y&a0WTGZjbjzlH6!hvmKam$h_5URuwsLI`qQn9^7!) zLJhWqzA7Flio916JY+M-H-h3y_Yw&|G#HxtNLXsld>ovt-QZ4xWfA0$7qio_!V!pj z9<1b{PKFT7y+I27$-EAyyqfjdBlSo3UOtlUXbUG{%)!feFIIppAQ&!`;L^(Q!+Nj>g+H*K3U zL06Sw$n*t`_>ixBtO)S85K^;{mrVfdfY2Olb?x0DyH&39>ZnHky2t8Jw2Lf3j2LyL z-B}4^-k{{{yb0M}T<=P(Xv!~*QL0k)0Sp}5R$1b*o@8>ND77z~um9K{a!?l3U=XeA z62$6ij+m-wH3s(hO5*E_>+7qYP8i$8)VxzLG>noj*9?ivHiXE#qWa$(o}&1Q*HtOK z3Pto%gGMZ99~%JRmp6}}4!=2Pv}8t@@M5O1$_a#$Tf4AXAaH6Hee2t)Qsry&7H*4B zLL{w~X_dr!+}ycl#$i-jYYlr8{54@?9rvIPlXydiVum0GKd{R-=c+l;7~L^RkkZ+N z={{oCXC3l!u!@b-RHhas^Jin8o|Y<@>Sw9s3264HEtF0D9 z=aQtk-lgDU2S~AP?zY#Ky3Pry*gkJ6MHH4DWMbuPX-Yf!wDVnMd3k9-I&KA?p~iZ# zTJ8`0uv6`PoGX|OE7Bn)SGTbYhuKRKrq|&5s07Gl-f;qUDpz{8oW3+c&O(_&h-R8j z7I9lGRdGv3^$2$>bf*|wx>UuYpHlZiZz6guEH9OTN=cf$GY^?zq9X@~c0Vxg42hgg zu_s(UPoHI`Wt4)bG`Y~n95g|%t6|qq*BLPbD;gKouD|xYRd^09`<$ zzekSiNW$7}!w?1?mMotl_bWRqwrureH^oQ}B-GiP6_|;!@%|&g0;5552T%rxwNM%2}%NU+izyC6IM7?} zStw$iKuir&a@V$L>*V4cMX>;!u2C*9#GnhHzetfqQt2Z8s@U1af@$TW!4qz$WSaf+txadg^ zwvxzrB&7Y}eVkJ1Oq_avEjmCX;i?WpGQ;bssmG~VkYMWz#pqB7dK^g4Y$e~x?L6r&e4Je}so*i$l?`|hpQ|U~MMD4us zFXP$lou)Vzhblxe=#=`E;T&dJD+D#pG~a<9Yw-nTT!XgC(yfUJ@IIAsmsd6wYXrQurL%;q}^S`2E&nY;$Waw{PW|+Q1CH1yH{Xzaby2KJ$7eu{JW;(mHH!<))i`@R{r>FD z%bU;l*OV!{L?|k(IJ6<9LVQzCsGjKoXb$gur+N9#s%5QaLC;!e^fh=9uzuy!tIBPT zwH70p%kD>T3ZxY&S~d#of)gY9;@ge-y3GQar+OL+Z~ha0b1^f(QdVY1@hJzWw|z%_ z2|>`!w{Rl<=Gu8k^X2y|LB;vPD;Y=aWs-psO~o^s%;j4p#B{UzzYILA5~y#>R9eo4 zSZ2XM1X*DtR^9kCNW!z|FO(L60lLsvU+B}20{i(=PcJtL)Eqg?zD>&6q^#6>Y>sN= zh$-u+iv!=jy;J@pb=xPI$}B#}0>~yghT=95(ON-CNTqqRi~#e#`|>2Dl2(=&2sHxS zngYYZn>l(GFjrA5pfTN$25bF;8}8SL-LH!&yk>;cEnJKJ(*-r>wcS`?wRv7V^8k;; zy_kP>^>lmrc=g@k1*Kv1a&fSQ!c^kGjRsxnQpp3g6|T5}9wbS&CCuHqKmTt}E3qHY zDpzZc-qqYwcL{V~WiopVX5O^CJVWM7K8q3anwwH?X`tBSm=G7U;oK}{!~n2lP-J`F z&t($m`rTB4+$YWyGGf zVYQlmF$q>epvhlPK+8X?0dxHw4NfQAUnC9cs95T(<`NU&WX(IN;#l(Ob^4p>QTK~b zpUNO^ED%Z9QMqQ6z-4w)$CxKAK~MUD!U)-(Bglfe)82G|8>~cCm^Xo7b1~#4?9D`j z9wEwZh()~^S$xE>uP`GfEvKy9VbH8y$=92WS%;~Es|HhwszDjaEGEvcA9jK2a`b(dxeNDEGuVFI`Q=+yWMdo2aAA@x9@z7#o z#IKFX5w8lzM>jtBbN}-B?(+HK@9GjXa--Od%~gtD(>%MfzWnd0!&6*ZV6=bc-Tk!- z$($vlCsI175Lpx$(&76n0WNN{5~Qkv@m9(&`Al^suDCX0y@S7nJUX3WacbOM=}*R_BRyD>FC^GN;X%v66pYV zd8&Y#1v19kKIfJH*XM!gMna-VzT4lD5LpVYn;eOocZ^fro;=X+qvT6loxsM#WINMP~Psfy1$Dpau=O4CU9f z5(j+ir`B#hGb^r1MET%k8y=-Z$xQbszxj8mS{u-eqEXMHHdSr3atlyB-5xPH7HE~E zi0lETC4o`gp3Ev+5D3G!=J;4Q#aGB*y?k$~xe#}_kxBZTSg2Tbid@42UAhX9=GFFu zS7?p#8Yc<>38Z^IyEU^xEE%LwtFtPrsxbV`E*UJ5SL=NWeAgJ*nkB{N>qcDkK5Afq z3Qi^aiD)nb#HGqctnLFK&nNa|DhveQBRt3tvgD>Oql^>{A`vE)u zMQX1|EM3w;yv~}AXlvf0^0T2qrch?lq(SV!oq0eYlu9UtTZNRo%BLqvHL#FGpl$Wu zE=aPJ4r!*y=C-J~^nN-#+Mnmf_Kx%{5qCy?3UCN~Yj481+1@5*Yh2S+q01Po&s#3-fd#f)3B9{3ee6w!KK~Q{;K?a~! zP1AoP@UJg`4*frWv-QP%nMAt}0EI!siG?MxkWLiFEsd3qEy`UhO-%`n60?(8&jUb^ zh*t=RT(kxCSVL0AwYUMW;89DV!9a4)4Xa^DJ)Rc0#R-r;Ma{CYBIUef3hWhC8`rHNhgM&AZ8?Zkw@8kQv3CiG~Cq0nSm&U%=}%PDEdrY71<2MEF(%l z5^+*+B^`zg%B(zZ$VQgwP@O8dDLImUCD#^B_}@%g4p+Fy0&_(h9#7w#_)*c=Y;6S!v z&eUU6w;VMkj`_0L`a z?~j7<7{X@;06<5p(FRHbbwm(+f&TRR?DE6ar>B#53#tRcvL%j_{?X8pN6_glLe>%K=x&{r(zz?#2dl#lF!PBYi;oUXo zKXiwiF1%|hfH{Xi=g(h1|(8Xy)ZGLci@y0?hkqsS+O=={bZ0UoEK+5CQxM)sO)9na$ zj+FXyb5`F=%0~pQ)+-A(A)yaeM?JbzXAmUY8`tddYpBrZ#+5jpR*fU8J;6BNA+1QP;U5fBg>Tv2qA z7a5Mg5_7g4Y>Cw))|XtGMeigGo9|}UOOaZ%sLD2HB=4@#hR#J{b)A^>-hx=^HQBmY=cRJ;^iy-Xpm-w# zl&--bri3#Z)=zoLP+xB@H6=8O8E~|@Dc*JNAX45~Klfz~@9l3K;&{luutmSJTu9s- z#>-mRIcwAB!;N04eTuf$*&)C?dz;Q300f+nH2!h!x%>FL8cc7qe%P0w@5>eZyiCqFZ#bYvoHrt6sX zlNC^R8Nud@<1yutgYXYutH8cnKJWw%;gsq(VhsoD&)JiK!)$hKOD3Bszpz+Ye0FY? zS|yprvW%9F>c3SsoW!JVs$u^jE*%(31FY^j;#3@Kb-s#+#2A-7CPf)*=qmQ*sH2q9 zA)Ch6k(paELPT1mk0Bj#5zQxJ_mWI=qm{`hxqe>69l=nCqNd}4-l6|H+$hF-kNPI=Dt>I0XQ zK+nCWP4)NJE)s}2;@<#J%eC05yMyflDF!UIdo30}K0UQw90oBKn~iAdbosgC~$fC`SZt5YOO9R_1?Cx?|;tr`TY5pUw#Q5M`1W;LPBs5 zMyc#t%a)TSmoT}8*q7ykpEf_0%gkxK!n>3PE<}|#CT@i7DwSkvONGs_fIfg(r8P;x zjW0ynh!g-lf4qFYV^YBEraLFhnm-xicDSB8?YYv0Ldhp&OA8AeCBM>O&At1j0Zqi%|a3vZz_rFBAd-7FnN+r6sxX;fQQ_p zv3Dca`}G#x&v1Ykm?C9mg}rD+X&)oR4>wn1^$xR7j0P?gBQC_GpALk~4h#p7dt`jP zS{B!_ZCDnM3Tl{5%N3?6n>!*ge&e}1(LFDUt-&a>H@ICi0%F)MQUNe$F(zIQ7pC?x zPJsh8T@5zk=^U|WX;oAE+*&_mAdYJ?C0}}%l~-2SZQ7k$PP@yEn1HsFL2OcvK%n|7_% zlH|hC!srVxWu6)pXdFQ!Kc%I0uE>|BmMBr<19Y2uZs(%=ptOCk%3@mbF1aOB1(S3 z0!(%xG0?Hh!dY4#km^|VZWzoR;Nq*QKK=uM-v9C*VF85K{UeNzhgPszB`*+euSlVA zca@7Lo?|=%4Ja=da%TmJ77R7aQWwDiXah5@w)8I4uKHRT+Xu*+><*V3AJ=W-kp)c0 zkJkq`pAK&>H`l*Bf4n~6NYg_4NBl@0pr~vAnjv3Z6Wi(d>q*IWkbqAsLB!1O5LPDD`~u@N{O@xS2dOOJPlR%WcrFWXWfY7%|U~k+qVQ z(7;qmTI{3@3v6RSA#+6lCY?I&47=#n5a~_4$@B@QASI9z-Sg!E%`E_A;XhI8Fka2o$7R|nYXazMiS40j52olI zpFR2h4OvLFWf?>5j#9i+=4g&Ns=F0+t-oy&{~?hvYKjbaX}=ZcmS`2EkqMyy*7<CJ9@lrsmjX@#P+A}uL_(n59Twtc;j;#2ZqLOp6|YU^Nj|*{cyE8Ehe{g z055ZUAbM2hf1zz1Zq!G^hS}Pt3TSCr?pS2p+D!u(;1r$ycu@`#AfC3>r({`ZaJHBV$H zBT!V%j6T?qwE3Mu9)V0D*HT?wwYT)e#T#IxL8xnljUB|GK$}04+4fW+tdDWc%u56= z5ZEd+d8-BD?=1E-Pbmy)^v(Vtb{})CbVc{IpNluGJ3Tz&j=3-)u=EeTg<8ZYLbe|L z^2_@-Z)R5X(c!!Azh7H+EM}^N^itOPbGY+(v&Bt#iW*N>8jh!VcqX(ko)ll*8< zP<4HDbA56DdGqN%AOH6G?DMVOoSJARaV4lyU#Z23>HJNOD}5bZPmGb`ne0klqiaU4 z>u!ZWJg}jf>4NiG21y{In==|S3y<^Bs2GeO?$ffFq&AI*cxiix6&3sm?0X6ItoErdQ7Sd*9wnoiWIsyo2Tnh&?F7hxGO@K4n zq^7-Qe^XtC5>o;Y`5Ibj9;idWTgHXi*h50fi9JqYytlKPeWa0@YGP##OUskdh<)|mI6zcE? zy#)nXD%vko3{FhE3=W!W8u$# z{<9DX<7L5tpo!y8fBKWxe|+}?RkRBtZT#`aA6ACzEW73l`rF1y+k+}9hdyHw8k{p! ziaIxES^&(=g>;I$xv`0xz)ur!97QzvsLETwX5Lr6=JhM}xD&}a_iPNH7i(S)T|`)Q2|+R;)Q;X2*sVGJ!{++dV-rw%*r%%~ts+ww(r$zc zM1+eI5JymtcE{pXzp61h2{)vHHmw9xUd!72=Ln;_PyJ~+h4zbm*79qs=4hb5eT9T= zVwHw3<*-Z5GT;?KHFg0-Q$0Io<8J13Tm9%MN3M=rKDIxy?e>TIY=4Guqw*}E2*MX_ zc5Kf6pfMXuLo?1E+}GpK{opJF%QXu$wwW>^=ZHxfYzsgMjVyaod+O|_QOpeLlVKxB zfttx26oJ`FH1!&_Q1cI&*-AIazAQ%fnR@x0H`>CyJz}WS8WG?-5Rp(+NDmFxZ9bgb zUTnT?k}l@x`9h)MbyKctD2ct@cJ3Nzdda}nFxIro!2h_hQ?2bu`gOJ1SfZGw)Uk=E zE~9`E!56c;n6sQcb*7(QbnVR0;J;YKPO(``@In-s54fI&c87--uitKqJUDp!&0Ctv zi=pAM4BxVhT7gxa$c>!szrpXf!1exab4$0k7=%LkWV#USnFm-UCo1fYdb?(Gg98-4 zehp%p8MHhhWEi<;zCj#FB(Vyj6(lH{hjn^WrS=E^(OO;PxdRi;Me-siv}OV%q7@My zC34mkg+7BL`y6m}aB9osb$`shSp*wncJj7=N9_{Orw98E9oiw``u6DR^YP`)=FW#L z7~5y(pmIh9|?4^f2yUmq%&CBB8x(xt)A(VpGC4T=V0^7GT?N!x{&AA z4BD6DjAAzF2Ri5{DSQ~j3JZWtF7e^K3!z|o4YksCE>J~<@h6;6{IwH1%IFVI8C;oZj05O|X>BZ26Ux#s7m%1|j%!h~D=4LL~O z(*GSb{;vpsc1Ku_?e03XKVm}Y=Z)>b$j2#+V&3_~0faaO!Qs6kT8kX~` zfl_$?(XUiwdt^V&@LrL%Zr4E;#twm#uw*PQGx*{NKNQ<7-IQ!1?!#G|bMSk@Z(lf3 z`UI^BH9Igz53n2^TyaTRnI63|FpD*KER&>Pv4IA`GEjk_RT0!o=F&`pXc0aBx|(Ee zTaT)|t(9Epn`AVc8Q~gOa6laFBZ{56-rRtsDi`wEb*yhXJ7~Bbo}#wb#@jdSpI*Pe zW46GueOdfC`OBQ9$&HiFno!^Z8gHqE#3*-{wzE)tlqq~1I8)H75mHMw`P$mKJO*x- zrDO8qnzA_g)ETpJnoL#Z+hv`{^xylb}rC`@zer*LF^@9O3@y;y@&b1$2FUeRXW7i~x@u z5on6ewHe<({2;$_^KTX34w999*&a3w;&agqc#!kJo}hiJrCNZck5v{g+dSMe zUt~4#!N}lDsiKUb4bpI}rtIv~V;(Wz)U#WvP;GvFNK8gVc$$1s)SYg}4g-t>TCt~j zN!}U_fq}*@sZ@Q0fgl?uTOFU*53(4D)~yz(U|AX((>8W>xQVx!C(eKz=d%?fFtqYY zN*9SMO;0Pj9r8a{$t;(KHKiDKaL4d70>EPAu(F z`3zx|u#d-Uyfe4r=>GOjFvqjom-}CCuP)BMH6J*cnx$>Lf|1)utPoYhrSMd?$$FK0 zDsE~Q9%`n|P@*CBzQUk-sjshnd^&0zKqMIQJ!)UJc~e%{KtcD`z*?pFe%Rzx&LNpvG%fA@muxx2d`dD5f5M zPIWrLi2CcXs)(E(%T0jJ?0{pQvUKJQUbpn{2cd?;TJ{wuhKzvHHIm%_{`+@jlJ(R~ z9F5HgatKKO-+%qTuC4#@cTH}DKHSWI{KtPJ({R&MWBKu#d*O>Yvql7YLql%bz;e5V z$Qeb>%97ZH1I~K)$mc5i{zo_KO;B<+Yxiol7g$4F?_NFLzPh{IT+QF>I~!Xsdxt?G zXftu4;=iP38l03)b^|W;{e18l=duEUy-l?kIHT&-xq^zg9Qz*MC;$m}m6Lp*|4c`i z@^!xsgG#^(o0M^SY@=aoVy#?zIX`$jKRy%^vi%;IsRIa+ZP|`Q{zWP_C1zTQY=X8E zugfIyf4cL1bIOEj<|iRcf2Z%xoUiMKqG3=_l7F4fE`x+}a_(C@dt~2h7-3dAU@_l? zjvm@Kr2SNN)!s`p@-{+;Ag`)B1W_7HB!p_IvVzQ%K8CC^RJBx7cnw5hRSl$~V%#Fg zHT;GZUGTKVsH>D51@IJE&HzJ&Er^cE%!7U~n6*Jr!5LI9rZ2rZaZJ$s;cF>U7h<=!9J3MyZ z3YiCfEga)eoch!5BRKT%c&*W1?(G5-+d2-zB2+Sw-D3u=~A|WU#zMzwa#0jG5fk@76wB*QTNVQhbpgM(x9yN(vEWr z+3Qga2Nmc0PBxIbJi56&y1O~LBXC*bO|>bw0ktRtONB5jNlbioV{~6e#8PjbK7~-V zGSMieu(~}ds0k_IWiT}aD*#T4q%Eod4=k0l)R<)TVkSjR2J*(q;O7Y&H0tCLD~qwD z&mxxjE)>BBvj+J`{Xu9RM} zkRm(CFL2!JD4EubXH}|GzKoQS2oYNEWb3)mgt(rzoCTodA1VP*?hcHNxgBmrzW-3) z2p?q2Ywk{)FJ;{@Q`3KXC-DdyGjJMmg41;+2J{AdLliQ0SA<8do!Yfv`Z8-EG6B`d zWbww9U+%JmA)V&Q$_~-Runh46Aq$`ZiU2rc$s{7%e8@+BWJ+^q){JB+T2sV8Z7?#5 z$Z4E$eCU`?ySnU-uT{ku-}W|tP+=3yrj1@<1^n>thctEujK2Hs8#DI+jhHl#Y`Q*m z>!4JUIoA3Ha|k1j12`;fLywb_S3ITjj2%Qf%xSg@JWopG7@$}M&-(DbI=Zw}RS7d1MeQZ$ zj+qg3eRJ)b^ePDBK#wZ__`4rXN0dJRf<}s#9h9AF~kLlz;s{Z&T2LCxDJ6 zn#0Z7BQYL5O0EcfT{x!X&W%b=LXwh5Iq0it9^|EKW6;GqgbE4SL`)Ocq&Jqj7$!ok zU75Q^oDOR1Y>^*GWYj-Zns>9rQ$*w2y-Q+d413(k1c>?Mgwy~<+m^tqOQ-V^6fO_+ z=PQl2H#ddT0UVumWn%>?YziC>WIV-(Kr?wwOLW{hDq*R(uL8iDdy6rlOqyM3s_ndv zavfc7ZK+ilHfYq@HAKzb5|IERQ1dSM3`v5|rojXop;lUlL_ae`jIkfxZ*0vaQlAo% z5Reg?g~;A44@WHmu$oceI}9NZ{>jBLJ&P}3hHiBL@H>4-)&c_Ymn?Zwh!UQ!+)-=A zz`jCd5CF+8gV~$$NJc_#Sg*q#>#xmveMBTo873--^US%5p%J18lf03IuQH$JuC)4| zdcP*WPFkPLbAJ-y)zqc&b@LS6*5F75xV*{ci5UiJxXX-}`YVfuo~~|-xQ*E}0K0fl z%u6+u8W-!5q9FEE(Rl3vBr?l?#_9cZ#1zMl7ht8I($BOYeLnqkP6^LnW2T=1&p-a? z+cw6*zBgD_DEjge@MO&H4x;Rmo_UK&%n)R%s1|`X(9S$rwn+_>Ez>9!V?^c#yy?90 zcr<_vk)SZ;;r`>Bx4s#V5_y`G1R#WGq@nx;f^C;-!B4eopL}OK9xWOKu;k!cGU;WA z4Au10eq(T!mT5TX^V82isfd>P<3IoL&D%GB`28RL?(hFj9l!sM-}XH$mJdLLkE*7= z3?Ck-d=T%cJlR2P)mfhxR~cN+|I?w+Gz)I+QV5Q@lsWZTu@#mGB(OBq#Fgxj=GQw* zQRC93dg6qRDi|MRt&Gu7+mGhBEq5lkEJux69aMAY>1PW`XjOu!d3Qts*$tW(kaR)wu;D z`3ka`0_CZcom}=>$H;Ps6!Rk3#v>>BeIxi|y^-lm26dg$n)P01`VqARGt{zgNQM-^ zJ9xY{B*x$x4(Q-h3EAU#Sda%A_{c%KglRe}3%KdzWgT%No238;k4#MGn{VD&wZJ!lLI3t||Mr)^{N+a!v-OzXc2_Ab8;P%!|#zaSTQ@f6q+^==}EWH@AOx%LY-( zGD)aBV`?GGN`~^oR~D|mhGh#HoF_;b7I>-&S4wr^bE(&}rDJz@CLA!kKnTDBJv=Xy zo>VYOHYe~-tpN~veDO{7Y2!C<-hwbUkpWeQ>ORC~CE&h@r7-JfXb}yGn^`$-W?Jml zpd?WQ$IP+RTSFe-Jzw*5?hfyNy8QU@^!DbY74Vv~9*XwJh!jJiVi2r#etJPh+=M2D zEy_l#oBS)xZxZwLLCo&dqr=pv6oq~amT81hPa;QzWKCp3E{1|+)5q%I_yc5$UXEY3 z(4)yRxjb%$Iwq4y!&3x4Zl)#XT-VBOlgZ1=Pn3Pre4(5feg?YLI6p0UP9gZhX|Pnv zD$w=C02&M%BvK6kVj$m0m`&K(xVGHN_XJ34UT=h{6pHR;ib9^jtmZp`zy-kLi*m&D zDJy(y>Ox~-63ZQLFr}9r)0iqSeF36XvtufjZmge+zS7SjSt%)+=r~7D`x%ML({qon zA=~0K*|6S>Cb(GK8CJ;v=0Wtn3XNT+Elg~$GO;d}mn4Y6h+&nI)?W`a5zN9n64!IW zpeP=z+SO#LRxoJC%W66VH0X*BhG|x%sRNeL3H2eV0uPVRKpYG1?(+7-H%H%wA|A=S zxfwn)MMCsnk(MAt4>^b{ixu6khtkkwPs0yy-Q6ATyCjA4eXwG;4r()rUgXUEg| z6HA3_MoSq%+@jzA{`Y_W)1Q8M|I3GunJO9Z7Pwuv=z%iRPj7*hyW2i`fil-Y?e6e& zQAqdLLBcB(+e0s|B!D(Uo0+jWkw5IP|VrRHXsd6&U798hGYS-?pOk6maR3;^^ zIf{%RNc1x=?D|T;e%X2~AoXIY$y`3F41gRi{N&}i@31Tu4~ynB%v~vJO&J+l%(5)+ zoe>n=qb>0&uXSJM7AzePc6;04q|f<)f?}^q(xQY= z!`G(}T7uw*SgA6gUC5G_kp?l%$7Tzn;Q7w7%s%}E8W4;kZIFhtv&pc7C|UN^FcxJY zYK_J;DNs@M+m#Yx`JtE!l2ww~nIfp05&UY^ksTntr$uK|Ir&Gu`}Ma-CFCd3(d0T{ z1bGI*=;5Fi1g!B=uXV({J;#W*Yb}nm@-z|`T&S5gvBTfPt$NRdgKPzW*HAnJsrToT zE))n2sL`#;8GM~|HPh-wVhZ&Mk*f(NvQ@Kg~JWp z>{K>hWzS*_vH=iK4D5ESQ|IvpYi}zkPG(0(L^YFu3#yVug=A5iksQotKE#MP619sj ztR|1j-`WZ_G@uf%YB^XTry5k^?6)WkVG}EqJh8lU7ei+jb1+gXFr+tUufe??hARG< z*_HJURJ0vl$&?``M+1;CY3!|DjH&@{Aq(2!rz4Kw$*+&01$+5=ZN5R-)^k6{rRBy^ zdX`?dSp<}m>N?C(d{3Ky`Q^hezg%A4KngtNg6&;LJjKBUXcJWMG$#8flo6$<4Ts0RQ$tAgfLO)|Vs!1_^v{ z@$Br!?|q!-nCFPp-~ZwF>g9E{XoY;c6BbWY9Tt}KK<1&Xsm-EnvD*|?GuFRMn6N>m zRF*DxO zvhfkJGvOB&kX>C(^_Wb6136nT*99CwSccJ9Qt50(kIOxQY9bf6$Q}lcs8u{N^@H@w ztT+9odNobx;2^A%~O?zROME-Mu5YD#mnd&Esf7os!TmR&Q-qni`6YsdcLs59KbILMmMt`@aBCDR&3k z2QP#_u$Knx+)?-QIY#mqc?so$ryErdu!_~vh)x%|bxL7Y@>_Ve9 z5hkoiQ@tqAN{iUd2Ym)Ml_3CAEEP<;JSS|nwxIRrCI!_;Nl(UOSQZm2#Bzi>VLC$N zS=x_dm=<4ODg$PT`S=h#$z0mr8=)jn&3nw)U^T!XkfvNhqWEMn)ed)w)8Yr6);?jC z#C#qL${a9s`=#h{1e?#RpC$6qmA;qVoYQ@8tF}t01>{4G#UIT)xV^jexuF*;HOTun60upn+A-6fgF>uBVu?7)CHTA8R}`x{8uqBglS%kG1D?f%!(XX0-Zp69+^E- zOu<4``-Gn=fD{Toh1OYOh3>p?{CM@i6KFr#b|_*5!x54LvrMyW;THnvxOucNQ^1Hwh^)2j ze)Do>^$#kOGG+LuW|ipo7~&Qf+xrGT7d)v!*NJny##(&!<8>2flN*9VH-a6~P$tRn z`sWcq^aVfMKR-Qx`{tX^pIJKJnuhaFrV-c&W0qpj+0Uj}UtNB_{AdiyEHzVh(s43V ztb*=kQ}AxMZ;^!HEB$|e{G&&plSc^!D)PtylZp5`PNHAXJGM_#_g_G^DiJuKHo5jRVN~J7wt)um`=iHCzEt-1>F0+J z@1Nh_ZLWOzQsw;dqK#X1tM%V=IVO|FH*3Yrh5?ZJ+2Ye#R=y5F#IT21eeS9GKumIY zK`Ucs{WUA3`LbTKTMcn0j!8OS48``-^?_@pv$$1<4$wCh0a6xc`O6Vp77$6M6ja#& zmugh6?EA%oEHoBk5J0>}Hod6fTm7GiT9kKh248pxMfqq%+9f@sK`p3?QxF0~Y|&ue zO03O2d^x-S3`mV`7+gC(y4@V}u5QJI&~L3U%Z8YlOTW==s2d5`Bl zGQj@BnjAk=rVW{7m<0zA24b+DodjmG?p{Kr^HgrD-=3hK!ci zK+_;~X0qaBX@#UuRg)OM2WvA?C({9C)~ul88|waq7z zQfau7vqz#kXNPAhYAbqp!GbV1TApiCwJCqh3gCEcO5g3R;U!z~aM`Rinc=yN4m$2F zuVgXJWa}S(_#wXFsc}hddee$i$s|?~Gy^D$S|ysSgq(sv)A4$Xr6Wr9AOH66u0_Ou z`0)ogMZmCvz4H(M@DK9O@VUTICQDNarF6Jfgk;rkm*FbNS%P)F5Xr*EtxV+lEiqV= zk4mM=CK9PdFA_fo5e?G`DS_;XcjCI+Y^&)oC~^YJ0;znPrp4syy3X}zguBQrKSl*<5ia)A z-cd;BpxC_fL@>qB8560kQkG9JL=J#dBecM$;al@6n)n$9)i|7IU&TVrCA6|$oO6t; z8epZ+66dtlWk%jd|9|c}@0=ApLt#r5q$z-e_`J|93~^gQ!seBp?IV zD-<2a?d)fY;=}bdXuH_FTv*xMsm>)Eq?TZoc zKmX;=5XuHUl$pX;w#lwzL@+dnfIISELs3j5hAIpKH!c7HTM4v*)iqGX(Nk`sGh~}& z^#1+NBF%Ollls4OtZ<~iNv5+GIYpJf*)))I*BEM%{Zcy-HvYnhJ@;kyTSto>*<2o%sBYo_$mx+*xL7P;6W zJ4SPm64q8UfG7`)%b>9%0EpB)Di|lV)R>FqN4#daMuP~DnD~5EkrMn*2c*zW>%e(^ z!rjgN<87awXU2`0Y%9GRbKYP193lZDAl{+OkNH_6@a|Ya=tcZG%hm-xDpM-Bqo|cU=AO4K zj{GRm!Qa%2dg`S;3?(qTLp}YB)H#S^|3e-V6DRa$`>0~UHv2odz1)2M^!VxSl<#Nh zZ66-3FQ$`_4$8%70K}}I;Wd>rM`ttZ&}l=RS4hA-3^$^h#HvJsNMErF9EO1v?&WxVIXClWP)pa%tOys>rlRXnX`M1s7umjH+X zJ(>Dr{D+k1>jXg5)!$+&ThN&n*kTH@Yu1mwl_=Fpj88R$eA;rlwY6@<=cu`yfnHDPZrwoVl`=E?+2j4PB_B z$06_>WEYugT_f6}m+GB2uNP0QKHglmM$NQJdzjg?#rhsgxu0z(M6(*V@!YMt{-d#Lotr_PW!skPFy?2@bQFvk^-`wy)m}%MAXAd zTx)kRrEU*w37|SOgyOJtJ#x(jlQKjYcv>(d84S96d-v|)odg)kaRW($z3W9;ssFn6 zRC?zH4YE?r#?B`b=tfgvA1_QWXzeyFiJSE|YLs~CxwF3%vhsBHx~D5m=BLIOkz1tz zonEAb11p+|bLkBnAB*awIo$0^q2gL1bI~iu2H&eIpFZu$VowwcD} zf*GOhw>(s6NJGKUrFywr1K+^GAg0PD4_Gid%LTVWA080YP$>-NDw)_tmE};hMw-px zt8ZREi!Pp^#55aA)`8|Kop>Kw7+|P(+D7vN!Sj#TX`ongkd5NZqxV0YlB*pO~u_iBisl>N_T zD547bglIEysh*H(Or~romXt#&3t#qPMl4r8>bK8OCh}icgPZ&N|I-DWVHgo6X7Py; z9b1uYvyE+Ayc;VCEKUHcjtBc=_DruG4&^%0Nd1(->HD*XtCPDA$DiIGeEfWLX`%ex z;oZHSGnLb-dbn&%h#=Yux0*so6|;;t)+N+}^@!9v6QXTw>G|}yYM~boc7~0kEinN} z-D}xG2e3($N(yRnpp4wWBy6Gxes0a>Hbl2f<^cMTJ5{1vUPqfCQ-N0_cmg_iM`qp} z-I+n+X@(pti<_pV9>>+J3ECMYRcL`<i(JQ@g?0b~z6v`32pQld1ZxO8`ARc>$1#h>qq`(D1P>ZVA+6P0z} zy>TN>oH%jLi4!N5t3p~d>!h~<%E7o^WB!l0a_?0tsj+l@Dn$J%{%(oTMISCL(<;ZD^0ki6{U7KmbWZK~zCyY(ovFBGEx&CH#uw?^9LLPJ0T@3k- zgyB*>fufDi9Lyc|vFFlhD5JaU(cc#;Z!5D=>$3(<;U!g3=LEWHHb-^4|Jxjd%VI6c96f!Act;>REW29#w*2?ks7IP>1B}@9@q*h-k4yDr1PwsWtS?=ttMSBDY05&pBk?xW01twA)Btb zcog)sU@(h8ICNe^Vw8}){zBoDn^eUTRULf-FF_Re3Kn5@Evt#++y}=b6a~WBXZD`8 zW5Iroyp1khU267d9vUZ$`ZKai4;IS6Pst&y@pKBOk;x={$S`iQ9=Hn61>FlBFVhf$ zNWD(IDo|xSrY><(bjm$BlegNfa#eR+6|5cS^r{&$llO!J{>r66;vX(IwqF2BK()V` zNDNvrg-oY+08{;r>Yx(frm*}-TqWwheIqFUaF0TvO%b?np~2a`wtBg?$Tsf|xR{JM z{;AM`)i9(aMQ5NvVlr{F31|yolwfw!s2A6K%)hj_5D)5o&p8-$(co@9d039uv(f7E zetx;0+a+HL2s9Q+ri6^^xNNQXXCr91^!DPz#_6z}@W|hgW5(KY82Tb7e8%j;J`JNd zC=ygTuAhW>hwG*;z@NeNL!BTy*>4^qB{K07q z@hH`T>-eg;=n!>ht7UN^%{ zjA%%?XXwP`;{y_2Hhp9lhAI5QB3%hjQm0Vre6LwpxRjabrc_1>#DwRUHKf<&Y zfUnxzB`wg6&Iocko-&E6zl)1(Mvj?qsN^Y29ngMKrYGv zist5Yyq(c6yl93%{5QS9k}Hsru;F!Z`Hs15StJHw3~=3@&$`ZT_nb?7WfW$=32~+| zRVNCJgtD&P;(IWCs#XP*#W=?3^mBT6;Ky;T=9>=q%26$*-e@O&%P7axoOtVn;Yc0C zen{OCC@UI^thYxIn;WT2A;(}-o=dn+GWh~fpOciaj{I?Dz?Fc8tHah&6mbbfDloT{ zs-8lNnhd$FcnBeh=D=FuxyqthG6qGt5{)f?V1qEfMviRg#A92+B{;$;f|fClu~jy& z*H}0EQDG57kgzz9k;c4DN zEg&&r%A(p zb2DM-uX2&8+isdo+JDY3ZJH{iUVZK!QVtpawQ~bkrN;`!BRU~S?iPbhHD}UiMT_N6 zi^XVhxqo#%SlryN99$3Il8aak4)*Jje+OIMAf^5GSE4beX2~%s0#) z?q?7CHx?`pvp~wpmo;G;mp~)_N>fFIabMi0kc>E|K1|(A=fzHl^6^Y*nc~CYW<7jC zsDzn1Q=539oP!2V3a2f~DD)T~#7>AVs6h7W3(mwVc=(G^6iKX)+j$IUq-Sn9Ts365 z-%7&MR2x`3@VndOl{(!4$qlIV@*p5gEU8o`EMkDT@inplf;x*P5Fw4#S1J`| zWu#`gLxk6m?`{!iTgF}N?W{a>G*Py~_V0L%kTb<;?5LO~2pP-??ZFL{AhdnVI{|hj z*X_wwuIS+KPNY5FSz3f)ge9rrXi7G@p3XoVE9MB_z4`4z7ePcVA<ha%)!i<0|Cfb**MWYgwQdQ3@Bk^(KM_fLr=M? zfU8sB-as!JAe8>qLI@GV;gP?yEHWxI@GZ4%R{}>y8%Q~L<&wf&;s%q}VXJbJV-4uj zJ?nuf*yx~_PMY1na$u`vK~ciGB4i_%hBLI>A{&G7a2ESD_5dhK2YlTq6*QtF(vO?d zcXW=kSuHhtHb8LTBsfvU@!+yuf}0-IU#Yxot4VzH`m$4=y^6WYm;gR&jX4#J0m44N+2fH?pVAYW_Pa ztQI;p_$|JnA!TzC1wj?u(Z33a{Qk2-Y`(Jmz-&rciz~NLrlBECZenPoc=2)djUw?1 zcZ>0;RnaR43Jh2C(cSq6DHCQmMH1CFKF<&nOa}(%GA3X;s>JSj-O`K^NCxye= zU=dDoLHGG0z4g_+g}`9WM^212E>R`^ike5l^D0WC#_<5LtHYNH##`JN(LS6M@#nB- z!t=D`Z0~`i&**z$$GT2W@72cj*cOVVtRT&Rq z8y-k|Yu4+dyWtqM+0OUti7~w~Bv)CMzXfVRSD;KGRm!fL8u5giMJmC5a04?dbez+uBlZ882XjCp^2;w<-Dx++LkE7ta*|l2dA3FgokbEV6keI)xf$6 zPOgxJXUsH&uuY=s&?} z71~ixn}{%L3z$pF&3&=*h7KZW)iQ{Rxl7CVpvk1_x+4>||d80G_+8gNb_*SwEj~EAX^r?-i3wru~Fd3(3$AA3L&>8X^ z`SL+;<_m699b@`6a$18ka*aN*wp(b7&PMI0-E7ZCz zorpu^@U>pjLXy=TIK-xy2xM?+?W!5KFyLA|YW5o0vSos*8;V?Ftpc z{@cd8VQ}~-<71;|a9Qbh^+OryFM zNyBuFK9I*#j0S(1Z6BIbpo|<>W^GKkSVyEe8?;c>oCfRM5RIemX2X7kPgotT-%$UBM`E6uMkJJcW5u_&rjtHecUg``S2~4`^g=!#PL}K79 z7v>DhTdlZBYVJ2ie|qB*&h#wOMTW3_`8`SDy0^$Ve3W2(4(9lyfyh86ATu!~%;x zZsM%8;L_D4;0m!FU|(`85wNb_!8q5thn_mNS7rQlc|~oZ>=I34MQ>lVn+B?NdVmGD zxMgp{me5WJ>g_&;cS=v}7P1?>n5Z{Gby$zF9`l9La7NmMJKmkwNY#8p?%|VuRe7b> z*+50P0%A8M(@rMGY+Edo&wBS3dJF60t?HmHdix9M_G!7@@T|F9?F=Y_9z}BC-czkN~?X$@@5`by0Aye1K#K<;;hXfk>%=6J_Om4?(*xz z%i|;QcH7&p#chkfv(zw$;&L>ZgOO1}km4!PtjLrWjyknw$ijv(Qz%PU>S)(!pfZ3N zY}wA4-BjwAiJPov%diaz=pEH8%~Q-!qzOj=U1iW~{BY1zcxDwF4~0@)h<@zaG;nG( zn3PNsnB#96G?axRod=MoqIBgi1l)xJeyI1Netaw%N?pZ)AGMUV2^sRH6-}{6gMv&+ zX&k137R<(o012D|R^>oysXt_vYW5~T>gohEW$)Jexqc~JyyPRQP5 zILgY8rm|Td>uZrw>2L)(I?$NzZqW8Vgx9v!p8IZ(#6JE0XCd^Rd0@?2ed zMIxV`SzGzG9_v5z^rR>vo%9%@*dJFZDJ&6D-_!&akKPvX`Kus7y$V@Hc+6F&puH;a zL7M^#Zz05np6-!ri)YIyQV5s8Cel`2jbSgizU2oO>zLSDFSAuUKKFn*?xb?%`t1y?den31@qaLVYC4sSp&S*QXb z-T?ZP<*G-eLue(6CbMr?NR=j8I~8@y4RRN~7EdddHh-V?j`)Oj>daAOXc@{PbH)a` zUc0wVoP`k%{I|}gXbD%-aSEkwtl_rn(yfdcmp{5I&VS)`$y~f}+3Z`1A=t1!7rB)wao1n0rbCz?_-gSUpWxi4CT|PNh=y0Tu;�hB-%o-g=u%!+EI2PYbtLwdhb5USWb-Lb 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 literal 0 HcmV?d00001 diff --git a/test/package-lock.json b/test/package-lock.json new file mode 100644 index 0000000..47b4593 --- /dev/null +++ b/test/package-lock.json @@ -0,0 +1,1589 @@ +{ + "name": "test", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "test", + "dependencies": { + "replicate": "^1.4.0", + "wrangler": "^4.0.0" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.2.tgz", + "integrity": "sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==", + "license": "MIT OR Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@cloudflare/unenv-preset": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.14.0.tgz", + "integrity": "sha512-XKAkWhi1nBdNsSEoNG9nkcbyvfUrSjSf+VYVPfOto3gLTZVc3F4g6RASCMh6IixBKCG2yDgZKQIHGKtjcnLnKg==", + "license": "MIT OR Apache-2.0", + "peerDependencies": { + "unenv": "2.0.0-rc.24", + "workerd": "^1.20260218.0" + }, + "peerDependenciesMeta": { + "workerd": { + "optional": true + } + } + }, + "node_modules/@cloudflare/workerd-darwin-64": { + "version": "1.20260302.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260302.0.tgz", + "integrity": "sha512-cGtxPByeVrgoqxbmd8qs631wuGwf8yTm/FY44dEW4HdoXrb5jhlE4oWYHFafedkQCvGjY1Vbs3puAiKnuMxTXQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-darwin-arm64": { + "version": "1.20260302.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260302.0.tgz", + "integrity": "sha512-WRGqV6RNXM3xoQblJJw1EHKwx9exyhB18cdnToSCUFPObFhk3fzMLoQh7S+nUHUpto6aUrXPVj6R/4G3UPjCxw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-64": { + "version": "1.20260302.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260302.0.tgz", + "integrity": "sha512-gG423mtUjrmlQT+W2+KisLc6qcGcBLR+QcK5x1gje3bu/dF3oNiYuqY7o58A+sQk6IB849UC4UyNclo1RhP2xw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-arm64": { + "version": "1.20260302.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260302.0.tgz", + "integrity": "sha512-7M25noGI4WlSBOhrIaY8xZrnn87OQKtJg9YWAO2EFqGjF1Su5QXGaLlQVF4fAKbqTywbHnI8BAuIsIlUSNkhCg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-windows-64": { + "version": "1.20260302.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260302.0.tgz", + "integrity": "sha512-jK1L3ADkiWxFzlqZTq2iHW1Bd2Nzu1fmMWCGZw4sMZ2W1B2WCm2wHwO2SX/py4BgylyEN3wuF+5zagbkNKht9A==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@poppinss/colors": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", + "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", + "license": "MIT", + "dependencies": { + "kleur": "^4.1.5" + } + }, + "node_modules/@poppinss/dumper": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", + "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@sindresorhus/is": "^7.0.2", + "supports-color": "^10.0.0" + } + }, + "node_modules/@poppinss/exception": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", + "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@speed-highlight/core": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.14.tgz", + "integrity": "sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==", + "license": "CC0-1.0" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "optional": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", + "license": "MIT" + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/error-stack-parser-es": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", + "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/miniflare": { + "version": "4.20260302.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260302.0.tgz", + "integrity": "sha512-joGFywlo7HdfHXXGOkc6tDCVkwjEncM0mwEsMOLWcl+vDVJPj9HRV7JtEa0+lCpNOLdYw7mZNHYe12xz9KtJOw==", + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "0.8.1", + "sharp": "^0.34.5", + "undici": "7.18.2", + "workerd": "1.20260302.0", + "ws": "8.18.0", + "youch": "4.1.0-beta.10" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "optional": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/replicate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/replicate/-/replicate-1.4.0.tgz", + "integrity": "sha512-1ufKejfUVz/azy+5TnzQP7U1+MHVWZ6psnQ06az8byUUnRhT+DZ/MvewzB1NQYBVMgNKR7xPDtTwlcP5nv/5+w==", + "license": "Apache-2.0", + "engines": { + "git": ">=2.11.0", + "node": ">=18.0.0", + "npm": ">=7.19.0", + "yarn": ">=1.7.0" + }, + "optionalDependencies": { + "readable-stream": ">=4.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/undici": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz", + "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/unenv": { + "version": "2.0.0-rc.24", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", + "license": "MIT", + "peer": true, + "dependencies": { + "pathe": "^2.0.3" + } + }, + "node_modules/workerd": { + "version": "1.20260302.0", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260302.0.tgz", + "integrity": "sha512-FhNdC8cenMDllI6bTktFgxP5Bn5ZEnGtofgKipY6pW9jtq708D1DeGI6vGad78KQLBGaDwFy1eThjCoLYgFfog==", + "hasInstallScript": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "workerd": "bin/workerd" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20260302.0", + "@cloudflare/workerd-darwin-arm64": "1.20260302.0", + "@cloudflare/workerd-linux-64": "1.20260302.0", + "@cloudflare/workerd-linux-arm64": "1.20260302.0", + "@cloudflare/workerd-windows-64": "1.20260302.0" + } + }, + "node_modules/wrangler": { + "version": "4.68.1", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.68.1.tgz", + "integrity": "sha512-G+TI3k/olEGBAVkPtUlhAX/DIbL/190fv3aK+r+45/wPclNEymjxCc35T8QGTDhc2fEMXiw51L5bH9aNsBg+yQ==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@cloudflare/kv-asset-handler": "0.4.2", + "@cloudflare/unenv-preset": "2.14.0", + "blake3-wasm": "2.1.5", + "esbuild": "0.27.3", + "miniflare": "4.20260302.0", + "path-to-regexp": "6.3.0", + "unenv": "2.0.0-rc.24", + "workerd": "1.20260302.0" + }, + "bin": { + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=20.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@cloudflare/workers-types": "^4.20260302.0" + }, + "peerDependenciesMeta": { + "@cloudflare/workers-types": { + "optional": true + } + } + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/youch": { + "version": "4.1.0-beta.10", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", + "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@poppinss/dumper": "^0.6.4", + "@speed-highlight/core": "^1.2.7", + "cookie": "^1.0.2", + "youch-core": "^0.3.3" + } + }, + "node_modules/youch-core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", + "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", + "license": "MIT", + "dependencies": { + "@poppinss/exception": "^1.2.2", + "error-stack-parser-es": "^1.0.5" + } + } + } +} diff --git a/test/package.json b/test/package.json new file mode 100644 index 0000000..2f12686 --- /dev/null +++ b/test/package.json @@ -0,0 +1,9 @@ +{ + "name": "test", + "private": true, + "type": "commonjs", + "dependencies": { + "replicate": "^1.4.0", + "wrangler": "^4.0.0" + } +} From 0e5f823baf8bfd5f6ff037e2e42371ba0b8a28e0 Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Thu, 26 Feb 2026 09:55:39 -0800 Subject: [PATCH 2/3] update references/COLLECTIONS.md: remove static list of collections --- skills/replicate/references/COLLECTIONS.md | 41 +--------------------- 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/skills/replicate/references/COLLECTIONS.md b/skills/replicate/references/COLLECTIONS.md index 580e807..70aecb5 100644 --- a/skills/replicate/references/COLLECTIONS.md +++ b/skills/replicate/references/COLLECTIONS.md @@ -71,45 +71,6 @@ curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ ## Available collections -| Slug | Name | Description | -|------|------|-------------| -| `official` | Official AI models | Always available, stable, and predictably priced | -| `text-to-image` | Generate images | Generate images and photos | -| `text-to-video` | Generate videos | Generate videos | -| `image-to-video` | Generate videos from images | Generate videos from images | -| `video-editing` | Edit your videos | Edit your videos | -| `ai-enhance-videos` | Enhance videos | Enhance videos | -| `video-to-text` | Caption videos | Caption videos | -| `image-editing` | Edit any image | Edit any image | -| `super-resolution` | Upscale images with super resolution | Upscale images | -| `ai-image-restoration` | Restore images | Restore images | -| `remove-backgrounds` | Remove backgrounds | Remove backgrounds from images and videos | -| `sketch-to-image` | Turn sketches into images | Transform rough sketches into polished visuals | -| `ai-face-generator` | Generate images from a face | Generate images from a face | -| `face-swap` | Create realistic face swaps | Replace faces across images | -| `generate-anime` | Generate anime-style images and videos | Create anime-style content | -| `generate-emoji` | Generate emojis | Generate custom emojis from text or images | -| `control-net` | Control image generation | Control image generation | -| `language-models` | Large Language Models (LLMs) | Chat, generation, and NLP tasks | -| `vision-models` | Vision models | Image understanding, captioning, and detection | -| `text-to-speech` | Generate speech | Text-to-speech and voice cloning | -| `speech-to-text` | Transcribe speech to text | Transcribe speech to text | -| `ai-music-generation` | Generate music | Generate music | -| `sing-with-voices` | Create songs with voice cloning | Create songs with voice cloning | -| `lipsync` | Lipsync videos | Generate lipsync videos | -| `speaker-diarization` | Speaker diarization | Identify speakers from audio and video | -| `text-recognition-ocr` | OCR to extract text from images | Optical character recognition | -| `text-classification` | Classify text | Classify text by sentiment, topic, intent, or safety | -| `ai-detect-objects` | Object detection and segmentation | Detect and segment objects in images and video | -| `detect-nsfw-content` | Detect NSFW content | Detect NSFW content in images and text | -| `embedding-models` | Embedding models | Embedding models for search and analysis | -| `3d-models` | Create 3D content | Create 3D content | -| `utilities` | Media utilities | Auto-caption, watermark, frame extraction, and more | -| `flux` | FLUX family of models | FLUX image generation and editing models | -| `flux-fine-tunes` | Flux fine-tunes | Community-trained FLUX fine-tunes | -| `flux-kontext-fine-tunes` | Kontext fine-tunes | Custom Kontext image models | -| `qwen-image-fine-tunes` | Qwen-Image fine-tunes | Community-trained Qwen image fine-tunes | -| `wan-video` | WAN family of models | WAN image-to-video and text-to-video models | -| `try-for-free` | Try AI models for free | Free-tier models for video, image, upscaling, and restoration | +To see the current list of collections, use the API to [list all collections](#list-all-collections). The search API also returns matching collections alongside model results. From c9e8b00b086e5b9889d483597c0a699de9176c2a Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Thu, 26 Feb 2026 10:02:07 -0800 Subject: [PATCH 3/3] update model references: use flux-2-klein-9b, remove outdated recommendations --- skills/replicate/SKILL.md | 10 ++-- .../references/CLOUDFLARE_WORKERS.md | 4 +- .../references/CLOUDFLARE_WORKFLOWS.md | 2 +- skills/replicate/references/HTTP_API.md | 6 +-- skills/replicate/references/MODEL_SEARCH.md | 4 +- skills/replicate/references/PREDICTIONS.md | 32 ++++++------ skills/replicate/references/WORKFLOWS.md | 51 ++++--------------- 7 files changed, 40 insertions(+), 69 deletions(-) diff --git a/skills/replicate/SKILL.md b/skills/replicate/SKILL.md index ea415c5..2e31c47 100644 --- a/skills/replicate/SKILL.md +++ b/skills/replicate/SKILL.md @@ -21,7 +21,7 @@ Replicate lets you run AI models with a cloud API. Thousands of models for image ## Key concepts -- **Models** are identified as `owner/name` (e.g. `black-forest-labs/flux-schnell`). +- **Models** are identified as `owner/name` (e.g. `black-forest-labs/flux-2-klein-9b`). - **Official models** are always warm, have stable APIs, and predictable pricing. Use `owner/name`. - **Community models** require a version: `owner/name:version_id`. They cold-boot and can be slow. - **Predictions** are individual model runs: `starting` → `processing` → `succeeded`/`failed`/`canceled`. @@ -63,7 +63,7 @@ Always fetch a model's schema before running it. Schemas change. ```bash curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ - https://api.replicate.com/v1/models/black-forest-labs/flux-schnell \ + https://api.replicate.com/v1/models/black-forest-labs/flux-2-klein-9b \ | jq '.latest_version.openapi_schema.components.schemas.Input.properties | keys' ``` @@ -95,7 +95,7 @@ curl -s -X POST \ -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ -H "Content-Type: application/json" \ -H "Prefer: wait=60" \ - -d '{"version": "black-forest-labs/flux-schnell", "input": {"prompt": "a cat wearing a top hat", "num_outputs": 1}}' \ + -d '{"version": "black-forest-labs/flux-2-klein-9b", "input": {"prompt": "a cat wearing a top hat", "num_outputs": 1}}' \ https://api.replicate.com/v1/predictions | jq '{id, status, output}' ``` @@ -103,7 +103,7 @@ curl -s -X POST \ import replicate output = replicate.run( - "black-forest-labs/flux-schnell", + "black-forest-labs/flux-2-klein-9b", input={"prompt": "a cat wearing a top hat", "num_outputs": 1}, ) for item in output: @@ -114,7 +114,7 @@ for item in output: const Replicate = require("replicate"); const replicate = new Replicate(); -const output = await replicate.run("black-forest-labs/flux-schnell", { +const output = await replicate.run("black-forest-labs/flux-2-klein-9b", { input: { prompt: "a cat wearing a top hat", num_outputs: 1 }, }); console.log(output); diff --git a/skills/replicate/references/CLOUDFLARE_WORKERS.md b/skills/replicate/references/CLOUDFLARE_WORKERS.md index 8b70533..2daab56 100644 --- a/skills/replicate/references/CLOUDFLARE_WORKERS.md +++ b/skills/replicate/references/CLOUDFLARE_WORKERS.md @@ -61,7 +61,7 @@ export default { const replicate = new Replicate({ auth: env.REPLICATE_API_TOKEN }); let prediction = await replicate.predictions.create({ - model: "black-forest-labs/flux-2-klein-4b", + model: "black-forest-labs/flux-2-klein-9b", input: { prompt: "a red panda in a bamboo forest", aspect_ratio: "16:9" }, }); @@ -99,7 +99,7 @@ export default { const outputs = await Promise.all( prompts.map((prompt) => - replicate.run("black-forest-labs/flux-schnell", { + replicate.run("black-forest-labs/flux-2-klein-9b", { input: { prompt, num_outputs: 1 }, }), ), diff --git a/skills/replicate/references/CLOUDFLARE_WORKFLOWS.md b/skills/replicate/references/CLOUDFLARE_WORKFLOWS.md index fb50aa0..1381e5c 100644 --- a/skills/replicate/references/CLOUDFLARE_WORKFLOWS.md +++ b/skills/replicate/references/CLOUDFLARE_WORKFLOWS.md @@ -54,7 +54,7 @@ export class ReplicatePipeline extends WorkflowEntrypoint { const keyframes = await Promise.all( prompts.map((prompt, i) => step.do(`keyframe-${i}`, { retries: { limit: 3, delay: "5 seconds", backoff: "exponential" } }, async () => { - const output = await replicate.run("black-forest-labs/flux-2-klein-4b", { + const output = await replicate.run("black-forest-labs/flux-2-klein-9b", { input: { prompt, aspect_ratio: "16:9" }, }); return output.url(); diff --git a/skills/replicate/references/HTTP_API.md b/skills/replicate/references/HTTP_API.md index 2aff0f0..88a8ea3 100644 --- a/skills/replicate/references/HTTP_API.md +++ b/skills/replicate/references/HTTP_API.md @@ -59,7 +59,7 @@ GET /v1/predictions # List your predic ``` The unified `POST /v1/predictions` endpoint accepts these `version` formats: -- `owner/name` — official models (e.g. `black-forest-labs/flux-schnell`) +- `owner/name` — official models (e.g. `black-forest-labs/flux-2-klein-9b`) - `owner/name:version_id` — community models with pinned version - `version_id` — raw 64-character version hash @@ -92,7 +92,7 @@ Request: ```json { - "version": "black-forest-labs/flux-schnell", + "version": "black-forest-labs/flux-2-klein-9b", "input": { "prompt": "a cat wearing a top hat" }, @@ -107,7 +107,7 @@ Response: ```json { "id": "gm3qorzdhgbfurvjtvhg6dckhu", - "model": "black-forest-labs/flux-schnell", + "model": "black-forest-labs/flux-2-klein-9b", "version": "...", "input": {"prompt": "a cat wearing a top hat"}, "output": null, diff --git a/skills/replicate/references/MODEL_SEARCH.md b/skills/replicate/references/MODEL_SEARCH.md index d6bdef2..48292f9 100644 --- a/skills/replicate/references/MODEL_SEARCH.md +++ b/skills/replicate/references/MODEL_SEARCH.md @@ -41,7 +41,7 @@ Every model has an LLM-readable docs page: https://replicate.com/{owner}/{model}/llms.txt ``` -For example: +For example: ## Reading model schemas @@ -49,7 +49,7 @@ Every model exposes its input/output schema via the models API: ```bash curl -s -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ - https://api.replicate.com/v1/models/black-forest-labs/flux-schnell \ + https://api.replicate.com/v1/models/black-forest-labs/flux-2-klein-9b \ | jq '.latest_version.openapi_schema.components.schemas.Input.properties | to_entries[] | {name: .key, type: .value.type, description: .value.description}' ``` diff --git a/skills/replicate/references/PREDICTIONS.md b/skills/replicate/references/PREDICTIONS.md index f63344a..fe36751 100644 --- a/skills/replicate/references/PREDICTIONS.md +++ b/skills/replicate/references/PREDICTIONS.md @@ -22,7 +22,7 @@ The `POST /v1/predictions` endpoint handles both. Pass `version` as `owner/name` curl -s -X POST \ -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ -H "Content-Type: application/json" \ - -d '{"version": "black-forest-labs/flux-schnell", "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}}' \ + -d '{"version": "black-forest-labs/flux-2-klein-9b", "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}}' \ https://api.replicate.com/v1/predictions | jq '{id, status}' ``` @@ -30,7 +30,7 @@ curl -s -X POST \ import replicate prediction = replicate.predictions.create( - model="black-forest-labs/flux-schnell", + model="black-forest-labs/flux-2-klein-9b", input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, ) print(prediction.id, prediction.status) @@ -41,7 +41,7 @@ const Replicate = require("replicate"); const replicate = new Replicate(); const prediction = await replicate.predictions.create({ - model: "black-forest-labs/flux-schnell", + model: "black-forest-labs/flux-2-klein-9b", input: { prompt: "a red panda in a bamboo forest", num_outputs: 1 }, }); console.log(prediction.id, prediction.status); @@ -54,7 +54,7 @@ import replicate import time prediction = replicate.predictions.create( - model="black-forest-labs/flux-schnell", + model="black-forest-labs/flux-2-klein-9b", input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, ) while prediction.status not in ("succeeded", "failed", "canceled"): @@ -72,7 +72,7 @@ const Replicate = require("replicate"); const replicate = new Replicate(); let prediction = await replicate.predictions.create({ - model: "black-forest-labs/flux-schnell", + model: "black-forest-labs/flux-2-klein-9b", input: { prompt: "a red panda in a bamboo forest", num_outputs: 1 }, }); while (!["succeeded", "failed", "canceled"].includes(prediction.status)) { @@ -96,7 +96,7 @@ curl -s -X POST \ -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ -H "Content-Type: application/json" \ -H "Prefer: wait=60" \ - -d '{"version": "black-forest-labs/flux-schnell", "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}}' \ + -d '{"version": "black-forest-labs/flux-2-klein-9b", "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}}' \ https://api.replicate.com/v1/predictions | jq '{id, status, output}' ``` @@ -112,7 +112,7 @@ If the model doesn't finish in time, the response returns the prediction in its import replicate output = replicate.run( - "black-forest-labs/flux-schnell", + "black-forest-labs/flux-2-klein-9b", input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, ) for item in output: @@ -123,7 +123,7 @@ for item in output: const Replicate = require("replicate"); const replicate = new Replicate(); -const output = await replicate.run("black-forest-labs/flux-schnell", { +const output = await replicate.run("black-forest-labs/flux-2-klein-9b", { input: { prompt: "a red panda in a bamboo forest", num_outputs: 1 }, }); console.log(output); @@ -164,7 +164,7 @@ prompts = [ predictions = [ replicate.predictions.create( - model="black-forest-labs/flux-schnell", + model="black-forest-labs/flux-2-klein-9b", input={"prompt": p, "num_outputs": 1}, ) for p in prompts @@ -196,7 +196,7 @@ const prompts = [ const predictions = await Promise.all( prompts.map((prompt) => replicate.predictions.create({ - model: "black-forest-labs/flux-schnell", + model: "black-forest-labs/flux-2-klein-9b", input: { prompt, num_outputs: 1 }, }), ), @@ -226,7 +226,7 @@ curl -s -X POST \ -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ - "version": "black-forest-labs/flux-schnell", + "version": "black-forest-labs/flux-2-klein-9b", "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, "webhook": "https://example.com/webhook", "webhook_events_filter": ["completed"] @@ -244,7 +244,7 @@ Replicate signs webhook requests. Validate using the `Webhook-ID`, `Webhook-Time import replicate prediction = replicate.predictions.create( - model="black-forest-labs/flux-schnell", + model="black-forest-labs/flux-2-klein-9b", input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, ) cancelled = replicate.predictions.cancel(prediction.id) @@ -256,7 +256,7 @@ const Replicate = require("replicate"); const replicate = new Replicate(); const prediction = await replicate.predictions.create({ - model: "black-forest-labs/flux-schnell", + model: "black-forest-labs/flux-2-klein-9b", input: { prompt: "a red panda in a bamboo forest", num_outputs: 1 }, }); const cancelled = await replicate.predictions.cancel(prediction.id); @@ -272,7 +272,7 @@ curl -s -X POST \ -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ - "version": "black-forest-labs/flux-schnell", + "version": "black-forest-labs/flux-2-klein-9b", "input": {"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, "lifetime": "5m" }' \ @@ -289,7 +289,7 @@ Models that support streaming (typically language models) include a `stream` URL import replicate prediction = replicate.predictions.create( - model="meta/meta-llama-3-70b-instruct", + model="meta/meta-llama-3-8b-instruct", input={"prompt": "write a haiku about mountains"}, stream=True, ) @@ -306,7 +306,7 @@ import replicate async def main(): output = await replicate.async_run( - "black-forest-labs/flux-schnell", + "black-forest-labs/flux-2-klein-9b", input={"prompt": "a red panda in a bamboo forest", "num_outputs": 1}, ) for item in output: diff --git a/skills/replicate/references/WORKFLOWS.md b/skills/replicate/references/WORKFLOWS.md index 98a064d..00b48e3 100644 --- a/skills/replicate/references/WORKFLOWS.md +++ b/skills/replicate/references/WORKFLOWS.md @@ -11,12 +11,12 @@ import replicate import time pred_a = replicate.predictions.create( - model="black-forest-labs/flux-schnell", - input={"prompt": "a sunrise over mountains", "num_outputs": 1}, + model="black-forest-labs/flux-2-klein-9b", + input={"prompt": "a sunrise over mountains"}, ) pred_b = replicate.predictions.create( - model="black-forest-labs/flux-schnell", - input={"prompt": "a sunset over mountains", "num_outputs": 1}, + model="black-forest-labs/flux-2-klein-9b", + input={"prompt": "a sunset over mountains"}, ) def wait(pred_id): @@ -37,12 +37,12 @@ const replicate = new Replicate(); const [predA, predB] = await Promise.all([ replicate.predictions.create({ - model: "black-forest-labs/flux-schnell", - input: { prompt: "a sunrise over mountains", num_outputs: 1 }, + model: "black-forest-labs/flux-2-klein-9b", + input: { prompt: "a sunrise over mountains" }, }), replicate.predictions.create({ - model: "black-forest-labs/flux-schnell", - input: { prompt: "a sunset over mountains", num_outputs: 1 }, + model: "black-forest-labs/flux-2-klein-9b", + input: { prompt: "a sunset over mountains" }, }), ]); @@ -68,8 +68,8 @@ Model output URLs can be passed directly as file inputs to the next model. They' import replicate image_output = replicate.run( - "black-forest-labs/flux-schnell", - input={"prompt": "a serene mountain lake at dawn", "num_outputs": 1}, + "black-forest-labs/flux-2-klein-9b", + input={"prompt": "a serene mountain lake at dawn"}, ) image_url = image_output[0].url @@ -120,33 +120,4 @@ Translate a video's speech to another language: For PDFs or documents, use OCR to extract text, then use your own language model to process it. There's no need to run an LLM on Replicate for text processing — you're already running in one. -## Suggested models by task - -Always search for the latest models — these are current recommendations and may be outdated: - -| Task | Model | -|------|-------| -| Image generation (quality) | `black-forest-labs/flux-1.1-pro` | -| Image generation (fast) | `black-forest-labs/flux-schnell` | -| Image editing / transformation | `black-forest-labs/flux-kontext-pro` | -| Image inpainting | `ideogram-ai/ideogram-v3-balanced` | -| Image upscaling | `topazlabs/image-upscale` | -| Background removal | `851-labs/background-remover` | -| Image captioning / vision | `anthropic/claude-4-sonnet` | -| Object detection | `adirik/grounding-dino` | -| Image segmentation | `schananas/grounded_sam` | -| Video generation (best) | `google/veo-3` | -| Video generation (fast/cheap) | `pixverse/pixverse-v4.5` | -| Image to video | `pixverse/pixverse-v4.5` | -| Video upscaling | `topazlabs/video-upscale` | -| Lip sync (image + audio) | `zsxkib/sonic` | -| Lip sync (video + audio) | `kwaivgi/kling-lip-sync` | -| Text generation / chat | `anthropic/claude-4-sonnet` | -| Speech synthesis | `minimax/speech-02-hd` | -| Voice cloning | `minimax/voice-cloning` | -| Speech transcription | `openai/whisper` | -| Music generation | `meta/musicgen` | -| Sound effects for video | `zsxkib/mmaudio` | -| OCR / document extraction | `datalab-to/ocr` | - -Always fetch the model schema before using any of these — interfaces change. +