diff --git a/.changeset/wave-3-claude-code-skill.md b/.changeset/wave-3-claude-code-skill.md new file mode 100644 index 0000000..75f48a6 --- /dev/null +++ b/.changeset/wave-3-claude-code-skill.md @@ -0,0 +1,9 @@ +--- +"tokenometer": minor +"@tokenometer/core": minor +--- + +Add `@tokenometer/claude-code-skill` — a Claude Code skill that teaches +Claude Code agents to invoke `npx tokenometer` for prompt-cost analysis. +Install via `~/.claude/skills/tokenometer/SKILL.md`. Submission to +community skill registry tracked separately. diff --git a/.changeset/wave-3-latency.md b/.changeset/wave-3-latency.md new file mode 100644 index 0000000..45b5aab --- /dev/null +++ b/.changeset/wave-3-latency.md @@ -0,0 +1,11 @@ +--- +"tokenometer": minor +"@tokenometer/core": minor +--- + +Add `--latency` flag — measures real generation latency (TTFT + total ms + +tokens/sec, p50/p95/mean over n trials) alongside token cost. Implies +`--empirical`. Default trials = 3, configurable via `--latency-trials ` +(1-10). Bumps default `--max-spend` to $0.25 to cover the n × 200-token +generations. Supported providers: Anthropic, OpenAI, Google, Cohere, +Mistral (latter two are metered). diff --git a/.changeset/wave-3-mistral-cohere.md b/.changeset/wave-3-mistral-cohere.md new file mode 100644 index 0000000..2e3cbf1 --- /dev/null +++ b/.changeset/wave-3-mistral-cohere.md @@ -0,0 +1,19 @@ +--- +"tokenometer": minor +"@tokenometer/core": minor +--- + +Add Mistral and Cohere providers. + +- Mistral: `mistral-tokenizer-js` for SentencePiece family (Mistral 7B, + Mixtral, Mistral Large 2407, Codestral); `chars/4` heuristic for Tekken + models (NeMo, Pixtral, Mistral Small 2409+, Devstral, Mistral Medium + 2505+, Magistral, Ministral). All marked `approximate: true`. Empirical + mode unsupported (Mistral has no public token-count API). +- Cohere: offline heuristic `chars/4` (Cohere SDK is REST-only; no offline + tokenizer ships in JS). Empirical via `POST /v1/tokenize` when + `COHERE_API_KEY` is set. + +Pricing for Mistral auto-sourced from `@tokenlens/models/mistral`. Cohere +pricing comes from `LOCAL_OVERRIDES` (`command-r`, `command-r-plus`) +because `@tokenlens/models` does not yet ship a Cohere catalog at v1.3.0. diff --git a/.changeset/wave-3-playground-showcase.md b/.changeset/wave-3-playground-showcase.md new file mode 100644 index 0000000..9023fe2 --- /dev/null +++ b/.changeset/wave-3-playground-showcase.md @@ -0,0 +1,11 @@ +--- +"tokenometer": minor +"@tokenometer/core": minor +--- + +Playground (`https://tokenometer.vercel.app`) gains showcase pages for +every Wave 2 feature: `/diff`, `/by-file`, `/sarif`, `/vision`, +`/config-builder`, `/init`, `/models` (Cost Atlas + per-model SEO pages), +plus placeholder pages for the VS Code extension and Claude Code skill. + + \ No newline at end of file diff --git a/.changeset/wave-3-vscode-extension.md b/.changeset/wave-3-vscode-extension.md new file mode 100644 index 0000000..76f09d9 --- /dev/null +++ b/.changeset/wave-3-vscode-extension.md @@ -0,0 +1,9 @@ +--- +"tokenometer": minor +"@tokenometer/core": minor +--- + +Add VS Code / Cursor extension (`@tokenometer/vscode`). Status bar shows +live token count + USD cost for the active editor file across Claude, +GPT-4o, and Gemini. Reuses `@tokenometer/core`. Marketplace publish +follows in Phase I. diff --git a/README.md b/README.md index 5756a3f..210829c 100644 --- a/README.md +++ b/README.md @@ -58,14 +58,15 @@ The `Approx` column shows `✓` when the count is a proxy (Anthropic / Google of ## Why this exists -`tiktoken` and `@anthropic-ai/tokenizer` give you a token count for one provider. They don't tell you: +**Cost AND latency in one CLI — the only tool that does both.** `tiktoken` and `@anthropic-ai/tokenizer` give you a token count for one provider. They don't tell you: - What the same prompt costs across **multiple providers and models** +- How **fast** each provider actually responds (TTFT + tokens/sec) — a real generation, not a synthetic benchmark - Whether **format conversion** (YAML ↔ JSON ↔ XML ↔ MD) actually moves the needle - The **empirical** cost — what your provider actually charged on a real call, after prompt caching - Whether a PR introduced a **prompt-cost regression** -Tokenometer is dev-time, multi-provider, multi-format, optionally empirical, and CI-native. +Tokenometer is dev-time, multi-provider, multi-format, optionally empirical, latency-aware, and CI-native. ## Install @@ -135,11 +136,13 @@ The CLI also supports `--output json|sarif` for machine-readable output, `--by-f Tokenometer picks a tokenizer per provider and flags the count as approximate (`approximate: true` in the API result) when the offline path is a proxy: -| Provider | Offline tokenizer | Exactness | Empirical (`--empirical`) | -|-----------|------------------------------|-------------|----------------------------------| -| OpenAI | `gpt-tokenizer` `o200k_base` | exact | same `o200k_base` (matches OpenAI production count) | -| Anthropic | `gpt-tokenizer` `cl100k_base`| approximate | `messages.countTokens` (exact, free) | -| Google | `chars / 4` heuristic | approximate | `model.countTokens` (exact, free) | +| Provider | Offline tokenizer | Exactness | Empirical (`--empirical`) | +|-----------|------------------------------------------------|-------------|----------------------------------| +| OpenAI | `gpt-tokenizer` `o200k_base` | exact | same `o200k_base` (matches OpenAI production count) | +| Anthropic | `gpt-tokenizer` `cl100k_base` | approximate | `messages.countTokens` (exact, free) | +| Google | `chars / 4` heuristic | approximate | `model.countTokens` (exact, free) | +| Mistral | `mistral-tokenizer-js` (V1/V2/V3) · `chars/4` for Tekken | approximate | unsupported (no public token-count endpoint) | +| Cohere | `chars / 4` heuristic | approximate | `POST /v1/tokenize` (exact, free, requires `COHERE_API_KEY`) | Cost = `tokens / 1000 × per-1k input rate`. Pricing and context windows are sourced from the [`tokenlens`](https://www.npmjs.com/package/tokenlens) registry, with a small set of local overrides for bleeding-edge models the registry hasn't picked up yet — see [`packages/core/src/rates.ts`](packages/core/src/rates.ts) (`RATES_VERSION`). @@ -153,7 +156,7 @@ Cost = `tokens / 1000 × per-1k input rate`. Pricing and context windows are sou ## Status -Early. v0.0.x — see [milestones](https://github.com/faraa2m/tokenometer/milestones). Roadmap to v1.0.0 in progress: VS Code extension, Claude Code skill, vision-token cost, Mistral + Cohere providers. +Early. v0.0.x — see [milestones](https://github.com/faraa2m/tokenometer/milestones). Roadmap to v1.0.0 in progress: VS Code extension, Claude Code skill, vision-token cost. ## License diff --git a/benchmarks/results.json b/benchmarks/results.json index 5382636..135b93e 100644 --- a/benchmarks/results.json +++ b/benchmarks/results.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-05-09T03:22:44.977Z", + "generatedAt": "2026-05-10T04:07:57.509Z", "formats": [ "json", "markdown", @@ -21,7 +21,13 @@ "claude-opus-4-7", "claude-sonnet-4-20250514", "claude-sonnet-4-6", + "codestral-latest", "codex-mini-latest", + "command-r", + "command-r-plus", + "devstral-medium-2507", + "devstral-small-2505", + "devstral-small-2507", "gemini-1.5-flash", "gemini-1.5-flash-8b", "gemini-1.5-pro", @@ -41,6 +47,16 @@ "gpt-5-chat-latest", "gpt-5-mini", "gpt-5-nano", + "magistral-medium-latest", + "magistral-small", + "ministral-3b-latest", + "ministral-8b-latest", + "mistral-large-latest", + "mistral-medium-2505", + "mistral-medium-2508", + "mistral-medium-latest", + "mistral-nemo", + "mistral-small-latest", "o1", "o1-mini", "o1-pro", @@ -49,7 +65,12 @@ "o3-mini", "o3-pro", "o4-mini", - "o4-mini-deep-research" + "o4-mini-deep-research", + "open-mistral-7b", + "open-mixtral-8x22b", + "open-mixtral-8x7b", + "pixtral-12b", + "pixtral-large-latest" ], "prompts": { "01-tiny-json-config.json": { @@ -469,6 +490,38 @@ "tokenizer": "cl100k_base" } }, + "codestral-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000285, + "inputTokens": 95, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000315, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0000336, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000351, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000291, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, "codex-mini-latest": { "json": { "approximate": false, @@ -501,6 +554,166 @@ "tokenizer": "o200k_base" } }, + "command-r": { + "json": { + "approximate": true, + "inputCost": 0.0000123, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001245, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001365, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000153, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00001185, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "command-r-plus": { + "json": { + "approximate": true, + "inputCost": 0.000205, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0002075, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0002275, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000255, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001975, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "devstral-medium-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000328, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000332, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000364, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000408, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000316, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "devstral-small-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000082, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000083, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000091, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000102, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000079, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "devstral-small-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000082, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000083, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000091, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000102, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000079, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, "gemini-1.5-flash": { "json": { "approximate": true, @@ -1109,167 +1322,359 @@ "tokenizer": "o200k_base" } }, - "o1": { + "magistral-medium-latest": { "json": { - "approximate": false, - "inputCost": 0.001155, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000164, + "inputTokens": 82, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.001365, - "inputTokens": 91, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000166, + "inputTokens": 83, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.001425, - "inputTokens": 95, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000182, + "inputTokens": 91, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0015, - "inputTokens": 100, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000204, + "inputTokens": 102, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.001245, - "inputTokens": 83, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000158, + "inputTokens": 79, + "tokenizer": "heuristic" } }, - "o1-mini": { + "magistral-small": { "json": { - "approximate": false, - "inputCost": 0.0000847, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000041, + "inputTokens": 82, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0001001, - "inputTokens": 91, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000415, + "inputTokens": 83, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0001045, - "inputTokens": 95, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000455, + "inputTokens": 91, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00011, - "inputTokens": 100, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000051, + "inputTokens": 102, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0000913, - "inputTokens": 83, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000395, + "inputTokens": 79, + "tokenizer": "heuristic" } }, - "o1-pro": { + "ministral-3b-latest": { "json": { - "approximate": false, - "inputCost": 0.01155, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00000328, + "inputTokens": 82, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.01365, - "inputTokens": 91, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.01425, + "approximate": true, + "inputCost": 0.00000332, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00000364, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00000408, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00000316, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "ministral-8b-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000082, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000083, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000091, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000102, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000079, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "mistral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.00019, "inputTokens": 95, - "tokenizer": "o200k_base" + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00021, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000224, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.015, - "inputTokens": 100, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000234, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.01245, + "approximate": true, + "inputCost": 0.000194, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "mistral-medium-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000328, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000332, "inputTokens": 83, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000364, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000408, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000316, + "inputTokens": 79, + "tokenizer": "heuristic" } }, - "o3": { + "mistral-medium-2508": { "json": { - "approximate": false, - "inputCost": 0.000154, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000328, + "inputTokens": 82, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000182, + "approximate": true, + "inputCost": 0.0000332, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000364, "inputTokens": 91, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000408, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000316, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "mistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000328, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000332, + "inputTokens": 83, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00019, - "inputTokens": 95, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000364, + "inputTokens": 91, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0002, - "inputTokens": 100, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000408, + "inputTokens": 102, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.000166, + "approximate": true, + "inputCost": 0.0000316, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "mistral-nemo": { + "json": { + "approximate": true, + "inputCost": 0.0000123, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001245, "inputTokens": 83, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001365, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000153, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00001185, + "inputTokens": 79, + "tokenizer": "heuristic" } }, - "o3-deep-research": { + "mistral-small-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000082, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000083, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000091, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000102, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000079, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "o1": { "json": { "approximate": false, - "inputCost": 0.00077, + "inputCost": 0.001155, "inputTokens": 77, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00091, + "inputCost": 0.001365, "inputTokens": 91, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00095, + "inputCost": 0.001425, "inputTokens": 95, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.001, + "inputCost": 0.0015, "inputTokens": 100, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00083, + "inputCost": 0.001245, "inputTokens": 83, "tokenizer": "o200k_base" } }, - "o3-mini": { + "o1-mini": { "json": { "approximate": false, "inputCost": 0.0000847, @@ -1301,54 +1706,182 @@ "tokenizer": "o200k_base" } }, - "o3-pro": { + "o1-pro": { "json": { "approximate": false, - "inputCost": 0.00154, + "inputCost": 0.01155, "inputTokens": 77, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00182, + "inputCost": 0.01365, "inputTokens": 91, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0019, + "inputCost": 0.01425, "inputTokens": 95, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.002, + "inputCost": 0.015, "inputTokens": 100, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00166, + "inputCost": 0.01245, "inputTokens": 83, "tokenizer": "o200k_base" } }, - "o4-mini": { + "o3": { "json": { "approximate": false, - "inputCost": 0.0000847, + "inputCost": 0.000154, "inputTokens": 77, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0001001, + "inputCost": 0.000182, "inputTokens": 91, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0001045, + "inputCost": 0.00019, + "inputTokens": 95, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0002, + "inputTokens": 100, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.000166, + "inputTokens": 83, + "tokenizer": "o200k_base" + } + }, + "o3-deep-research": { + "json": { + "approximate": false, + "inputCost": 0.00077, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00091, + "inputTokens": 91, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00095, + "inputTokens": 95, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.001, + "inputTokens": 100, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00083, + "inputTokens": 83, + "tokenizer": "o200k_base" + } + }, + "o3-mini": { + "json": { + "approximate": false, + "inputCost": 0.0000847, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0001001, + "inputTokens": 91, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0001045, + "inputTokens": 95, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00011, + "inputTokens": 100, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0000913, + "inputTokens": 83, + "tokenizer": "o200k_base" + } + }, + "o3-pro": { + "json": { + "approximate": false, + "inputCost": 0.00154, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00182, + "inputTokens": 91, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0019, + "inputTokens": 95, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.002, + "inputTokens": 100, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00166, + "inputTokens": 83, + "tokenizer": "o200k_base" + } + }, + "o4-mini": { + "json": { + "approximate": false, + "inputCost": 0.0000847, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0001001, + "inputTokens": 91, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0001045, "inputTokens": 95, "tokenizer": "o200k_base" }, @@ -1396,6 +1929,166 @@ "inputTokens": 83, "tokenizer": "o200k_base" } + }, + "open-mistral-7b": { + "json": { + "approximate": true, + "inputCost": 0.00002375, + "inputTokens": 95, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00002625, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000028, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.00002925, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00002425, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x22b": { + "json": { + "approximate": true, + "inputCost": 0.00019, + "inputTokens": 95, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00021, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000224, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000234, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000194, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x7b": { + "json": { + "approximate": true, + "inputCost": 0.0000665, + "inputTokens": 95, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000735, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0000784, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000819, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000679, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "pixtral-12b": { + "json": { + "approximate": true, + "inputCost": 0.0000123, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001245, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001365, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000153, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00001185, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "pixtral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.000164, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000166, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.000182, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000204, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000158, + "inputTokens": 79, + "tokenizer": "heuristic" + } } }, "02-tiny-yaml-config.yaml": { @@ -1815,18 +2508,50 @@ "tokenizer": "cl100k_base" } }, - "codex-mini-latest": { + "codestral-latest": { "json": { - "approximate": false, - "inputCost": 0.0001155, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000285, + "inputTokens": 95, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.0001365, - "inputTokens": 91, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000315, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0000336, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000351, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000291, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "codex-mini-latest": { + "json": { + "approximate": false, + "inputCost": 0.0001155, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0001365, + "inputTokens": 91, + "tokenizer": "o200k_base" }, "text": { "approximate": false, @@ -1847,6 +2572,166 @@ "tokenizer": "o200k_base" } }, + "command-r": { + "json": { + "approximate": true, + "inputCost": 0.0000123, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001245, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001365, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000153, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00001185, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "command-r-plus": { + "json": { + "approximate": true, + "inputCost": 0.000205, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0002075, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0002275, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000255, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001975, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "devstral-medium-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000328, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000332, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000364, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000408, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000316, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "devstral-small-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000082, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000083, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000091, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000102, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000079, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "devstral-small-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000082, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000083, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000091, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000102, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000079, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, "gemini-1.5-flash": { "json": { "approximate": true, @@ -2455,167 +3340,359 @@ "tokenizer": "o200k_base" } }, - "o1": { + "magistral-medium-latest": { "json": { - "approximate": false, - "inputCost": 0.001155, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000164, + "inputTokens": 82, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.001365, - "inputTokens": 91, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000166, + "inputTokens": 83, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.001425, - "inputTokens": 95, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000182, + "inputTokens": 91, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0015, - "inputTokens": 100, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000204, + "inputTokens": 102, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.001245, - "inputTokens": 83, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000158, + "inputTokens": 79, + "tokenizer": "heuristic" } }, - "o1-mini": { + "magistral-small": { "json": { - "approximate": false, - "inputCost": 0.0000847, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000041, + "inputTokens": 82, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0001001, - "inputTokens": 91, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000415, + "inputTokens": 83, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0001045, - "inputTokens": 95, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000455, + "inputTokens": 91, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00011, - "inputTokens": 100, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000051, + "inputTokens": 102, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0000913, - "inputTokens": 83, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000395, + "inputTokens": 79, + "tokenizer": "heuristic" } }, - "o1-pro": { + "ministral-3b-latest": { "json": { - "approximate": false, - "inputCost": 0.01155, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00000328, + "inputTokens": 82, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.01365, + "approximate": true, + "inputCost": 0.00000332, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00000364, "inputTokens": 91, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00000408, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00000316, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "ministral-8b-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000082, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000083, + "inputTokens": 83, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.01425, + "approximate": true, + "inputCost": 0.0000091, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000102, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000079, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "mistral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.00019, "inputTokens": 95, - "tokenizer": "o200k_base" + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00021, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000224, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.015, - "inputTokens": 100, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000234, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.01245, + "approximate": true, + "inputCost": 0.000194, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "mistral-medium-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000328, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000332, "inputTokens": 83, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000364, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000408, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000316, + "inputTokens": 79, + "tokenizer": "heuristic" } }, - "o3": { + "mistral-medium-2508": { "json": { - "approximate": false, - "inputCost": 0.000154, - "inputTokens": 77, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000328, + "inputTokens": 82, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000182, + "approximate": true, + "inputCost": 0.0000332, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000364, "inputTokens": 91, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000408, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000316, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "mistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000328, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000332, + "inputTokens": 83, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00019, - "inputTokens": 95, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000364, + "inputTokens": 91, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0002, - "inputTokens": 100, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000408, + "inputTokens": 102, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.000166, + "approximate": true, + "inputCost": 0.0000316, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "mistral-nemo": { + "json": { + "approximate": true, + "inputCost": 0.0000123, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001245, "inputTokens": 83, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001365, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000153, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00001185, + "inputTokens": 79, + "tokenizer": "heuristic" } }, - "o3-deep-research": { + "mistral-small-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000082, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000083, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000091, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000102, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000079, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "o1": { "json": { "approximate": false, - "inputCost": 0.00077, + "inputCost": 0.001155, "inputTokens": 77, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00091, + "inputCost": 0.001365, "inputTokens": 91, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00095, + "inputCost": 0.001425, "inputTokens": 95, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.001, + "inputCost": 0.0015, "inputTokens": 100, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00083, + "inputCost": 0.001245, "inputTokens": 83, "tokenizer": "o200k_base" } }, - "o3-mini": { + "o1-mini": { "json": { "approximate": false, "inputCost": 0.0000847, @@ -2647,60 +3724,188 @@ "tokenizer": "o200k_base" } }, - "o3-pro": { + "o1-pro": { "json": { "approximate": false, - "inputCost": 0.00154, + "inputCost": 0.01155, "inputTokens": 77, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00182, + "inputCost": 0.01365, "inputTokens": 91, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0019, + "inputCost": 0.01425, "inputTokens": 95, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.002, + "inputCost": 0.015, "inputTokens": 100, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00166, + "inputCost": 0.01245, "inputTokens": 83, "tokenizer": "o200k_base" } }, - "o4-mini": { + "o3": { "json": { "approximate": false, - "inputCost": 0.0000847, + "inputCost": 0.000154, "inputTokens": 77, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0001001, + "inputCost": 0.000182, "inputTokens": 91, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0001045, + "inputCost": 0.00019, "inputTokens": 95, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00011, + "inputCost": 0.0002, + "inputTokens": 100, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.000166, + "inputTokens": 83, + "tokenizer": "o200k_base" + } + }, + "o3-deep-research": { + "json": { + "approximate": false, + "inputCost": 0.00077, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00091, + "inputTokens": 91, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00095, + "inputTokens": 95, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.001, + "inputTokens": 100, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00083, + "inputTokens": 83, + "tokenizer": "o200k_base" + } + }, + "o3-mini": { + "json": { + "approximate": false, + "inputCost": 0.0000847, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0001001, + "inputTokens": 91, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0001045, + "inputTokens": 95, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00011, + "inputTokens": 100, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0000913, + "inputTokens": 83, + "tokenizer": "o200k_base" + } + }, + "o3-pro": { + "json": { + "approximate": false, + "inputCost": 0.00154, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00182, + "inputTokens": 91, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0019, + "inputTokens": 95, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.002, + "inputTokens": 100, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00166, + "inputTokens": 83, + "tokenizer": "o200k_base" + } + }, + "o4-mini": { + "json": { + "approximate": false, + "inputCost": 0.0000847, + "inputTokens": 77, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0001001, + "inputTokens": 91, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0001045, + "inputTokens": 95, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00011, "inputTokens": 100, "tokenizer": "o200k_base" }, @@ -2742,6 +3947,166 @@ "inputTokens": 83, "tokenizer": "o200k_base" } + }, + "open-mistral-7b": { + "json": { + "approximate": true, + "inputCost": 0.00002375, + "inputTokens": 95, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00002625, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000028, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.00002925, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00002425, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x22b": { + "json": { + "approximate": true, + "inputCost": 0.00019, + "inputTokens": 95, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00021, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000224, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000234, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000194, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x7b": { + "json": { + "approximate": true, + "inputCost": 0.0000665, + "inputTokens": 95, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000735, + "inputTokens": 105, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0000784, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000819, + "inputTokens": 117, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000679, + "inputTokens": 97, + "tokenizer": "mistral_v1_v3" + } + }, + "pixtral-12b": { + "json": { + "approximate": true, + "inputCost": 0.0000123, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001245, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001365, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000153, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00001185, + "inputTokens": 79, + "tokenizer": "heuristic" + } + }, + "pixtral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.000164, + "inputTokens": 82, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000166, + "inputTokens": 83, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.000182, + "inputTokens": 91, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000204, + "inputTokens": 102, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000158, + "inputTokens": 79, + "tokenizer": "heuristic" + } } }, "03-plain-prose.txt": { @@ -3161,18 +4526,50 @@ "tokenizer": "cl100k_base" } }, - "codex-mini-latest": { + "codestral-latest": { "json": { - "approximate": false, - "inputCost": 0.0002625, - "inputTokens": 175, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000567, + "inputTokens": 189, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.000261, - "inputTokens": 174, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000561, + "inputTokens": 187, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0000558, + "inputTokens": 186, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001302, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000597, + "inputTokens": 199, + "tokenizer": "mistral_v1_v3" + } + }, + "codex-mini-latest": { + "json": { + "approximate": false, + "inputCost": 0.0002625, + "inputTokens": 175, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000261, + "inputTokens": 174, + "tokenizer": "o200k_base" }, "text": { "approximate": false, @@ -3193,6 +4590,166 @@ "tokenizer": "o200k_base" } }, + "command-r": { + "json": { + "approximate": true, + "inputCost": 0.00003345, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000333, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003315, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00004965, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00003375, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "command-r-plus": { + "json": { + "approximate": true, + "inputCost": 0.0005575, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000555, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0005525, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0008275, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0005625, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "devstral-medium-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000892, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000888, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000884, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001324, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00009, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "devstral-small-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000223, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000222, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000221, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000331, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000225, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "devstral-small-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000223, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000222, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000221, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000331, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000225, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, "gemini-1.5-flash": { "json": { "approximate": true, @@ -3801,167 +5358,359 @@ "tokenizer": "o200k_base" } }, - "o1": { + "magistral-medium-latest": { "json": { - "approximate": false, - "inputCost": 0.002625, - "inputTokens": 175, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000446, + "inputTokens": 223, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00261, - "inputTokens": 174, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000444, + "inputTokens": 222, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00258, - "inputTokens": 172, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000442, + "inputTokens": 221, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00444, - "inputTokens": 296, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000662, + "inputTokens": 331, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00273, - "inputTokens": 182, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00045, + "inputTokens": 225, + "tokenizer": "heuristic" } }, - "o1-mini": { + "magistral-small": { "json": { - "approximate": false, - "inputCost": 0.0001925, - "inputTokens": 175, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001115, + "inputTokens": 223, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0001914, - "inputTokens": 174, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000111, + "inputTokens": 222, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0001892, - "inputTokens": 172, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001105, + "inputTokens": 221, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0003256, - "inputTokens": 296, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001655, + "inputTokens": 331, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0002002, - "inputTokens": 182, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001125, + "inputTokens": 225, + "tokenizer": "heuristic" } }, - "o1-pro": { + "ministral-3b-latest": { "json": { - "approximate": false, - "inputCost": 0.02625, - "inputTokens": 175, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00000892, + "inputTokens": 223, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0261, - "inputTokens": 174, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.0258, - "inputTokens": 172, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00000888, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00000884, + "inputTokens": 221, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0444, - "inputTokens": 296, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001324, + "inputTokens": 331, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0273, - "inputTokens": 182, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000009, + "inputTokens": 225, + "tokenizer": "heuristic" } }, - "o3": { + "ministral-8b-latest": { "json": { - "approximate": false, - "inputCost": 0.00035, - "inputTokens": 175, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000223, + "inputTokens": 223, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000348, - "inputTokens": 174, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000222, + "inputTokens": 222, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000344, - "inputTokens": 172, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000221, + "inputTokens": 221, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.000592, - "inputTokens": 296, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000331, + "inputTokens": 331, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.000364, - "inputTokens": 182, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000225, + "inputTokens": 225, + "tokenizer": "heuristic" } }, - "o3-deep-research": { + "mistral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.000378, + "inputTokens": 189, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000374, + "inputTokens": 187, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000372, + "inputTokens": 186, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000868, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000398, + "inputTokens": 199, + "tokenizer": "mistral_v1_v3" + } + }, + "mistral-medium-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000892, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000888, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000884, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001324, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00009, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "mistral-medium-2508": { + "json": { + "approximate": true, + "inputCost": 0.0000892, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000888, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000884, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001324, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00009, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "mistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000892, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000888, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000884, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001324, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00009, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "mistral-nemo": { + "json": { + "approximate": true, + "inputCost": 0.00003345, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000333, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003315, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00004965, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00003375, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "mistral-small-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000223, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000222, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000221, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000331, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000225, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "o1": { "json": { "approximate": false, - "inputCost": 0.00175, + "inputCost": 0.002625, "inputTokens": 175, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00174, + "inputCost": 0.00261, "inputTokens": 174, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00172, + "inputCost": 0.00258, "inputTokens": 172, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00296, + "inputCost": 0.00444, "inputTokens": 296, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00182, + "inputCost": 0.00273, "inputTokens": 182, "tokenizer": "o200k_base" } }, - "o3-mini": { + "o1-mini": { "json": { "approximate": false, "inputCost": 0.0001925, @@ -3993,42 +5742,170 @@ "tokenizer": "o200k_base" } }, - "o3-pro": { + "o1-pro": { "json": { "approximate": false, - "inputCost": 0.0035, + "inputCost": 0.02625, "inputTokens": 175, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00348, + "inputCost": 0.0261, "inputTokens": 174, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00344, + "inputCost": 0.0258, "inputTokens": 172, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00592, + "inputCost": 0.0444, "inputTokens": 296, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00364, + "inputCost": 0.0273, "inputTokens": 182, "tokenizer": "o200k_base" } }, - "o4-mini": { + "o3": { "json": { "approximate": false, - "inputCost": 0.0001925, + "inputCost": 0.00035, + "inputTokens": 175, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000348, + "inputTokens": 174, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000344, + "inputTokens": 172, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.000592, + "inputTokens": 296, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.000364, + "inputTokens": 182, + "tokenizer": "o200k_base" + } + }, + "o3-deep-research": { + "json": { + "approximate": false, + "inputCost": 0.00175, + "inputTokens": 175, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00174, + "inputTokens": 174, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00172, + "inputTokens": 172, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00296, + "inputTokens": 296, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00182, + "inputTokens": 182, + "tokenizer": "o200k_base" + } + }, + "o3-mini": { + "json": { + "approximate": false, + "inputCost": 0.0001925, + "inputTokens": 175, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0001914, + "inputTokens": 174, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0001892, + "inputTokens": 172, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0003256, + "inputTokens": 296, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0002002, + "inputTokens": 182, + "tokenizer": "o200k_base" + } + }, + "o3-pro": { + "json": { + "approximate": false, + "inputCost": 0.0035, + "inputTokens": 175, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00348, + "inputTokens": 174, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00344, + "inputTokens": 172, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00592, + "inputTokens": 296, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00364, + "inputTokens": 182, + "tokenizer": "o200k_base" + } + }, + "o4-mini": { + "json": { + "approximate": false, + "inputCost": 0.0001925, "inputTokens": 175, "tokenizer": "o200k_base" }, @@ -4088,6 +5965,166 @@ "inputTokens": 182, "tokenizer": "o200k_base" } + }, + "open-mistral-7b": { + "json": { + "approximate": true, + "inputCost": 0.00004725, + "inputTokens": 189, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00004675, + "inputTokens": 187, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0000465, + "inputTokens": 186, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001085, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00004975, + "inputTokens": 199, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x22b": { + "json": { + "approximate": true, + "inputCost": 0.000378, + "inputTokens": 189, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000374, + "inputTokens": 187, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000372, + "inputTokens": 186, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000868, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000398, + "inputTokens": 199, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x7b": { + "json": { + "approximate": true, + "inputCost": 0.0001323, + "inputTokens": 189, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001309, + "inputTokens": 187, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0001302, + "inputTokens": 186, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0003038, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001393, + "inputTokens": 199, + "tokenizer": "mistral_v1_v3" + } + }, + "pixtral-12b": { + "json": { + "approximate": true, + "inputCost": 0.00003345, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000333, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003315, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00004965, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00003375, + "inputTokens": 225, + "tokenizer": "heuristic" + } + }, + "pixtral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.000446, + "inputTokens": 223, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000444, + "inputTokens": 222, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.000442, + "inputTokens": 221, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000662, + "inputTokens": 331, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00045, + "inputTokens": 225, + "tokenizer": "heuristic" + } } }, "04-code-typescript.ts": { @@ -4507,23 +6544,55 @@ "tokenizer": "cl100k_base" } }, - "codex-mini-latest": { + "codestral-latest": { "json": { - "approximate": false, - "inputCost": 0.0005085, - "inputTokens": 339, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001137, + "inputTokens": 379, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.000411, - "inputTokens": 274, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000105, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.000411, - "inputTokens": 274, + "approximate": true, + "inputCost": 0.000105, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001122, + "inputTokens": 374, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001056, + "inputTokens": 352, + "tokenizer": "mistral_v1_v3" + } + }, + "codex-mini-latest": { + "json": { + "approximate": false, + "inputCost": 0.0005085, + "inputTokens": 339, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000411, + "inputTokens": 274, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000411, + "inputTokens": 274, "tokenizer": "o200k_base" }, "xml": { @@ -4539,6 +6608,166 @@ "tokenizer": "o200k_base" } }, + "command-r": { + "json": { + "approximate": true, + "inputCost": 0.0000426, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000411, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000411, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00004245, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00004125, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, + "command-r-plus": { + "json": { + "approximate": true, + "inputCost": 0.00071, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000685, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.000685, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0007075, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0006875, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, + "devstral-medium-2507": { + "json": { + "approximate": true, + "inputCost": 0.0001136, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001096, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001096, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001132, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00011, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, + "devstral-small-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000284, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000274, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000274, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000283, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000275, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, + "devstral-small-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000284, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000274, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000274, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000283, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000275, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, "gemini-1.5-flash": { "json": { "approximate": true, @@ -5147,263 +7376,423 @@ "tokenizer": "o200k_base" } }, - "o1": { + "magistral-medium-latest": { "json": { - "approximate": false, - "inputCost": 0.005085, - "inputTokens": 339, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000568, + "inputTokens": 284, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00411, + "approximate": true, + "inputCost": 0.000548, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00411, + "approximate": true, + "inputCost": 0.000548, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.004395, - "inputTokens": 293, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000566, + "inputTokens": 283, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.004125, + "approximate": true, + "inputCost": 0.00055, "inputTokens": 275, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" } }, - "o1-mini": { + "magistral-small": { "json": { - "approximate": false, - "inputCost": 0.0003729, - "inputTokens": 339, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000142, + "inputTokens": 284, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0003014, + "approximate": true, + "inputCost": 0.000137, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0003014, + "approximate": true, + "inputCost": 0.000137, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0003223, - "inputTokens": 293, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001415, + "inputTokens": 283, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0003025, + "approximate": true, + "inputCost": 0.0001375, "inputTokens": 275, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" } }, - "o1-pro": { + "ministral-3b-latest": { "json": { - "approximate": false, - "inputCost": 0.05085, - "inputTokens": 339, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001136, + "inputTokens": 284, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0411, + "approximate": true, + "inputCost": 0.00001096, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0411, + "approximate": true, + "inputCost": 0.00001096, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.04395, - "inputTokens": 293, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001132, + "inputTokens": 283, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.04125, + "approximate": true, + "inputCost": 0.000011, "inputTokens": 275, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" } }, - "o3": { + "ministral-8b-latest": { "json": { - "approximate": false, - "inputCost": 0.000678, - "inputTokens": 339, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000284, + "inputTokens": 284, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000548, + "approximate": true, + "inputCost": 0.0000274, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000548, + "approximate": true, + "inputCost": 0.0000274, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.000586, - "inputTokens": 293, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000283, + "inputTokens": 283, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00055, + "approximate": true, + "inputCost": 0.0000275, "inputTokens": 275, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" } }, - "o3-deep-research": { + "mistral-large-latest": { "json": { - "approximate": false, - "inputCost": 0.00339, - "inputTokens": 339, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000758, + "inputTokens": 379, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.00274, + "approximate": true, + "inputCost": 0.0007, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0007, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000748, + "inputTokens": 374, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000704, + "inputTokens": 352, + "tokenizer": "mistral_v1_v3" + } + }, + "mistral-medium-2505": { + "json": { + "approximate": true, + "inputCost": 0.0001136, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001096, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00274, + "approximate": true, + "inputCost": 0.0001096, "inputTokens": 274, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00293, - "inputTokens": 293, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001132, + "inputTokens": 283, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00275, + "approximate": true, + "inputCost": 0.00011, "inputTokens": 275, - "tokenizer": "o200k_base" + "tokenizer": "heuristic" } }, - "o3-mini": { + "mistral-medium-2508": { + "json": { + "approximate": true, + "inputCost": 0.0001136, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001096, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001096, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001132, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00011, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, + "mistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.0001136, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001096, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001096, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001132, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00011, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, + "mistral-nemo": { + "json": { + "approximate": true, + "inputCost": 0.0000426, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000411, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000411, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00004245, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00004125, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, + "mistral-small-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000284, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000274, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000274, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000283, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000275, + "inputTokens": 275, + "tokenizer": "heuristic" + } + }, + "o1": { "json": { "approximate": false, - "inputCost": 0.0003729, + "inputCost": 0.005085, "inputTokens": 339, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0003014, + "inputCost": 0.00411, "inputTokens": 274, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0003014, + "inputCost": 0.00411, "inputTokens": 274, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0003223, + "inputCost": 0.004395, "inputTokens": 293, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0003025, + "inputCost": 0.004125, "inputTokens": 275, "tokenizer": "o200k_base" } }, - "o3-pro": { + "o1-mini": { "json": { "approximate": false, - "inputCost": 0.00678, + "inputCost": 0.0003729, "inputTokens": 339, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00548, + "inputCost": 0.0003014, "inputTokens": 274, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00548, + "inputCost": 0.0003014, "inputTokens": 274, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00586, + "inputCost": 0.0003223, "inputTokens": 293, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0055, + "inputCost": 0.0003025, "inputTokens": 275, "tokenizer": "o200k_base" } }, - "o4-mini": { + "o1-pro": { "json": { "approximate": false, - "inputCost": 0.0003729, + "inputCost": 0.05085, "inputTokens": 339, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0003014, + "inputCost": 0.0411, "inputTokens": 274, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0003014, + "inputCost": 0.0411, "inputTokens": 274, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0003223, + "inputCost": 0.04395, "inputTokens": 293, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0003025, + "inputCost": 0.04125, "inputTokens": 275, "tokenizer": "o200k_base" } }, - "o4-mini-deep-research": { + "o3": { "json": { "approximate": false, "inputCost": 0.000678, @@ -5434,362 +7823,394 @@ "inputTokens": 275, "tokenizer": "o200k_base" } - } - }, - "05-code-python.py": { - "claude-3-5-haiku-20241022": { + }, + "o3-deep-research": { "json": { - "approximate": true, - "inputCost": 0.0003048, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00339, + "inputTokens": 339, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.0002728, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00274, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.0002728, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00274, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.0003, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00293, + "inputTokens": 293, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.0002736, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00275, + "inputTokens": 275, + "tokenizer": "o200k_base" } }, - "claude-3-5-sonnet-20240620": { + "o3-mini": { "json": { - "approximate": true, - "inputCost": 0.001143, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003729, + "inputTokens": 339, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.001023, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003014, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.001023, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003014, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003223, + "inputTokens": 293, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.001026, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003025, + "inputTokens": 275, + "tokenizer": "o200k_base" } }, - "claude-3-5-sonnet-20241022": { + "o3-pro": { "json": { - "approximate": true, - "inputCost": 0.001143, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00678, + "inputTokens": 339, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.001023, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00548, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.001023, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00548, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00586, + "inputTokens": 293, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.001026, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0055, + "inputTokens": 275, + "tokenizer": "o200k_base" } }, - "claude-3-7-sonnet-20250219": { + "o4-mini": { "json": { - "approximate": true, - "inputCost": 0.001143, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003729, + "inputTokens": 339, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.001023, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003014, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.001023, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003014, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003223, + "inputTokens": 293, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.001026, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003025, + "inputTokens": 275, + "tokenizer": "o200k_base" } }, - "claude-3-haiku-20240307": { + "o4-mini-deep-research": { "json": { - "approximate": true, - "inputCost": 0.00009525, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000678, + "inputTokens": 339, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.00008525, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000548, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.00008525, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000548, + "inputTokens": 274, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.00009375, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000586, + "inputTokens": 293, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.0000855, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00055, + "inputTokens": 275, + "tokenizer": "o200k_base" } }, - "claude-3-opus-20240229": { + "open-mistral-7b": { "json": { "approximate": true, - "inputCost": 0.005715, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "inputCost": 0.00009475, + "inputTokens": 379, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.005115, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "inputCost": 0.0000875, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.005115, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "inputCost": 0.0000875, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.005625, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.0000935, + "inputTokens": 374, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.00513, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "inputCost": 0.000088, + "inputTokens": 352, + "tokenizer": "mistral_v1_v3" } }, - "claude-3-sonnet-20240229": { + "open-mixtral-8x22b": { "json": { "approximate": true, - "inputCost": 0.001143, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "inputCost": 0.000758, + "inputTokens": 379, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.001023, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "inputCost": 0.0007, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.001023, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "inputCost": 0.0007, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.000748, + "inputTokens": 374, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.001026, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "inputCost": 0.000704, + "inputTokens": 352, + "tokenizer": "mistral_v1_v3" } }, - "claude-haiku-4-5": { + "open-mixtral-8x7b": { "json": { "approximate": true, - "inputCost": 0.000381, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "inputCost": 0.0002653, + "inputTokens": 379, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.000341, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "inputCost": 0.000245, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.000341, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "inputCost": 0.000245, + "inputTokens": 350, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.000375, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.0002618, + "inputTokens": 374, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.000342, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "inputCost": 0.0002464, + "inputTokens": 352, + "tokenizer": "mistral_v1_v3" } }, - "claude-opus-4-1-20250805": { + "pixtral-12b": { "json": { "approximate": true, - "inputCost": 0.005715, - "inputTokens": 381, - "tokenizer": "cl100k_base" + "inputCost": 0.0000426, + "inputTokens": 284, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.005115, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "inputCost": 0.0000411, + "inputTokens": 274, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.005115, - "inputTokens": 341, - "tokenizer": "cl100k_base" + "inputCost": 0.0000411, + "inputTokens": 274, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.005625, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.00004245, + "inputTokens": 283, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00513, - "inputTokens": 342, - "tokenizer": "cl100k_base" + "inputCost": 0.00004125, + "inputTokens": 275, + "tokenizer": "heuristic" } }, - "claude-opus-4-20250514": { + "pixtral-large-latest": { "json": { "approximate": true, - "inputCost": 0.005715, + "inputCost": 0.000568, + "inputTokens": 284, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000548, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.000548, + "inputTokens": 274, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000566, + "inputTokens": 283, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00055, + "inputTokens": 275, + "tokenizer": "heuristic" + } + } + }, + "05-code-python.py": { + "claude-3-5-haiku-20241022": { + "json": { + "approximate": true, + "inputCost": 0.0003048, "inputTokens": 381, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.005115, + "inputCost": 0.0002728, "inputTokens": 341, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.005115, + "inputCost": 0.0002728, "inputTokens": 341, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.005625, + "inputCost": 0.0003, "inputTokens": 375, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00513, + "inputCost": 0.0002736, "inputTokens": 342, "tokenizer": "cl100k_base" } }, - "claude-opus-4-7": { + "claude-3-5-sonnet-20240620": { "json": { "approximate": true, - "inputCost": 0.005715, + "inputCost": 0.001143, "inputTokens": 381, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.005115, + "inputCost": 0.001023, "inputTokens": 341, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.005115, + "inputCost": 0.001023, "inputTokens": 341, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.005625, + "inputCost": 0.001125, "inputTokens": 375, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00513, + "inputCost": 0.001026, "inputTokens": 342, "tokenizer": "cl100k_base" } }, - "claude-sonnet-4-20250514": { + "claude-3-5-sonnet-20241022": { "json": { "approximate": true, "inputCost": 0.001143, @@ -5821,7 +8242,7 @@ "tokenizer": "cl100k_base" } }, - "claude-sonnet-4-6": { + "claude-3-7-sonnet-20250219": { "json": { "approximate": true, "inputCost": 0.001143, @@ -5853,743 +8274,839 @@ "tokenizer": "cl100k_base" } }, - "codex-mini-latest": { + "claude-3-haiku-20240307": { "json": { - "approximate": false, - "inputCost": 0.00057, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00009525, + "inputTokens": 381, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.00051, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00008525, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.00051, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00008525, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.0005595, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00009375, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0005115, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000855, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gemini-1.5-flash": { + "claude-3-opus-20240229": { "json": { "approximate": true, - "inputCost": 0.00002857, + "inputCost": 0.005715, "inputTokens": 381, - "tokenizer": "heuristic" + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00002752, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.005115, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00002752, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.005115, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0000288, - "inputTokens": 384, - "tokenizer": "heuristic" + "inputCost": 0.005625, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00002752, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.00513, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gemini-1.5-flash-8b": { + "claude-3-sonnet-20240229": { "json": { "approximate": true, - "inputCost": 0.00001429, + "inputCost": 0.001143, "inputTokens": 381, - "tokenizer": "heuristic" + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00001376, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.001023, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00001376, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.001023, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0000144, - "inputTokens": 384, - "tokenizer": "heuristic" + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00001376, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.001026, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gemini-1.5-pro": { + "claude-haiku-4-5": { "json": { "approximate": true, - "inputCost": 0.00047625, + "inputCost": 0.000381, "inputTokens": 381, - "tokenizer": "heuristic" + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00045875, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.000341, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00045875, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.000341, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.00048, - "inputTokens": 384, - "tokenizer": "heuristic" + "inputCost": 0.000375, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00045875, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.000342, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gemini-2.0-flash": { + "claude-opus-4-1-20250805": { "json": { "approximate": true, - "inputCost": 0.0000381, + "inputCost": 0.005715, "inputTokens": 381, - "tokenizer": "heuristic" + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.0000367, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.005115, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.0000367, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.005115, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0000384, - "inputTokens": 384, - "tokenizer": "heuristic" + "inputCost": 0.005625, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.0000367, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.00513, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gemini-2.0-flash-lite": { + "claude-opus-4-20250514": { "json": { "approximate": true, - "inputCost": 0.00002857, + "inputCost": 0.005715, "inputTokens": 381, - "tokenizer": "heuristic" + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00002752, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.005115, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00002752, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.005115, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0000288, - "inputTokens": 384, - "tokenizer": "heuristic" + "inputCost": 0.005625, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00002752, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.00513, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gemini-2.5-flash": { + "claude-opus-4-7": { "json": { "approximate": true, - "inputCost": 0.0001143, + "inputCost": 0.005715, "inputTokens": 381, - "tokenizer": "heuristic" + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.0001101, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.005115, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.0001101, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.005115, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0001152, - "inputTokens": 384, - "tokenizer": "heuristic" + "inputCost": 0.005625, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.0001101, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.00513, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gemini-2.5-pro": { + "claude-sonnet-4-20250514": { "json": { "approximate": true, - "inputCost": 0.00047625, + "inputCost": 0.001143, "inputTokens": 381, - "tokenizer": "heuristic" + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00045875, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.001023, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00045875, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.001023, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.00048, - "inputTokens": 384, - "tokenizer": "heuristic" + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00045875, - "inputTokens": 367, - "tokenizer": "heuristic" + "inputCost": 0.001026, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gpt-3.5-turbo": { + "claude-sonnet-4-6": { "json": { - "approximate": false, - "inputCost": 0.00019, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.001143, + "inputTokens": 381, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.00017, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.001023, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.00017, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.001023, + "inputTokens": 341, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.0001865, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0001705, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.001026, + "inputTokens": 342, + "tokenizer": "cl100k_base" } }, - "gpt-4": { + "codestral-latest": { "json": { - "approximate": false, - "inputCost": 0.0114, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001428, + "inputTokens": 476, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.0102, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001326, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.0102, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001326, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.01119, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001431, + "inputTokens": 477, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.01023, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001332, + "inputTokens": 444, + "tokenizer": "mistral_v1_v3" } }, - "gpt-4-turbo": { + "codex-mini-latest": { "json": { "approximate": false, - "inputCost": 0.0038, + "inputCost": 0.00057, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0034, + "inputCost": 0.00051, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0034, + "inputCost": 0.00051, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00373, + "inputCost": 0.0005595, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00341, + "inputCost": 0.0005115, "inputTokens": 341, "tokenizer": "o200k_base" } }, - "gpt-4.1": { + "command-r": { "json": { - "approximate": false, - "inputCost": 0.00076, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005715, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00068, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00068, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.000746, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000576, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.000682, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-4.1-mini": { + "command-r-plus": { "json": { - "approximate": false, - "inputCost": 0.000152, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0009525, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000136, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0009175, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000136, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0009175, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0001492, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00096, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0001364, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0009175, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-4.1-nano": { + "devstral-medium-2507": { "json": { - "approximate": false, - "inputCost": 0.000038, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001524, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000034, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000034, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0000373, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001536, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0000341, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-4o": { + "devstral-small-2505": { "json": { - "approximate": false, - "inputCost": 0.00095, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000381, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00085, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00085, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0009325, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000384, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0008525, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-4o-mini": { + "devstral-small-2507": { "json": { - "approximate": false, - "inputCost": 0.000057, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000381, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000051, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000051, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00005595, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000384, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00005115, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-5": { + "gemini-1.5-flash": { "json": { - "approximate": false, - "inputCost": 0.000475, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00002857, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000425, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00002752, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000425, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00002752, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00046625, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000288, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00042625, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00002752, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-5-chat-latest": { + "gemini-1.5-flash-8b": { "json": { - "approximate": false, - "inputCost": 0.000475, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001429, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000425, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001376, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000425, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001376, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00046625, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000144, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00042625, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001376, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-5-mini": { + "gemini-1.5-pro": { "json": { - "approximate": false, - "inputCost": 0.000095, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00047625, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000085, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00045875, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000085, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00045875, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00009325, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00048, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00008525, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00045875, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-5-nano": { + "gemini-2.0-flash": { "json": { - "approximate": false, - "inputCost": 0.000019, - "inputTokens": 380, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000381, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000017, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000017, - "inputTokens": 340, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00001865, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000384, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00001705, - "inputTokens": 341, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "o1": { + "gemini-2.0-flash-lite": { + "json": { + "approximate": true, + "inputCost": 0.00002857, + "inputTokens": 381, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00002752, + "inputTokens": 367, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00002752, + "inputTokens": 367, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000288, + "inputTokens": 384, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00002752, + "inputTokens": 367, + "tokenizer": "heuristic" + } + }, + "gemini-2.5-flash": { + "json": { + "approximate": true, + "inputCost": 0.0001143, + "inputTokens": 381, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001101, + "inputTokens": 367, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001101, + "inputTokens": 367, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001152, + "inputTokens": 384, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001101, + "inputTokens": 367, + "tokenizer": "heuristic" + } + }, + "gemini-2.5-pro": { + "json": { + "approximate": true, + "inputCost": 0.00047625, + "inputTokens": 381, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00045875, + "inputTokens": 367, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00045875, + "inputTokens": 367, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00048, + "inputTokens": 384, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00045875, + "inputTokens": 367, + "tokenizer": "heuristic" + } + }, + "gpt-3.5-turbo": { "json": { "approximate": false, - "inputCost": 0.0057, + "inputCost": 0.00019, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0051, + "inputCost": 0.00017, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0051, + "inputCost": 0.00017, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.005595, + "inputCost": 0.0001865, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.005115, + "inputCost": 0.0001705, "inputTokens": 341, "tokenizer": "o200k_base" } }, - "o1-mini": { + "gpt-4": { "json": { "approximate": false, - "inputCost": 0.000418, + "inputCost": 0.0114, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.000374, + "inputCost": 0.0102, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.000374, + "inputCost": 0.0102, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0004103, + "inputCost": 0.01119, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0003751, + "inputCost": 0.01023, "inputTokens": 341, "tokenizer": "o200k_base" } }, - "o1-pro": { + "gpt-4-turbo": { "json": { "approximate": false, - "inputCost": 0.057, + "inputCost": 0.0038, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.051, + "inputCost": 0.0034, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.051, + "inputCost": 0.0034, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.05595, + "inputCost": 0.00373, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.05115, + "inputCost": 0.00341, "inputTokens": 341, "tokenizer": "o200k_base" } }, - "o3": { + "gpt-4.1": { "json": { "approximate": false, "inputCost": 0.00076, @@ -6621,4751 +9138,8431 @@ "tokenizer": "o200k_base" } }, - "o3-deep-research": { + "gpt-4.1-mini": { "json": { "approximate": false, - "inputCost": 0.0038, + "inputCost": 0.000152, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0034, + "inputCost": 0.000136, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0034, + "inputCost": 0.000136, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00373, + "inputCost": 0.0001492, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00341, + "inputCost": 0.0001364, "inputTokens": 341, "tokenizer": "o200k_base" } }, - "o3-mini": { + "gpt-4.1-nano": { "json": { "approximate": false, - "inputCost": 0.000418, + "inputCost": 0.000038, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.000374, + "inputCost": 0.000034, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.000374, + "inputCost": 0.000034, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0004103, + "inputCost": 0.0000373, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0003751, + "inputCost": 0.0000341, "inputTokens": 341, "tokenizer": "o200k_base" } }, - "o3-pro": { + "gpt-4o": { "json": { "approximate": false, - "inputCost": 0.0076, + "inputCost": 0.00095, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0068, + "inputCost": 0.00085, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0068, + "inputCost": 0.00085, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00746, + "inputCost": 0.0009325, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00682, + "inputCost": 0.0008525, "inputTokens": 341, "tokenizer": "o200k_base" } }, - "o4-mini": { + "gpt-4o-mini": { "json": { "approximate": false, - "inputCost": 0.000418, + "inputCost": 0.000057, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.000374, + "inputCost": 0.000051, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.000374, + "inputCost": 0.000051, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0004103, + "inputCost": 0.00005595, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0003751, + "inputCost": 0.00005115, "inputTokens": 341, "tokenizer": "o200k_base" } }, - "o4-mini-deep-research": { + "gpt-5": { "json": { "approximate": false, - "inputCost": 0.00076, + "inputCost": 0.000475, "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00068, + "inputCost": 0.000425, "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00068, + "inputCost": 0.000425, "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.000746, + "inputCost": 0.00046625, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.000682, + "inputCost": 0.00042625, "inputTokens": 341, "tokenizer": "o200k_base" } - } - }, - "06-structured-extraction.json": { - "claude-3-5-haiku-20241022": { + }, + "gpt-5-chat-latest": { "json": { - "approximate": true, - "inputCost": 0.0001512, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000475, + "inputTokens": 380, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.0001648, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000425, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.00024, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000425, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.0002064, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00046625, + "inputTokens": 373, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.0001784, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00042625, + "inputTokens": 341, + "tokenizer": "o200k_base" } }, - "claude-3-5-sonnet-20240620": { + "gpt-5-mini": { "json": { - "approximate": true, - "inputCost": 0.000567, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000095, + "inputTokens": 380, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.000618, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000085, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.0009, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000085, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.000774, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00009325, + "inputTokens": 373, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.000669, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00008525, + "inputTokens": 341, + "tokenizer": "o200k_base" } }, - "claude-3-5-sonnet-20241022": { + "gpt-5-nano": { "json": { - "approximate": true, - "inputCost": 0.000567, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000019, + "inputTokens": 380, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.000618, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000017, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.0009, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000017, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.000774, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00001865, + "inputTokens": 373, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.000669, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00001705, + "inputTokens": 341, + "tokenizer": "o200k_base" } }, - "claude-3-7-sonnet-20250219": { + "magistral-medium-latest": { "json": { "approximate": true, - "inputCost": 0.000567, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.000762, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.000618, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.000734, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0009, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.000734, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.000774, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.000768, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.000669, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.000734, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "claude-3-haiku-20240307": { + "magistral-small": { "json": { "approximate": true, - "inputCost": 0.00004725, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.0001905, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.0000515, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.0001835, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.000075, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.0001835, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.0000645, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.000192, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00005575, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.0001835, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "claude-3-opus-20240229": { + "ministral-3b-latest": { "json": { "approximate": true, - "inputCost": 0.002835, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.00001524, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00309, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.00001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0045, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.00001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00387, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.00001536, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.003345, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.00001468, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "claude-3-sonnet-20240229": { + "ministral-8b-latest": { "json": { "approximate": true, - "inputCost": 0.000567, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.0000381, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.000618, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0009, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.000774, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.0000384, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.000669, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "claude-haiku-4-5": { + "mistral-large-latest": { "json": { "approximate": true, - "inputCost": 0.000189, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.000952, + "inputTokens": 476, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.000206, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.000884, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.0003, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.000884, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.000258, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.000954, + "inputTokens": 477, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.000223, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.000888, + "inputTokens": 444, + "tokenizer": "mistral_v1_v3" } }, - "claude-opus-4-1-20250805": { + "mistral-medium-2505": { "json": { "approximate": true, - "inputCost": 0.002835, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.0001524, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00309, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0045, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00387, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.0001536, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.003345, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "claude-opus-4-20250514": { + "mistral-medium-2508": { "json": { "approximate": true, - "inputCost": 0.002835, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.0001524, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00309, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0045, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00387, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.0001536, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.003345, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "claude-opus-4-7": { + "mistral-medium-latest": { "json": { "approximate": true, - "inputCost": 0.002835, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.0001524, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00309, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0045, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00387, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.0001536, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.003345, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.0001468, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "claude-sonnet-4-20250514": { + "mistral-nemo": { "json": { "approximate": true, - "inputCost": 0.000567, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.00005715, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.000618, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0009, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.000774, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.0000576, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.000669, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "claude-sonnet-4-6": { + "mistral-small-latest": { "json": { "approximate": true, - "inputCost": 0.000567, - "inputTokens": 189, - "tokenizer": "cl100k_base" + "inputCost": 0.0000381, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.000618, - "inputTokens": 206, - "tokenizer": "cl100k_base" + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0009, - "inputTokens": 300, - "tokenizer": "cl100k_base" + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.000774, - "inputTokens": 258, - "tokenizer": "cl100k_base" + "inputCost": 0.0000384, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.000669, - "inputTokens": 223, - "tokenizer": "cl100k_base" + "inputCost": 0.0000367, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "codex-mini-latest": { + "o1": { "json": { "approximate": false, - "inputCost": 0.000285, - "inputTokens": 190, + "inputCost": 0.0057, + "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0003195, - "inputTokens": 213, + "inputCost": 0.0051, + "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0004485, - "inputTokens": 299, + "inputCost": 0.0051, + "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.000384, - "inputTokens": 256, + "inputCost": 0.005595, + "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.000333, - "inputTokens": 222, + "inputCost": 0.005115, + "inputTokens": 341, "tokenizer": "o200k_base" } }, - "gemini-1.5-flash": { + "o1-mini": { "json": { - "approximate": true, - "inputCost": 0.0000156, - "inputTokens": 208, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.000418, + "inputTokens": 380, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.00001612, - "inputTokens": 215, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.000374, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.00002197, - "inputTokens": 293, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.000374, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.00001875, - "inputTokens": 250, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.0004103, + "inputTokens": 373, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.00001777, - "inputTokens": 237, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.0003751, + "inputTokens": 341, + "tokenizer": "o200k_base" } }, - "gemini-1.5-flash-8b": { + "o1-pro": { "json": { - "approximate": true, - "inputCost": 0.0000078, - "inputTokens": 208, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.057, + "inputTokens": 380, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.00000806, - "inputTokens": 215, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.051, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.00001099, - "inputTokens": 293, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.051, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.00000937, - "inputTokens": 250, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.05595, + "inputTokens": 373, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.00000889, - "inputTokens": 237, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.05115, + "inputTokens": 341, + "tokenizer": "o200k_base" } }, - "gemini-1.5-pro": { + "o3": { "json": { - "approximate": true, - "inputCost": 0.00026, - "inputTokens": 208, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.00076, + "inputTokens": 380, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.00026875, - "inputTokens": 215, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.00068, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.00036625, - "inputTokens": 293, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.00068, + "inputTokens": 340, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.0003125, - "inputTokens": 250, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.000746, + "inputTokens": 373, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.00029625, - "inputTokens": 237, - "tokenizer": "heuristic" + "approximate": false, + "inputCost": 0.000682, + "inputTokens": 341, + "tokenizer": "o200k_base" } }, - "gemini-2.0-flash": { + "o3-deep-research": { "json": { - "approximate": true, - "inputCost": 0.0000208, - "inputTokens": 208, - "tokenizer": "heuristic" - }, - "markdown": { - "approximate": true, - "inputCost": 0.0000215, - "inputTokens": 215, - "tokenizer": "heuristic" - }, - "text": { - "approximate": true, - "inputCost": 0.0000293, - "inputTokens": 293, - "tokenizer": "heuristic" - }, - "xml": { - "approximate": true, - "inputCost": 0.000025, - "inputTokens": 250, - "tokenizer": "heuristic" - }, - "yaml": { - "approximate": true, - "inputCost": 0.0000237, - "inputTokens": 237, - "tokenizer": "heuristic" - } - }, - "gemini-2.0-flash-lite": { - "json": { - "approximate": true, - "inputCost": 0.0000156, - "inputTokens": 208, - "tokenizer": "heuristic" - }, - "markdown": { - "approximate": true, - "inputCost": 0.00001612, - "inputTokens": 215, - "tokenizer": "heuristic" - }, - "text": { - "approximate": true, - "inputCost": 0.00002197, - "inputTokens": 293, - "tokenizer": "heuristic" - }, - "xml": { - "approximate": true, - "inputCost": 0.00001875, - "inputTokens": 250, - "tokenizer": "heuristic" - }, - "yaml": { - "approximate": true, - "inputCost": 0.00001777, - "inputTokens": 237, - "tokenizer": "heuristic" - } - }, - "gemini-2.5-flash": { - "json": { - "approximate": true, - "inputCost": 0.0000624, - "inputTokens": 208, - "tokenizer": "heuristic" - }, - "markdown": { - "approximate": true, - "inputCost": 0.0000645, - "inputTokens": 215, - "tokenizer": "heuristic" - }, - "text": { - "approximate": true, - "inputCost": 0.0000879, - "inputTokens": 293, - "tokenizer": "heuristic" - }, - "xml": { - "approximate": true, - "inputCost": 0.000075, - "inputTokens": 250, - "tokenizer": "heuristic" - }, - "yaml": { - "approximate": true, - "inputCost": 0.0000711, - "inputTokens": 237, - "tokenizer": "heuristic" - } - }, - "gemini-2.5-pro": { - "json": { - "approximate": true, - "inputCost": 0.00026, - "inputTokens": 208, - "tokenizer": "heuristic" - }, - "markdown": { - "approximate": true, - "inputCost": 0.00026875, - "inputTokens": 215, - "tokenizer": "heuristic" - }, - "text": { - "approximate": true, - "inputCost": 0.00036625, - "inputTokens": 293, - "tokenizer": "heuristic" - }, - "xml": { - "approximate": true, - "inputCost": 0.0003125, - "inputTokens": 250, - "tokenizer": "heuristic" - }, - "yaml": { - "approximate": true, - "inputCost": 0.00029625, - "inputTokens": 237, - "tokenizer": "heuristic" - } - }, - "gpt-3.5-turbo": { - "json": { - "approximate": false, - "inputCost": 0.000095, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": false, + "inputCost": 0.0038, + "inputTokens": 380, + "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0001065, - "inputTokens": 213, + "inputCost": 0.0034, + "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0001495, - "inputTokens": 299, + "inputCost": 0.0034, + "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.000128, - "inputTokens": 256, + "inputCost": 0.00373, + "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.000111, - "inputTokens": 222, + "inputCost": 0.00341, + "inputTokens": 341, "tokenizer": "o200k_base" } }, - "gpt-4": { + "o3-mini": { "json": { "approximate": false, - "inputCost": 0.0057, - "inputTokens": 190, + "inputCost": 0.000418, + "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00639, - "inputTokens": 213, + "inputCost": 0.000374, + "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00897, - "inputTokens": 299, + "inputCost": 0.000374, + "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00768, - "inputTokens": 256, + "inputCost": 0.0004103, + "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00666, - "inputTokens": 222, + "inputCost": 0.0003751, + "inputTokens": 341, "tokenizer": "o200k_base" } }, - "gpt-4-turbo": { + "o3-pro": { "json": { "approximate": false, - "inputCost": 0.0019, - "inputTokens": 190, + "inputCost": 0.0076, + "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00213, - "inputTokens": 213, + "inputCost": 0.0068, + "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00299, - "inputTokens": 299, + "inputCost": 0.0068, + "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00256, - "inputTokens": 256, + "inputCost": 0.00746, + "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00222, - "inputTokens": 222, + "inputCost": 0.00682, + "inputTokens": 341, "tokenizer": "o200k_base" } }, - "gpt-4.1": { + "o4-mini": { "json": { "approximate": false, - "inputCost": 0.00038, - "inputTokens": 190, + "inputCost": 0.000418, + "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.000426, - "inputTokens": 213, + "inputCost": 0.000374, + "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.000598, - "inputTokens": 299, + "inputCost": 0.000374, + "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.000512, - "inputTokens": 256, + "inputCost": 0.0004103, + "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.000444, - "inputTokens": 222, + "inputCost": 0.0003751, + "inputTokens": 341, "tokenizer": "o200k_base" } }, - "gpt-4.1-mini": { + "o4-mini-deep-research": { "json": { "approximate": false, - "inputCost": 0.000076, - "inputTokens": 190, + "inputCost": 0.00076, + "inputTokens": 380, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0000852, - "inputTokens": 213, + "inputCost": 0.00068, + "inputTokens": 340, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0001196, - "inputTokens": 299, + "inputCost": 0.00068, + "inputTokens": 340, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0001024, - "inputTokens": 256, + "inputCost": 0.000746, + "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0000888, - "inputTokens": 222, + "inputCost": 0.000682, + "inputTokens": 341, "tokenizer": "o200k_base" } }, - "gpt-4.1-nano": { + "open-mistral-7b": { "json": { - "approximate": false, - "inputCost": 0.000019, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000119, + "inputTokens": 476, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.0000213, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001105, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.0000299, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001105, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.0000256, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00011925, + "inputTokens": 477, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.0000222, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000111, + "inputTokens": 444, + "tokenizer": "mistral_v1_v3" } }, - "gpt-4o": { + "open-mixtral-8x22b": { "json": { - "approximate": false, - "inputCost": 0.000475, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000952, + "inputTokens": 476, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.0005325, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000884, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.0007475, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000884, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.00064, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000954, + "inputTokens": 477, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.000555, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000888, + "inputTokens": 444, + "tokenizer": "mistral_v1_v3" } }, - "gpt-4o-mini": { + "open-mixtral-8x7b": { "json": { - "approximate": false, - "inputCost": 0.0000285, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003332, + "inputTokens": 476, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.00003195, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003094, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.00004485, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003094, + "inputTokens": 442, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.0000384, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003339, + "inputTokens": 477, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.0000333, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003108, + "inputTokens": 444, + "tokenizer": "mistral_v1_v3" } }, - "gpt-5": { + "pixtral-12b": { "json": { - "approximate": false, - "inputCost": 0.0002375, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005715, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00026625, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00037375, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00032, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000576, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0002775, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005505, + "inputTokens": 367, + "tokenizer": "heuristic" } }, - "gpt-5-chat-latest": { + "pixtral-large-latest": { "json": { - "approximate": false, - "inputCost": 0.0002375, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000762, + "inputTokens": 381, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00026625, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000734, + "inputTokens": 367, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00037375, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000734, + "inputTokens": 367, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00032, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000768, + "inputTokens": 384, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0002775, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000734, + "inputTokens": 367, + "tokenizer": "heuristic" } - }, - "gpt-5-mini": { + } + }, + "06-structured-extraction.json": { + "claude-3-5-haiku-20241022": { "json": { - "approximate": false, - "inputCost": 0.0000475, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001512, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.00005325, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001648, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.00007475, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00024, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.000064, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002064, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0000555, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001784, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "gpt-5-nano": { + "claude-3-5-sonnet-20240620": { "json": { - "approximate": false, - "inputCost": 0.0000095, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000567, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.00001065, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000618, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.00001495, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0009, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.0000128, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000774, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0000111, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000669, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "o1": { + "claude-3-5-sonnet-20241022": { "json": { - "approximate": false, - "inputCost": 0.00285, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000567, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.003195, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000618, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.004485, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0009, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.00384, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000774, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.00333, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000669, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "o1-mini": { + "claude-3-7-sonnet-20250219": { "json": { - "approximate": false, - "inputCost": 0.000209, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000567, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.0002343, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000618, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.0003289, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0009, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.0002816, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000774, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0002442, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000669, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "o1-pro": { + "claude-3-haiku-20240307": { "json": { - "approximate": false, - "inputCost": 0.0285, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00004725, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.03195, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000515, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.04485, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000075, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.0384, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000645, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0333, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00005575, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "o3": { + "claude-3-opus-20240229": { "json": { - "approximate": false, - "inputCost": 0.00038, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002835, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.000426, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00309, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.000598, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0045, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.000512, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00387, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.000444, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.003345, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "o3-deep-research": { + "claude-3-sonnet-20240229": { "json": { - "approximate": false, - "inputCost": 0.0019, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000567, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.00213, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000618, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.00299, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0009, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.00256, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000774, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.00222, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000669, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "o3-mini": { + "claude-haiku-4-5": { "json": { - "approximate": false, - "inputCost": 0.000209, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000189, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.0002343, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000206, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.0003289, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.0002816, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000258, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0002442, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000223, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "o3-pro": { + "claude-opus-4-1-20250805": { "json": { - "approximate": false, - "inputCost": 0.0038, - "inputTokens": 190, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002835, + "inputTokens": 189, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.00426, - "inputTokens": 213, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00309, + "inputTokens": 206, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.00598, - "inputTokens": 299, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0045, + "inputTokens": 300, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.00512, - "inputTokens": 256, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00387, + "inputTokens": 258, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.00444, - "inputTokens": 222, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.003345, + "inputTokens": 223, + "tokenizer": "cl100k_base" } }, - "o4-mini": { - "json": { - "approximate": false, - "inputCost": 0.000209, - "inputTokens": 190, - "tokenizer": "o200k_base" - }, - "markdown": { - "approximate": false, - "inputCost": 0.0002343, - "inputTokens": 213, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.0003289, - "inputTokens": 299, - "tokenizer": "o200k_base" - }, - "xml": { - "approximate": false, - "inputCost": 0.0002816, - "inputTokens": 256, - "tokenizer": "o200k_base" - }, - "yaml": { - "approximate": false, - "inputCost": 0.0002442, - "inputTokens": 222, - "tokenizer": "o200k_base" - } - }, - "o4-mini-deep-research": { - "json": { - "approximate": false, - "inputCost": 0.00038, - "inputTokens": 190, - "tokenizer": "o200k_base" - }, - "markdown": { - "approximate": false, - "inputCost": 0.000426, - "inputTokens": 213, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.000598, - "inputTokens": 299, - "tokenizer": "o200k_base" - }, - "xml": { - "approximate": false, - "inputCost": 0.000512, - "inputTokens": 256, - "tokenizer": "o200k_base" - }, - "yaml": { - "approximate": false, - "inputCost": 0.000444, - "inputTokens": 222, - "tokenizer": "o200k_base" - } - } - }, - "07-long-context.txt": { - "claude-3-5-haiku-20241022": { + "claude-opus-4-20250514": { "json": { "approximate": true, - "inputCost": 0.0005752, - "inputTokens": 719, + "inputCost": 0.002835, + "inputTokens": 189, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.0005568, - "inputTokens": 696, + "inputCost": 0.00309, + "inputTokens": 206, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.0005568, - "inputTokens": 696, + "inputCost": 0.0045, + "inputTokens": 300, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0005824, - "inputTokens": 728, + "inputCost": 0.00387, + "inputTokens": 258, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.0005888, - "inputTokens": 736, + "inputCost": 0.003345, + "inputTokens": 223, "tokenizer": "cl100k_base" } }, - "claude-3-5-sonnet-20240620": { + "claude-opus-4-7": { "json": { "approximate": true, - "inputCost": 0.002157, - "inputTokens": 719, + "inputCost": 0.002835, + "inputTokens": 189, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, + "inputCost": 0.00309, + "inputTokens": 206, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, + "inputCost": 0.0045, + "inputTokens": 300, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.002184, - "inputTokens": 728, + "inputCost": 0.00387, + "inputTokens": 258, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.002208, - "inputTokens": 736, + "inputCost": 0.003345, + "inputTokens": 223, "tokenizer": "cl100k_base" } }, - "claude-3-5-sonnet-20241022": { + "claude-sonnet-4-20250514": { "json": { "approximate": true, - "inputCost": 0.002157, - "inputTokens": 719, + "inputCost": 0.000567, + "inputTokens": 189, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, + "inputCost": 0.000618, + "inputTokens": 206, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, + "inputCost": 0.0009, + "inputTokens": 300, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.002184, - "inputTokens": 728, + "inputCost": 0.000774, + "inputTokens": 258, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.002208, - "inputTokens": 736, + "inputCost": 0.000669, + "inputTokens": 223, "tokenizer": "cl100k_base" } }, - "claude-3-7-sonnet-20250219": { + "claude-sonnet-4-6": { "json": { "approximate": true, - "inputCost": 0.002157, - "inputTokens": 719, + "inputCost": 0.000567, + "inputTokens": 189, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, + "inputCost": 0.000618, + "inputTokens": 206, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, + "inputCost": 0.0009, + "inputTokens": 300, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.002184, - "inputTokens": 728, + "inputCost": 0.000774, + "inputTokens": 258, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.002208, - "inputTokens": 736, + "inputCost": 0.000669, + "inputTokens": 223, "tokenizer": "cl100k_base" } }, - "claude-3-haiku-20240307": { + "codestral-latest": { "json": { "approximate": true, - "inputCost": 0.00017975, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "inputCost": 0.0000714, + "inputTokens": 238, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.000174, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0000789, + "inputTokens": 263, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.000174, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0001014, + "inputTokens": 338, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.000182, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "inputCost": 0.000087, + "inputTokens": 290, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.000184, - "inputTokens": 736, - "tokenizer": "cl100k_base" + "inputCost": 0.0000813, + "inputTokens": 271, + "tokenizer": "mistral_v1_v3" } }, - "claude-3-opus-20240229": { + "codex-mini-latest": { "json": { - "approximate": true, - "inputCost": 0.010785, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000285, + "inputTokens": 190, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.01044, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003195, + "inputTokens": 213, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.01044, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0004485, + "inputTokens": 299, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.01092, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000384, + "inputTokens": 256, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.01104, - "inputTokens": 736, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000333, + "inputTokens": 222, + "tokenizer": "o200k_base" } }, - "claude-3-sonnet-20240229": { + "command-r": { "json": { "approximate": true, - "inputCost": 0.002157, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "inputCost": 0.0000312, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.00003225, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.00004395, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.002184, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "inputCost": 0.0000375, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.002208, - "inputTokens": 736, - "tokenizer": "cl100k_base" + "inputCost": 0.00003555, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "claude-haiku-4-5": { + "command-r-plus": { "json": { "approximate": true, - "inputCost": 0.000719, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "inputCost": 0.00052, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.000696, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0005375, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.000696, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0007325, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.000728, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "inputCost": 0.000625, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.000736, - "inputTokens": 736, - "tokenizer": "cl100k_base" + "inputCost": 0.0005925, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "claude-opus-4-1-20250805": { + "devstral-medium-2507": { "json": { "approximate": true, - "inputCost": 0.010785, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "inputCost": 0.0000832, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.01044, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.000086, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.01044, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0001172, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.01092, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "inputCost": 0.0001, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.01104, - "inputTokens": 736, - "tokenizer": "cl100k_base" + "inputCost": 0.0000948, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "claude-opus-4-20250514": { + "devstral-small-2505": { "json": { "approximate": true, - "inputCost": 0.010785, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "inputCost": 0.0000208, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.01044, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.01044, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0000293, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.01092, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "inputCost": 0.000025, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.01104, - "inputTokens": 736, - "tokenizer": "cl100k_base" + "inputCost": 0.0000237, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "claude-opus-4-7": { + "devstral-small-2507": { "json": { "approximate": true, - "inputCost": 0.010785, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "inputCost": 0.0000208, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.01044, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.01044, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.0000293, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.01092, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "inputCost": 0.000025, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.01104, - "inputTokens": 736, - "tokenizer": "cl100k_base" + "inputCost": 0.0000237, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "claude-sonnet-4-20250514": { + "gemini-1.5-flash": { "json": { "approximate": true, - "inputCost": 0.002157, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "inputCost": 0.0000156, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.00001612, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.00002197, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.002184, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "inputCost": 0.00001875, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.002208, - "inputTokens": 736, - "tokenizer": "cl100k_base" + "inputCost": 0.00001777, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "claude-sonnet-4-6": { + "gemini-1.5-flash-8b": { "json": { "approximate": true, - "inputCost": 0.002157, - "inputTokens": 719, - "tokenizer": "cl100k_base" + "inputCost": 0.0000078, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.00000806, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.002088, - "inputTokens": 696, - "tokenizer": "cl100k_base" + "inputCost": 0.00001099, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.002184, - "inputTokens": 728, - "tokenizer": "cl100k_base" + "inputCost": 0.00000937, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.002208, - "inputTokens": 736, - "tokenizer": "cl100k_base" - } - }, - "codex-mini-latest": { - "json": { - "approximate": false, - "inputCost": 0.001083, - "inputTokens": 722, - "tokenizer": "o200k_base" - }, - "markdown": { - "approximate": false, - "inputCost": 0.0010485, - "inputTokens": 699, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.0010485, - "inputTokens": 699, - "tokenizer": "o200k_base" - }, - "xml": { - "approximate": false, - "inputCost": 0.0010965, - "inputTokens": 731, - "tokenizer": "o200k_base" - }, - "yaml": { - "approximate": false, - "inputCost": 0.001107, - "inputTokens": 738, - "tokenizer": "o200k_base" + "inputCost": 0.00000889, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "gemini-1.5-flash": { + "gemini-1.5-pro": { "json": { "approximate": true, - "inputCost": 0.00006307, - "inputTokens": 841, + "inputCost": 0.00026, + "inputTokens": 208, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00006232, - "inputTokens": 831, + "inputCost": 0.00026875, + "inputTokens": 215, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00006232, - "inputTokens": 831, + "inputCost": 0.00036625, + "inputTokens": 293, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.0000639, - "inputTokens": 852, + "inputCost": 0.0003125, + "inputTokens": 250, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00006255, - "inputTokens": 834, + "inputCost": 0.00029625, + "inputTokens": 237, "tokenizer": "heuristic" } }, - "gemini-1.5-flash-8b": { + "gemini-2.0-flash": { "json": { "approximate": true, - "inputCost": 0.00003154, - "inputTokens": 841, + "inputCost": 0.0000208, + "inputTokens": 208, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00003116, - "inputTokens": 831, + "inputCost": 0.0000215, + "inputTokens": 215, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00003116, - "inputTokens": 831, + "inputCost": 0.0000293, + "inputTokens": 293, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00003195, - "inputTokens": 852, + "inputCost": 0.000025, + "inputTokens": 250, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00003127, - "inputTokens": 834, + "inputCost": 0.0000237, + "inputTokens": 237, "tokenizer": "heuristic" } }, - "gemini-1.5-pro": { + "gemini-2.0-flash-lite": { "json": { "approximate": true, - "inputCost": 0.00105125, - "inputTokens": 841, + "inputCost": 0.0000156, + "inputTokens": 208, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00103875, - "inputTokens": 831, + "inputCost": 0.00001612, + "inputTokens": 215, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00103875, - "inputTokens": 831, + "inputCost": 0.00002197, + "inputTokens": 293, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.001065, - "inputTokens": 852, + "inputCost": 0.00001875, + "inputTokens": 250, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.0010425, - "inputTokens": 834, - "tokenizer": "heuristic" - } - }, - "gemini-2.0-flash": { - "json": { - "approximate": true, - "inputCost": 0.0000841, - "inputTokens": 841, - "tokenizer": "heuristic" - }, - "markdown": { - "approximate": true, - "inputCost": 0.0000831, - "inputTokens": 831, - "tokenizer": "heuristic" - }, - "text": { - "approximate": true, - "inputCost": 0.0000831, - "inputTokens": 831, - "tokenizer": "heuristic" - }, - "xml": { - "approximate": true, - "inputCost": 0.0000852, - "inputTokens": 852, - "tokenizer": "heuristic" - }, - "yaml": { - "approximate": true, - "inputCost": 0.0000834, - "inputTokens": 834, - "tokenizer": "heuristic" - } - }, - "gemini-2.0-flash-lite": { - "json": { - "approximate": true, - "inputCost": 0.00006307, - "inputTokens": 841, - "tokenizer": "heuristic" - }, - "markdown": { - "approximate": true, - "inputCost": 0.00006232, - "inputTokens": 831, - "tokenizer": "heuristic" - }, - "text": { - "approximate": true, - "inputCost": 0.00006232, - "inputTokens": 831, - "tokenizer": "heuristic" - }, - "xml": { - "approximate": true, - "inputCost": 0.0000639, - "inputTokens": 852, - "tokenizer": "heuristic" - }, - "yaml": { - "approximate": true, - "inputCost": 0.00006255, - "inputTokens": 834, + "inputCost": 0.00001777, + "inputTokens": 237, "tokenizer": "heuristic" } }, "gemini-2.5-flash": { "json": { "approximate": true, - "inputCost": 0.0002523, - "inputTokens": 841, + "inputCost": 0.0000624, + "inputTokens": 208, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.0002493, - "inputTokens": 831, + "inputCost": 0.0000645, + "inputTokens": 215, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0002493, - "inputTokens": 831, + "inputCost": 0.0000879, + "inputTokens": 293, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.0002556, - "inputTokens": 852, + "inputCost": 0.000075, + "inputTokens": 250, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.0002502, - "inputTokens": 834, + "inputCost": 0.0000711, + "inputTokens": 237, "tokenizer": "heuristic" } }, "gemini-2.5-pro": { "json": { "approximate": true, - "inputCost": 0.00105125, - "inputTokens": 841, + "inputCost": 0.00026, + "inputTokens": 208, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00103875, - "inputTokens": 831, + "inputCost": 0.00026875, + "inputTokens": 215, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00103875, - "inputTokens": 831, + "inputCost": 0.00036625, + "inputTokens": 293, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.001065, - "inputTokens": 852, + "inputCost": 0.0003125, + "inputTokens": 250, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.0010425, - "inputTokens": 834, + "inputCost": 0.00029625, + "inputTokens": 237, "tokenizer": "heuristic" } }, "gpt-3.5-turbo": { "json": { "approximate": false, - "inputCost": 0.000361, - "inputTokens": 722, + "inputCost": 0.000095, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0003495, - "inputTokens": 699, + "inputCost": 0.0001065, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0003495, - "inputTokens": 699, + "inputCost": 0.0001495, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0003655, - "inputTokens": 731, + "inputCost": 0.000128, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.000369, - "inputTokens": 738, + "inputCost": 0.000111, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-4": { "json": { "approximate": false, - "inputCost": 0.02166, - "inputTokens": 722, + "inputCost": 0.0057, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.02097, - "inputTokens": 699, + "inputCost": 0.00639, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.02097, - "inputTokens": 699, + "inputCost": 0.00897, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.02193, - "inputTokens": 731, + "inputCost": 0.00768, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.02214, - "inputTokens": 738, + "inputCost": 0.00666, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-4-turbo": { "json": { "approximate": false, - "inputCost": 0.00722, - "inputTokens": 722, + "inputCost": 0.0019, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00699, - "inputTokens": 699, + "inputCost": 0.00213, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00699, - "inputTokens": 699, + "inputCost": 0.00299, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00731, - "inputTokens": 731, + "inputCost": 0.00256, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00738, - "inputTokens": 738, + "inputCost": 0.00222, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-4.1": { "json": { "approximate": false, - "inputCost": 0.001444, - "inputTokens": 722, + "inputCost": 0.00038, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.001398, - "inputTokens": 699, + "inputCost": 0.000426, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.001398, - "inputTokens": 699, + "inputCost": 0.000598, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.001462, - "inputTokens": 731, + "inputCost": 0.000512, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.001476, - "inputTokens": 738, + "inputCost": 0.000444, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-4.1-mini": { "json": { "approximate": false, - "inputCost": 0.0002888, - "inputTokens": 722, + "inputCost": 0.000076, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0002796, - "inputTokens": 699, + "inputCost": 0.0000852, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0002796, - "inputTokens": 699, + "inputCost": 0.0001196, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0002924, - "inputTokens": 731, + "inputCost": 0.0001024, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0002952, - "inputTokens": 738, + "inputCost": 0.0000888, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-4.1-nano": { "json": { "approximate": false, - "inputCost": 0.0000722, - "inputTokens": 722, + "inputCost": 0.000019, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0000699, - "inputTokens": 699, + "inputCost": 0.0000213, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0000699, - "inputTokens": 699, + "inputCost": 0.0000299, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0000731, - "inputTokens": 731, + "inputCost": 0.0000256, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0000738, - "inputTokens": 738, + "inputCost": 0.0000222, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-4o": { "json": { "approximate": false, - "inputCost": 0.001805, - "inputTokens": 722, + "inputCost": 0.000475, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0017475, - "inputTokens": 699, + "inputCost": 0.0005325, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0017475, - "inputTokens": 699, + "inputCost": 0.0007475, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0018275, - "inputTokens": 731, + "inputCost": 0.00064, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.001845, - "inputTokens": 738, + "inputCost": 0.000555, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-4o-mini": { "json": { "approximate": false, - "inputCost": 0.0001083, - "inputTokens": 722, + "inputCost": 0.0000285, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00010485, - "inputTokens": 699, + "inputCost": 0.00003195, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00010485, - "inputTokens": 699, + "inputCost": 0.00004485, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00010965, - "inputTokens": 731, + "inputCost": 0.0000384, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0001107, - "inputTokens": 738, + "inputCost": 0.0000333, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-5": { "json": { "approximate": false, - "inputCost": 0.0009025, - "inputTokens": 722, + "inputCost": 0.0002375, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00087375, - "inputTokens": 699, + "inputCost": 0.00026625, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00087375, - "inputTokens": 699, + "inputCost": 0.00037375, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00091375, - "inputTokens": 731, + "inputCost": 0.00032, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0009225, - "inputTokens": 738, + "inputCost": 0.0002775, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-5-chat-latest": { "json": { "approximate": false, - "inputCost": 0.0009025, - "inputTokens": 722, + "inputCost": 0.0002375, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00087375, - "inputTokens": 699, + "inputCost": 0.00026625, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00087375, - "inputTokens": 699, + "inputCost": 0.00037375, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00091375, - "inputTokens": 731, + "inputCost": 0.00032, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0009225, - "inputTokens": 738, + "inputCost": 0.0002775, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-5-mini": { "json": { "approximate": false, - "inputCost": 0.0001805, - "inputTokens": 722, + "inputCost": 0.0000475, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00017475, - "inputTokens": 699, + "inputCost": 0.00005325, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00017475, - "inputTokens": 699, + "inputCost": 0.00007475, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00018275, - "inputTokens": 731, + "inputCost": 0.000064, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0001845, - "inputTokens": 738, + "inputCost": 0.0000555, + "inputTokens": 222, "tokenizer": "o200k_base" } }, "gpt-5-nano": { "json": { "approximate": false, - "inputCost": 0.0000361, - "inputTokens": 722, + "inputCost": 0.0000095, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00003495, - "inputTokens": 699, + "inputCost": 0.00001065, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00003495, - "inputTokens": 699, + "inputCost": 0.00001495, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00003655, - "inputTokens": 731, + "inputCost": 0.0000128, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0000369, - "inputTokens": 738, + "inputCost": 0.0000111, + "inputTokens": 222, "tokenizer": "o200k_base" } }, - "o1": { + "magistral-medium-latest": { "json": { - "approximate": false, - "inputCost": 0.01083, - "inputTokens": 722, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000416, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.010485, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00043, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.010485, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000586, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.010965, - "inputTokens": 731, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0005, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.01107, - "inputTokens": 738, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000474, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "o1-mini": { + "magistral-small": { "json": { - "approximate": false, - "inputCost": 0.0007942, - "inputTokens": 722, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000104, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0007689, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001075, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0007689, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001465, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0008041, - "inputTokens": 731, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000125, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0008118, - "inputTokens": 738, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001185, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "o1-pro": { + "ministral-3b-latest": { "json": { - "approximate": false, - "inputCost": 0.1083, - "inputTokens": 722, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00000832, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.10485, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000086, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.10485, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001172, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.10965, - "inputTokens": 731, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.1107, - "inputTokens": 738, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00000948, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "o3": { + "ministral-8b-latest": { "json": { - "approximate": false, - "inputCost": 0.001444, - "inputTokens": 722, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000208, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.001398, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.001398, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000293, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.001462, - "inputTokens": 731, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000025, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.001476, - "inputTokens": 738, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000237, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "o3-deep-research": { + "mistral-large-latest": { "json": { - "approximate": false, - "inputCost": 0.00722, - "inputTokens": 722, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000476, + "inputTokens": 238, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.00699, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000526, + "inputTokens": 263, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.00699, - "inputTokens": 699, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000676, + "inputTokens": 338, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.00731, - "inputTokens": 731, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00058, + "inputTokens": 290, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.00738, - "inputTokens": 738, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000542, + "inputTokens": 271, + "tokenizer": "mistral_v1_v3" } }, - "o3-mini": { + "mistral-medium-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000832, + "inputTokens": 208, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000086, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001172, + "inputTokens": 293, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001, + "inputTokens": 250, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000948, + "inputTokens": 237, + "tokenizer": "heuristic" + } + }, + "mistral-medium-2508": { + "json": { + "approximate": true, + "inputCost": 0.0000832, + "inputTokens": 208, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000086, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001172, + "inputTokens": 293, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001, + "inputTokens": 250, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000948, + "inputTokens": 237, + "tokenizer": "heuristic" + } + }, + "mistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000832, + "inputTokens": 208, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000086, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001172, + "inputTokens": 293, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001, + "inputTokens": 250, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000948, + "inputTokens": 237, + "tokenizer": "heuristic" + } + }, + "mistral-nemo": { + "json": { + "approximate": true, + "inputCost": 0.0000312, + "inputTokens": 208, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00003225, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00004395, + "inputTokens": 293, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000375, + "inputTokens": 250, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00003555, + "inputTokens": 237, + "tokenizer": "heuristic" + } + }, + "mistral-small-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000208, + "inputTokens": 208, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000293, + "inputTokens": 293, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000025, + "inputTokens": 250, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000237, + "inputTokens": 237, + "tokenizer": "heuristic" + } + }, + "o1": { "json": { "approximate": false, - "inputCost": 0.0007942, - "inputTokens": 722, + "inputCost": 0.00285, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0007689, - "inputTokens": 699, + "inputCost": 0.003195, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0007689, - "inputTokens": 699, + "inputCost": 0.004485, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0008041, - "inputTokens": 731, + "inputCost": 0.00384, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0008118, - "inputTokens": 738, + "inputCost": 0.00333, + "inputTokens": 222, "tokenizer": "o200k_base" } }, - "o3-pro": { + "o1-mini": { "json": { "approximate": false, - "inputCost": 0.01444, - "inputTokens": 722, + "inputCost": 0.000209, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.01398, - "inputTokens": 699, + "inputCost": 0.0002343, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.01398, - "inputTokens": 699, + "inputCost": 0.0003289, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.01462, - "inputTokens": 731, + "inputCost": 0.0002816, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.01476, - "inputTokens": 738, + "inputCost": 0.0002442, + "inputTokens": 222, "tokenizer": "o200k_base" } }, - "o4-mini": { + "o1-pro": { "json": { "approximate": false, - "inputCost": 0.0007942, - "inputTokens": 722, + "inputCost": 0.0285, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0007689, - "inputTokens": 699, + "inputCost": 0.03195, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0007689, - "inputTokens": 699, + "inputCost": 0.04485, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0008041, - "inputTokens": 731, + "inputCost": 0.0384, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0008118, - "inputTokens": 738, + "inputCost": 0.0333, + "inputTokens": 222, "tokenizer": "o200k_base" } }, - "o4-mini-deep-research": { + "o3": { "json": { "approximate": false, - "inputCost": 0.001444, - "inputTokens": 722, + "inputCost": 0.00038, + "inputTokens": 190, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.001398, - "inputTokens": 699, + "inputCost": 0.000426, + "inputTokens": 213, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.001398, - "inputTokens": 699, + "inputCost": 0.000598, + "inputTokens": 299, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.001462, - "inputTokens": 731, + "inputCost": 0.000512, + "inputTokens": 256, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.001476, - "inputTokens": 738, + "inputCost": 0.000444, + "inputTokens": 222, "tokenizer": "o200k_base" } - } - }, - "08-few-shot-classification.txt": { - "claude-3-5-haiku-20241022": { + }, + "o3-deep-research": { "json": { - "approximate": true, - "inputCost": 0.0001704, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0019, + "inputTokens": 190, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.0001528, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00213, + "inputTokens": 213, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.0001528, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00299, + "inputTokens": 299, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.00016, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00256, + "inputTokens": 256, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.0001536, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00222, + "inputTokens": 222, + "tokenizer": "o200k_base" } }, - "claude-3-5-sonnet-20240620": { + "o3-mini": { "json": { - "approximate": true, - "inputCost": 0.000639, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000209, + "inputTokens": 190, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0002343, + "inputTokens": 213, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003289, + "inputTokens": 299, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.0006, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0002816, + "inputTokens": 256, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.000576, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0002442, + "inputTokens": 222, + "tokenizer": "o200k_base" } }, - "claude-3-5-sonnet-20241022": { + "o3-pro": { "json": { - "approximate": true, - "inputCost": 0.000639, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0038, + "inputTokens": 190, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00426, + "inputTokens": 213, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00598, + "inputTokens": 299, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.0006, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00512, + "inputTokens": 256, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.000576, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00444, + "inputTokens": 222, + "tokenizer": "o200k_base" } }, - "claude-3-7-sonnet-20250219": { + "o4-mini": { "json": { - "approximate": true, - "inputCost": 0.000639, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000209, + "inputTokens": 190, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0002343, + "inputTokens": 213, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0003289, + "inputTokens": 299, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.0006, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0002816, + "inputTokens": 256, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.000576, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0002442, + "inputTokens": 222, + "tokenizer": "o200k_base" } }, - "claude-3-haiku-20240307": { + "o4-mini-deep-research": { "json": { - "approximate": true, - "inputCost": 0.00005325, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00038, + "inputTokens": 190, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.00004775, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000426, + "inputTokens": 213, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.00004775, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000598, + "inputTokens": 299, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.00005, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000512, + "inputTokens": 256, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.000048, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.000444, + "inputTokens": 222, + "tokenizer": "o200k_base" } }, - "claude-3-opus-20240229": { + "open-mistral-7b": { "json": { "approximate": true, - "inputCost": 0.003195, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "inputCost": 0.0000595, + "inputTokens": 238, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.002865, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.00006575, + "inputTokens": 263, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.002865, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.0000845, + "inputTokens": 338, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.003, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "inputCost": 0.0000725, + "inputTokens": 290, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.00288, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "inputCost": 0.00006775, + "inputTokens": 271, + "tokenizer": "mistral_v1_v3" } }, - "claude-3-sonnet-20240229": { + "open-mixtral-8x22b": { "json": { "approximate": true, - "inputCost": 0.000639, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "inputCost": 0.000476, + "inputTokens": 238, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.000526, + "inputTokens": 263, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.000676, + "inputTokens": 338, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.0006, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "inputCost": 0.00058, + "inputTokens": 290, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.000576, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "inputCost": 0.000542, + "inputTokens": 271, + "tokenizer": "mistral_v1_v3" } }, - "claude-haiku-4-5": { + "open-mixtral-8x7b": { "json": { "approximate": true, - "inputCost": 0.000213, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "inputCost": 0.0001666, + "inputTokens": 238, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.000191, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.0001841, + "inputTokens": 263, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.000191, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.0002366, + "inputTokens": 338, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.0002, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "inputCost": 0.000203, + "inputTokens": 290, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.000192, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "inputCost": 0.0001897, + "inputTokens": 271, + "tokenizer": "mistral_v1_v3" } }, - "claude-opus-4-1-20250805": { + "pixtral-12b": { "json": { "approximate": true, - "inputCost": 0.003195, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "inputCost": 0.0000312, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.002865, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.00003225, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.002865, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.00004395, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.003, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "inputCost": 0.0000375, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00288, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "inputCost": 0.00003555, + "inputTokens": 237, + "tokenizer": "heuristic" } }, - "claude-opus-4-20250514": { + "pixtral-large-latest": { "json": { "approximate": true, - "inputCost": 0.003195, - "inputTokens": 213, - "tokenizer": "cl100k_base" + "inputCost": 0.000416, + "inputTokens": 208, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.002865, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.00043, + "inputTokens": 215, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.002865, - "inputTokens": 191, - "tokenizer": "cl100k_base" + "inputCost": 0.000586, + "inputTokens": 293, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.003, - "inputTokens": 200, - "tokenizer": "cl100k_base" + "inputCost": 0.0005, + "inputTokens": 250, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00288, - "inputTokens": 192, - "tokenizer": "cl100k_base" + "inputCost": 0.000474, + "inputTokens": 237, + "tokenizer": "heuristic" } - }, - "claude-opus-4-7": { + } + }, + "07-long-context.txt": { + "claude-3-5-haiku-20241022": { "json": { "approximate": true, - "inputCost": 0.003195, - "inputTokens": 213, + "inputCost": 0.0005752, + "inputTokens": 719, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.002865, - "inputTokens": 191, + "inputCost": 0.0005568, + "inputTokens": 696, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.002865, - "inputTokens": 191, + "inputCost": 0.0005568, + "inputTokens": 696, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.003, - "inputTokens": 200, + "inputCost": 0.0005824, + "inputTokens": 728, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00288, - "inputTokens": 192, + "inputCost": 0.0005888, + "inputTokens": 736, "tokenizer": "cl100k_base" } }, - "claude-sonnet-4-20250514": { + "claude-3-5-sonnet-20240620": { "json": { "approximate": true, - "inputCost": 0.000639, - "inputTokens": 213, + "inputCost": 0.002157, + "inputTokens": 719, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, + "inputCost": 0.002088, + "inputTokens": 696, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, + "inputCost": 0.002088, + "inputTokens": 696, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0006, - "inputTokens": 200, + "inputCost": 0.002184, + "inputTokens": 728, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.000576, - "inputTokens": 192, + "inputCost": 0.002208, + "inputTokens": 736, "tokenizer": "cl100k_base" } }, - "claude-sonnet-4-6": { + "claude-3-5-sonnet-20241022": { "json": { "approximate": true, - "inputCost": 0.000639, - "inputTokens": 213, + "inputCost": 0.002157, + "inputTokens": 719, "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, + "inputCost": 0.002088, + "inputTokens": 696, "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.000573, - "inputTokens": 191, + "inputCost": 0.002088, + "inputTokens": 696, "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0006, - "inputTokens": 200, + "inputCost": 0.002184, + "inputTokens": 728, "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.000576, - "inputTokens": 192, + "inputCost": 0.002208, + "inputTokens": 736, "tokenizer": "cl100k_base" } }, - "codex-mini-latest": { + "claude-3-7-sonnet-20250219": { "json": { - "approximate": false, - "inputCost": 0.000321, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002157, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.000288, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002088, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.000288, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002088, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.0003015, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002184, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0002895, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002208, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gemini-1.5-flash": { + "claude-3-haiku-20240307": { "json": { "approximate": true, - "inputCost": 0.00001612, - "inputTokens": 215, - "tokenizer": "heuristic" + "inputCost": 0.00017975, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00001552, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.000174, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00001552, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.000174, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.00001597, - "inputTokens": 213, - "tokenizer": "heuristic" + "inputCost": 0.000182, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.0000159, - "inputTokens": 212, - "tokenizer": "heuristic" + "inputCost": 0.000184, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gemini-1.5-flash-8b": { + "claude-3-opus-20240229": { "json": { "approximate": true, - "inputCost": 0.00000806, - "inputTokens": 215, - "tokenizer": "heuristic" + "inputCost": 0.010785, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00000776, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.01044, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00000776, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.01044, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.00000799, - "inputTokens": 213, - "tokenizer": "heuristic" + "inputCost": 0.01092, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.00000795, - "inputTokens": 212, - "tokenizer": "heuristic" + "inputCost": 0.01104, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gemini-1.5-pro": { + "claude-3-sonnet-20240229": { "json": { "approximate": true, - "inputCost": 0.00026875, - "inputTokens": 215, - "tokenizer": "heuristic" + "inputCost": 0.002157, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00025875, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.002088, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00025875, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.002088, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.00026625, - "inputTokens": 213, - "tokenizer": "heuristic" + "inputCost": 0.002184, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.000265, - "inputTokens": 212, - "tokenizer": "heuristic" + "inputCost": 0.002208, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gemini-2.0-flash": { + "claude-haiku-4-5": { "json": { "approximate": true, - "inputCost": 0.0000215, - "inputTokens": 215, - "tokenizer": "heuristic" + "inputCost": 0.000719, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.0000207, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.000696, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.0000207, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.000696, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0000213, - "inputTokens": 213, - "tokenizer": "heuristic" + "inputCost": 0.000728, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.0000212, - "inputTokens": 212, - "tokenizer": "heuristic" + "inputCost": 0.000736, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gemini-2.0-flash-lite": { + "claude-opus-4-1-20250805": { "json": { "approximate": true, - "inputCost": 0.00001612, - "inputTokens": 215, - "tokenizer": "heuristic" + "inputCost": 0.010785, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00001552, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.01044, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00001552, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.01044, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.00001597, - "inputTokens": 213, - "tokenizer": "heuristic" + "inputCost": 0.01092, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.0000159, - "inputTokens": 212, - "tokenizer": "heuristic" + "inputCost": 0.01104, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gemini-2.5-flash": { + "claude-opus-4-20250514": { "json": { "approximate": true, - "inputCost": 0.0000645, - "inputTokens": 215, - "tokenizer": "heuristic" + "inputCost": 0.010785, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.0000621, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.01044, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.0000621, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.01044, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.0000639, - "inputTokens": 213, - "tokenizer": "heuristic" + "inputCost": 0.01092, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.0000636, - "inputTokens": 212, - "tokenizer": "heuristic" + "inputCost": 0.01104, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gemini-2.5-pro": { + "claude-opus-4-7": { "json": { "approximate": true, - "inputCost": 0.00026875, - "inputTokens": 215, - "tokenizer": "heuristic" + "inputCost": 0.010785, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { "approximate": true, - "inputCost": 0.00025875, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.01044, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { "approximate": true, - "inputCost": 0.00025875, - "inputTokens": 207, - "tokenizer": "heuristic" + "inputCost": 0.01044, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { "approximate": true, - "inputCost": 0.00026625, - "inputTokens": 213, - "tokenizer": "heuristic" + "inputCost": 0.01092, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { "approximate": true, - "inputCost": 0.000265, - "inputTokens": 212, - "tokenizer": "heuristic" + "inputCost": 0.01104, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gpt-3.5-turbo": { + "claude-sonnet-4-20250514": { "json": { - "approximate": false, - "inputCost": 0.000107, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002157, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.000096, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002088, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.000096, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002088, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.0001005, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002184, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.0000965, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002208, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gpt-4": { + "claude-sonnet-4-6": { "json": { - "approximate": false, - "inputCost": 0.00642, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002157, + "inputTokens": 719, + "tokenizer": "cl100k_base" }, "markdown": { - "approximate": false, - "inputCost": 0.00576, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002088, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "text": { - "approximate": false, - "inputCost": 0.00576, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002088, + "inputTokens": 696, + "tokenizer": "cl100k_base" }, "xml": { - "approximate": false, - "inputCost": 0.00603, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002184, + "inputTokens": 728, + "tokenizer": "cl100k_base" }, "yaml": { - "approximate": false, - "inputCost": 0.00579, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002208, + "inputTokens": 736, + "tokenizer": "cl100k_base" } }, - "gpt-4-turbo": { + "codestral-latest": { "json": { - "approximate": false, - "inputCost": 0.00214, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002514, + "inputTokens": 838, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.00192, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002436, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.00192, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002436, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.00201, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002547, + "inputTokens": 849, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.00193, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002619, + "inputTokens": 873, + "tokenizer": "mistral_v1_v3" } }, - "gpt-4.1": { + "codex-mini-latest": { "json": { "approximate": false, - "inputCost": 0.000428, - "inputTokens": 214, + "inputCost": 0.001083, + "inputTokens": 722, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.000384, - "inputTokens": 192, + "inputCost": 0.0010485, + "inputTokens": 699, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.000384, - "inputTokens": 192, + "inputCost": 0.0010485, + "inputTokens": 699, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.000402, - "inputTokens": 201, + "inputCost": 0.0010965, + "inputTokens": 731, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.000386, - "inputTokens": 193, + "inputCost": 0.001107, + "inputTokens": 738, "tokenizer": "o200k_base" } }, - "gpt-4.1-mini": { + "command-r": { "json": { - "approximate": false, - "inputCost": 0.0000856, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00012615, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0000768, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00012465, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0000768, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00012465, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0000804, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001278, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0000772, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001251, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "gpt-4.1-nano": { + "command-r-plus": { "json": { - "approximate": false, - "inputCost": 0.0000214, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0021025, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0000192, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0020775, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0000192, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0020775, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0000201, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00213, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0000193, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.002085, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "gpt-4o": { + "devstral-medium-2507": { "json": { - "approximate": false, - "inputCost": 0.000535, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003364, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00048, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003324, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00048, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003324, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0005025, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003408, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0004825, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003336, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "gpt-4o-mini": { + "devstral-small-2505": { "json": { - "approximate": false, - "inputCost": 0.0000321, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000841, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0000288, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0000288, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00003015, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000852, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00002895, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000834, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "gpt-5": { + "devstral-small-2507": { "json": { - "approximate": false, - "inputCost": 0.0002675, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000841, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00024, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00024, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00025125, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000852, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00024125, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000834, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "gpt-5-chat-latest": { + "gemini-1.5-flash": { "json": { - "approximate": false, - "inputCost": 0.0002675, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006307, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00024, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006232, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00024, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006232, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00025125, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000639, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00024125, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006255, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "gpt-5-mini": { + "gemini-1.5-flash-8b": { "json": { - "approximate": false, - "inputCost": 0.0000535, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00003154, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000048, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00003116, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000048, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00003116, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00005025, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00003195, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00004825, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00003127, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "gpt-5-nano": { + "gemini-1.5-pro": { "json": { - "approximate": false, - "inputCost": 0.0000107, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00105125, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0000096, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00103875, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0000096, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00103875, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.00001005, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.001065, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00000965, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0010425, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "o1": { + "gemini-2.0-flash": { "json": { - "approximate": false, - "inputCost": 0.00321, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000841, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00288, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00288, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.003015, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000852, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.002895, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000834, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "o1-mini": { + "gemini-2.0-flash-lite": { "json": { - "approximate": false, - "inputCost": 0.0002354, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006307, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0002112, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006232, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0002112, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006232, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0002211, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000639, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0002123, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006255, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "o1-pro": { + "gemini-2.5-flash": { "json": { - "approximate": false, - "inputCost": 0.0321, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002523, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0288, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002493, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0288, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002493, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.03015, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002556, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.02895, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002502, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "o3": { + "gemini-2.5-pro": { "json": { - "approximate": false, - "inputCost": 0.000428, - "inputTokens": 214, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00105125, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000384, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00103875, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000384, - "inputTokens": 192, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00103875, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.000402, - "inputTokens": 201, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.001065, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.000386, - "inputTokens": 193, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0010425, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "o3-deep-research": { + "gpt-3.5-turbo": { "json": { "approximate": false, - "inputCost": 0.00214, - "inputTokens": 214, + "inputCost": 0.000361, + "inputTokens": 722, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00192, - "inputTokens": 192, + "inputCost": 0.0003495, + "inputTokens": 699, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00192, - "inputTokens": 192, + "inputCost": 0.0003495, + "inputTokens": 699, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00201, - "inputTokens": 201, - "tokenizer": "o200k_base" + "inputCost": 0.0003655, + "inputTokens": 731, + "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00193, - "inputTokens": 193, + "inputCost": 0.000369, + "inputTokens": 738, "tokenizer": "o200k_base" } }, - "o3-mini": { + "gpt-4": { "json": { "approximate": false, - "inputCost": 0.0002354, - "inputTokens": 214, + "inputCost": 0.02166, + "inputTokens": 722, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0002112, - "inputTokens": 192, + "inputCost": 0.02097, + "inputTokens": 699, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0002112, - "inputTokens": 192, + "inputCost": 0.02097, + "inputTokens": 699, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0002211, - "inputTokens": 201, + "inputCost": 0.02193, + "inputTokens": 731, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0002123, - "inputTokens": 193, + "inputCost": 0.02214, + "inputTokens": 738, "tokenizer": "o200k_base" } }, - "o3-pro": { + "gpt-4-turbo": { "json": { "approximate": false, - "inputCost": 0.00428, - "inputTokens": 214, + "inputCost": 0.00722, + "inputTokens": 722, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00384, - "inputTokens": 192, + "inputCost": 0.00699, + "inputTokens": 699, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00384, - "inputTokens": 192, + "inputCost": 0.00699, + "inputTokens": 699, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00402, - "inputTokens": 201, + "inputCost": 0.00731, + "inputTokens": 731, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00386, - "inputTokens": 193, + "inputCost": 0.00738, + "inputTokens": 738, "tokenizer": "o200k_base" } }, - "o4-mini": { + "gpt-4.1": { "json": { "approximate": false, - "inputCost": 0.0002354, - "inputTokens": 214, + "inputCost": 0.001444, + "inputTokens": 722, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0002112, - "inputTokens": 192, + "inputCost": 0.001398, + "inputTokens": 699, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0002112, - "inputTokens": 192, + "inputCost": 0.001398, + "inputTokens": 699, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0002211, - "inputTokens": 201, + "inputCost": 0.001462, + "inputTokens": 731, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0002123, - "inputTokens": 193, + "inputCost": 0.001476, + "inputTokens": 738, "tokenizer": "o200k_base" } }, - "o4-mini-deep-research": { + "gpt-4.1-mini": { "json": { "approximate": false, - "inputCost": 0.000428, - "inputTokens": 214, + "inputCost": 0.0002888, + "inputTokens": 722, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.000384, - "inputTokens": 192, + "inputCost": 0.0002796, + "inputTokens": 699, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.000384, - "inputTokens": 192, + "inputCost": 0.0002796, + "inputTokens": 699, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.000402, - "inputTokens": 201, + "inputCost": 0.0002924, + "inputTokens": 731, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.000386, - "inputTokens": 193, + "inputCost": 0.0002952, + "inputTokens": 738, "tokenizer": "o200k_base" } - } - }, - "09-system-instructions.md": { - "claude-3-5-haiku-20241022": { + }, + "gpt-4.1-nano": { "json": { - "approximate": true, - "inputCost": 0.0003136, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0000722, + "inputTokens": 722, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.0002912, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0000699, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.0002912, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0000699, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.0002976, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0000731, + "inputTokens": 731, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.0003, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0000738, + "inputTokens": 738, + "tokenizer": "o200k_base" } }, - "claude-3-5-sonnet-20240620": { + "gpt-4o": { "json": { - "approximate": true, - "inputCost": 0.001176, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.001805, + "inputTokens": 722, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0017475, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0017475, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.001116, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0018275, + "inputTokens": 731, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.001845, + "inputTokens": 738, + "tokenizer": "o200k_base" } }, - "claude-3-5-sonnet-20241022": { + "gpt-4o-mini": { "json": { - "approximate": true, - "inputCost": 0.001176, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0001083, + "inputTokens": 722, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00010485, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00010485, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.001116, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00010965, + "inputTokens": 731, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0001107, + "inputTokens": 738, + "tokenizer": "o200k_base" } }, - "claude-3-7-sonnet-20250219": { + "gpt-5": { "json": { - "approximate": true, - "inputCost": 0.001176, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0009025, + "inputTokens": 722, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00087375, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00087375, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.001116, - "inputTokens": 372, - "tokenizer": "cl100k_base" - }, + "approximate": false, + "inputCost": 0.00091375, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, "yaml": { - "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0009225, + "inputTokens": 738, + "tokenizer": "o200k_base" } }, - "claude-3-haiku-20240307": { + "gpt-5-chat-latest": { "json": { - "approximate": true, - "inputCost": 0.000098, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0009025, + "inputTokens": 722, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.000091, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00087375, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.000091, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00087375, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.000093, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00091375, + "inputTokens": 731, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.00009375, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0009225, + "inputTokens": 738, + "tokenizer": "o200k_base" } }, - "claude-3-opus-20240229": { + "gpt-5-mini": { "json": { - "approximate": true, - "inputCost": 0.00588, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0001805, + "inputTokens": 722, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.00546, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00017475, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.00546, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00017475, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.00558, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00018275, + "inputTokens": 731, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.005625, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0001845, + "inputTokens": 738, + "tokenizer": "o200k_base" } }, - "claude-3-sonnet-20240229": { + "gpt-5-nano": { "json": { - "approximate": true, - "inputCost": 0.001176, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0000361, + "inputTokens": 722, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00003495, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00003495, + "inputTokens": 699, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.001116, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00003655, + "inputTokens": 731, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.0000369, + "inputTokens": 738, + "tokenizer": "o200k_base" } }, - "claude-haiku-4-5": { + "magistral-medium-latest": { "json": { "approximate": true, - "inputCost": 0.000392, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "inputCost": 0.001682, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.000364, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.001662, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.000364, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.001662, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.000372, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "inputCost": 0.001704, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.000375, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.001668, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "claude-opus-4-1-20250805": { + "magistral-small": { "json": { "approximate": true, - "inputCost": 0.00588, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "inputCost": 0.0004205, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00546, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.0004155, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00546, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.0004155, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00558, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "inputCost": 0.000426, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.005625, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.000417, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "claude-opus-4-20250514": { + "ministral-3b-latest": { "json": { "approximate": true, - "inputCost": 0.00588, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "inputCost": 0.00003364, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00546, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.00003324, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00546, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.00003324, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00558, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "inputCost": 0.00003408, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.005625, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.00003336, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "claude-opus-4-7": { + "ministral-8b-latest": { "json": { "approximate": true, - "inputCost": 0.00588, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "inputCost": 0.0000841, + "inputTokens": 841, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00546, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00546, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00558, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "inputCost": 0.0000852, + "inputTokens": 852, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.005625, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.0000834, + "inputTokens": 834, + "tokenizer": "heuristic" } }, - "claude-sonnet-4-20250514": { + "mistral-large-latest": { "json": { "approximate": true, - "inputCost": 0.001176, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "inputCost": 0.001676, + "inputTokens": 838, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.001624, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "inputCost": 0.001624, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.001116, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "inputCost": 0.001698, + "inputTokens": 849, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "inputCost": 0.001746, + "inputTokens": 873, + "tokenizer": "mistral_v1_v3" } }, - "claude-sonnet-4-6": { + "mistral-medium-2505": { "json": { "approximate": true, - "inputCost": 0.001176, - "inputTokens": 392, - "tokenizer": "cl100k_base" + "inputCost": 0.0003364, + "inputTokens": 841, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0003324, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0003324, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0003408, + "inputTokens": 852, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0003336, + "inputTokens": 834, + "tokenizer": "heuristic" + } + }, + "mistral-medium-2508": { + "json": { + "approximate": true, + "inputCost": 0.0003364, + "inputTokens": 841, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0003324, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0003324, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0003408, + "inputTokens": 852, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0003336, + "inputTokens": 834, + "tokenizer": "heuristic" + } + }, + "mistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.0003364, + "inputTokens": 841, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0003324, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0003324, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0003408, + "inputTokens": 852, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0003336, + "inputTokens": 834, + "tokenizer": "heuristic" + } + }, + "mistral-nemo": { + "json": { + "approximate": true, + "inputCost": 0.00012615, + "inputTokens": 841, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00012465, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00012465, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001278, + "inputTokens": 852, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001251, + "inputTokens": 834, + "tokenizer": "heuristic" + } + }, + "mistral-small-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000841, + "inputTokens": 841, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000831, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000852, + "inputTokens": 852, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000834, + "inputTokens": 834, + "tokenizer": "heuristic" + } + }, + "o1": { + "json": { + "approximate": false, + "inputCost": 0.01083, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.010485, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.010485, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.010965, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.01107, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "o1-mini": { + "json": { + "approximate": false, + "inputCost": 0.0007942, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0007689, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0007689, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0008041, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0008118, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "o1-pro": { + "json": { + "approximate": false, + "inputCost": 0.1083, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.10485, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.10485, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.10965, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.1107, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "o3": { + "json": { + "approximate": false, + "inputCost": 0.001444, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.001398, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.001398, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.001462, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.001476, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "o3-deep-research": { + "json": { + "approximate": false, + "inputCost": 0.00722, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00699, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00699, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00731, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00738, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "o3-mini": { + "json": { + "approximate": false, + "inputCost": 0.0007942, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0007689, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0007689, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0008041, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0008118, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "o3-pro": { + "json": { + "approximate": false, + "inputCost": 0.01444, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.01398, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.01398, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.01462, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.01476, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "o4-mini": { + "json": { + "approximate": false, + "inputCost": 0.0007942, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0007689, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0007689, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0008041, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0008118, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "o4-mini-deep-research": { + "json": { + "approximate": false, + "inputCost": 0.001444, + "inputTokens": 722, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.001398, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.001398, + "inputTokens": 699, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.001462, + "inputTokens": 731, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.001476, + "inputTokens": 738, + "tokenizer": "o200k_base" + } + }, + "open-mistral-7b": { + "json": { + "approximate": true, + "inputCost": 0.0002095, + "inputTokens": 838, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000203, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000203, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.00021225, + "inputTokens": 849, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00021825, + "inputTokens": 873, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x22b": { + "json": { + "approximate": true, + "inputCost": 0.001676, + "inputTokens": 838, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001624, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.001624, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.001698, + "inputTokens": 849, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001746, + "inputTokens": 873, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x7b": { + "json": { + "approximate": true, + "inputCost": 0.0005866, + "inputTokens": 838, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0005684, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0005684, + "inputTokens": 812, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0005943, + "inputTokens": 849, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0006111, + "inputTokens": 873, + "tokenizer": "mistral_v1_v3" + } + }, + "pixtral-12b": { + "json": { + "approximate": true, + "inputCost": 0.00012615, + "inputTokens": 841, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00012465, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00012465, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001278, + "inputTokens": 852, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001251, + "inputTokens": 834, + "tokenizer": "heuristic" + } + }, + "pixtral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.001682, + "inputTokens": 841, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001662, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.001662, + "inputTokens": 831, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.001704, + "inputTokens": 852, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001668, + "inputTokens": 834, + "tokenizer": "heuristic" + } + } + }, + "08-few-shot-classification.txt": { + "claude-3-5-haiku-20241022": { + "json": { + "approximate": true, + "inputCost": 0.0001704, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001528, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.0001528, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.00016, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001536, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-3-5-sonnet-20240620": { + "json": { + "approximate": true, + "inputCost": 0.000639, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.0006, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000576, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-3-5-sonnet-20241022": { + "json": { + "approximate": true, + "inputCost": 0.000639, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.0006, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000576, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-3-7-sonnet-20250219": { + "json": { + "approximate": true, + "inputCost": 0.000639, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.0006, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000576, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-3-haiku-20240307": { + "json": { + "approximate": true, + "inputCost": 0.00005325, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00004775, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.00004775, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.00005, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000048, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-3-opus-20240229": { + "json": { + "approximate": true, + "inputCost": 0.003195, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.002865, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.002865, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.003, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00288, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-3-sonnet-20240229": { + "json": { + "approximate": true, + "inputCost": 0.000639, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.0006, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000576, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-haiku-4-5": { + "json": { + "approximate": true, + "inputCost": 0.000213, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000191, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000191, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.0002, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000192, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-opus-4-1-20250805": { + "json": { + "approximate": true, + "inputCost": 0.003195, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.002865, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.002865, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.003, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00288, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-opus-4-20250514": { + "json": { + "approximate": true, + "inputCost": 0.003195, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.002865, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.002865, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.003, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00288, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-opus-4-7": { + "json": { + "approximate": true, + "inputCost": 0.003195, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.002865, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.002865, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.003, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00288, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-sonnet-4-20250514": { + "json": { + "approximate": true, + "inputCost": 0.000639, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.0006, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000576, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "claude-sonnet-4-6": { + "json": { + "approximate": true, + "inputCost": 0.000639, + "inputTokens": 213, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000573, + "inputTokens": 191, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.0006, + "inputTokens": 200, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000576, + "inputTokens": 192, + "tokenizer": "cl100k_base" + } + }, + "codestral-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000804, + "inputTokens": 268, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000738, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0000738, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000768, + "inputTokens": 256, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000801, + "inputTokens": 267, + "tokenizer": "mistral_v1_v3" + } + }, + "codex-mini-latest": { + "json": { + "approximate": false, + "inputCost": 0.000321, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000288, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000288, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0003015, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0002895, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "command-r": { + "json": { + "approximate": true, + "inputCost": 0.00003225, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00003105, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003105, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00003195, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000318, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "command-r-plus": { + "json": { + "approximate": true, + "inputCost": 0.0005375, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0005175, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0005175, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0005325, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00053, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "devstral-medium-2507": { + "json": { + "approximate": true, + "inputCost": 0.000086, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000852, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000848, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "devstral-small-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000213, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000212, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "devstral-small-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000213, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000212, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "gemini-1.5-flash": { + "json": { + "approximate": true, + "inputCost": 0.00001612, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001552, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001552, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00001597, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000159, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "gemini-1.5-flash-8b": { + "json": { + "approximate": true, + "inputCost": 0.00000806, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00000776, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00000776, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00000799, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00000795, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "gemini-1.5-pro": { + "json": { + "approximate": true, + "inputCost": 0.00026875, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00025875, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00025875, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00026625, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000265, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "gemini-2.0-flash": { + "json": { + "approximate": true, + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000213, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000212, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "gemini-2.0-flash-lite": { + "json": { + "approximate": true, + "inputCost": 0.00001612, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001552, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001552, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00001597, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000159, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "gemini-2.5-flash": { + "json": { + "approximate": true, + "inputCost": 0.0000645, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000621, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000621, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000639, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000636, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "gemini-2.5-pro": { + "json": { + "approximate": true, + "inputCost": 0.00026875, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00025875, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00025875, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00026625, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000265, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "gpt-3.5-turbo": { + "json": { + "approximate": false, + "inputCost": 0.000107, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000096, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000096, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0001005, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0000965, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-4": { + "json": { + "approximate": false, + "inputCost": 0.00642, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00576, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00576, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00603, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00579, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-4-turbo": { + "json": { + "approximate": false, + "inputCost": 0.00214, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00192, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00192, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00201, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00193, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-4.1": { + "json": { + "approximate": false, + "inputCost": 0.000428, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000384, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000384, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.000402, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.000386, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-4.1-mini": { + "json": { + "approximate": false, + "inputCost": 0.0000856, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0000768, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0000768, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0000804, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0000772, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-4.1-nano": { + "json": { + "approximate": false, + "inputCost": 0.0000214, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0000192, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0000192, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0000201, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0000193, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-4o": { + "json": { + "approximate": false, + "inputCost": 0.000535, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00048, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00048, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0005025, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0004825, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-4o-mini": { + "json": { + "approximate": false, + "inputCost": 0.0000321, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0000288, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0000288, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00003015, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00002895, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-5": { + "json": { + "approximate": false, + "inputCost": 0.0002675, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00024, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00024, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00025125, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00024125, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-5-chat-latest": { + "json": { + "approximate": false, + "inputCost": 0.0002675, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00024, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00024, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00025125, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00024125, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-5-mini": { + "json": { + "approximate": false, + "inputCost": 0.0000535, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000048, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000048, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00005025, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00004825, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "gpt-5-nano": { + "json": { + "approximate": false, + "inputCost": 0.0000107, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0000096, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0000096, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00001005, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00000965, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "magistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.00043, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000414, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.000414, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000426, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000424, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "magistral-small": { + "json": { + "approximate": true, + "inputCost": 0.0001075, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001035, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001035, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001065, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000106, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "ministral-3b-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000086, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00000852, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00000848, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "ministral-8b-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000213, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000212, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "mistral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.000536, + "inputTokens": 268, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000492, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000492, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000512, + "inputTokens": 256, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000534, + "inputTokens": 267, + "tokenizer": "mistral_v1_v3" + } + }, + "mistral-medium-2505": { + "json": { + "approximate": true, + "inputCost": 0.000086, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000852, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000848, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "mistral-medium-2508": { + "json": { + "approximate": true, + "inputCost": 0.000086, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000852, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000848, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "mistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.000086, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000828, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000852, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000848, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "mistral-nemo": { + "json": { + "approximate": true, + "inputCost": 0.00003225, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00003105, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003105, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00003195, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000318, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "mistral-small-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000215, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000207, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000213, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000212, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "o1": { + "json": { + "approximate": false, + "inputCost": 0.00321, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00288, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00288, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.003015, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.002895, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "o1-mini": { + "json": { + "approximate": false, + "inputCost": 0.0002354, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0002112, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0002112, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0002211, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0002123, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "o1-pro": { + "json": { + "approximate": false, + "inputCost": 0.0321, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0288, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0288, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.03015, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.02895, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "o3": { + "json": { + "approximate": false, + "inputCost": 0.000428, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000384, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000384, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.000402, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.000386, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "o3-deep-research": { + "json": { + "approximate": false, + "inputCost": 0.00214, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00192, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00192, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00201, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00193, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "o3-mini": { + "json": { + "approximate": false, + "inputCost": 0.0002354, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0002112, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0002112, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0002211, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0002123, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "o3-pro": { + "json": { + "approximate": false, + "inputCost": 0.00428, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00384, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00384, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00402, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00386, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "o4-mini": { + "json": { + "approximate": false, + "inputCost": 0.0002354, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0002112, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0002112, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0002211, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0002123, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "o4-mini-deep-research": { + "json": { + "approximate": false, + "inputCost": 0.000428, + "inputTokens": 214, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000384, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000384, + "inputTokens": 192, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.000402, + "inputTokens": 201, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.000386, + "inputTokens": 193, + "tokenizer": "o200k_base" + } + }, + "open-mistral-7b": { + "json": { + "approximate": true, + "inputCost": 0.000067, + "inputTokens": 268, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000615, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0000615, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000064, + "inputTokens": 256, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00006675, + "inputTokens": 267, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x22b": { + "json": { + "approximate": true, + "inputCost": 0.000536, + "inputTokens": 268, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000492, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.000492, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000512, + "inputTokens": 256, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000534, + "inputTokens": 267, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x7b": { + "json": { + "approximate": true, + "inputCost": 0.0001876, + "inputTokens": 268, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001722, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0001722, + "inputTokens": 246, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001792, + "inputTokens": 256, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001869, + "inputTokens": 267, + "tokenizer": "mistral_v1_v3" + } + }, + "pixtral-12b": { + "json": { + "approximate": true, + "inputCost": 0.00003225, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00003105, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003105, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00003195, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000318, + "inputTokens": 212, + "tokenizer": "heuristic" + } + }, + "pixtral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.00043, + "inputTokens": 215, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000414, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.000414, + "inputTokens": 207, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000426, + "inputTokens": 213, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000424, + "inputTokens": 212, + "tokenizer": "heuristic" + } + } + }, + "09-system-instructions.md": { + "claude-3-5-haiku-20241022": { + "json": { + "approximate": true, + "inputCost": 0.0003136, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0002912, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.0002912, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.0002976, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0003, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-3-5-sonnet-20240620": { + "json": { + "approximate": true, + "inputCost": 0.001176, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.001116, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-3-5-sonnet-20241022": { + "json": { + "approximate": true, + "inputCost": 0.001176, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.001116, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-3-7-sonnet-20250219": { + "json": { + "approximate": true, + "inputCost": 0.001176, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.001116, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-3-haiku-20240307": { + "json": { + "approximate": true, + "inputCost": 0.000098, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000091, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000091, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.000093, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00009375, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-3-opus-20240229": { + "json": { + "approximate": true, + "inputCost": 0.00588, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00546, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.00546, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.00558, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.005625, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-3-sonnet-20240229": { + "json": { + "approximate": true, + "inputCost": 0.001176, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.001116, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-haiku-4-5": { + "json": { + "approximate": true, + "inputCost": 0.000392, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000364, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.000364, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.000372, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000375, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-opus-4-1-20250805": { + "json": { + "approximate": true, + "inputCost": 0.00588, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00546, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.00546, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.00558, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.005625, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-opus-4-20250514": { + "json": { + "approximate": true, + "inputCost": 0.00588, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00546, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.00546, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.00558, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.005625, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-opus-4-7": { + "json": { + "approximate": true, + "inputCost": 0.00588, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00546, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.00546, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.00558, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.005625, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-sonnet-4-20250514": { + "json": { + "approximate": true, + "inputCost": 0.001176, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.001116, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "claude-sonnet-4-6": { + "json": { + "approximate": true, + "inputCost": 0.001176, + "inputTokens": 392, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.001092, + "inputTokens": 364, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.001116, + "inputTokens": 372, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001125, + "inputTokens": 375, + "tokenizer": "cl100k_base" + } + }, + "codestral-latest": { + "json": { + "approximate": true, + "inputCost": 0.0001323, + "inputTokens": 441, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001272, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0001272, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001302, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001386, + "inputTokens": 462, + "tokenizer": "mistral_v1_v3" + } + }, + "codex-mini-latest": { + "json": { + "approximate": false, + "inputCost": 0.0005895, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0005475, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0005475, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0005595, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0005655, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "command-r": { + "json": { + "approximate": true, + "inputCost": 0.00006645, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000651, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000651, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00006585, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00006585, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "command-r-plus": { + "json": { + "approximate": true, + "inputCost": 0.0011075, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001085, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.001085, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0010975, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0010975, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "devstral-medium-2507": { + "json": { + "approximate": true, + "inputCost": 0.0001772, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001736, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001736, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001756, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001756, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "devstral-small-2505": { + "json": { + "approximate": true, + "inputCost": 0.0000443, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000434, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000434, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000439, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000439, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "devstral-small-2507": { + "json": { + "approximate": true, + "inputCost": 0.0000443, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000434, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000434, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000439, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000439, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "gemini-1.5-flash": { + "json": { + "approximate": true, + "inputCost": 0.00003322, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00003255, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003255, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00003292, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00003292, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "gemini-1.5-flash-8b": { + "json": { + "approximate": true, + "inputCost": 0.00001661, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001627, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00001627, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00001646, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00001646, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "gemini-1.5-pro": { + "json": { + "approximate": true, + "inputCost": 0.00055375, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0005425, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0005425, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00054875, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00054875, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "gemini-2.0-flash": { + "json": { + "approximate": true, + "inputCost": 0.0000443, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000434, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000434, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000439, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000439, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "gemini-2.0-flash-lite": { + "json": { + "approximate": true, + "inputCost": 0.00003322, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00003255, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003255, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00003292, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00003292, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "gemini-2.5-flash": { + "json": { + "approximate": true, + "inputCost": 0.0001329, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0001302, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001302, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001317, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001317, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "gemini-2.5-pro": { + "json": { + "approximate": true, + "inputCost": 0.00055375, + "inputTokens": 443, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0005425, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0005425, + "inputTokens": 434, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00054875, + "inputTokens": 439, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00054875, + "inputTokens": 439, + "tokenizer": "heuristic" + } + }, + "gpt-3.5-turbo": { + "json": { + "approximate": false, + "inputCost": 0.0001965, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0001825, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0001825, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0001865, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0001885, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-4": { + "json": { + "approximate": false, + "inputCost": 0.01179, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.01095, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.01095, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.01119, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.01131, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-4-turbo": { + "json": { + "approximate": false, + "inputCost": 0.00393, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00365, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00365, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00373, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00377, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-4.1": { + "json": { + "approximate": false, + "inputCost": 0.000786, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00073, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00073, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.000746, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.000754, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-4.1-mini": { + "json": { + "approximate": false, + "inputCost": 0.0001572, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000146, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.000146, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0001492, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0001508, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-4.1-nano": { + "json": { + "approximate": false, + "inputCost": 0.0000393, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0000365, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0000365, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0000373, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0000377, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-4o": { + "json": { + "approximate": false, + "inputCost": 0.0009825, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.0009125, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0009125, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.0009325, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0009425, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-4o-mini": { + "json": { + "approximate": false, + "inputCost": 0.00005895, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00005475, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00005475, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00005595, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00005655, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-5": { + "json": { + "approximate": false, + "inputCost": 0.00049125, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00045625, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00045625, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00046625, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00047125, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-5-chat-latest": { + "json": { + "approximate": false, + "inputCost": 0.00049125, + "inputTokens": 393, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00045625, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00045625, + "inputTokens": 365, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00046625, + "inputTokens": 373, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00047125, + "inputTokens": 377, + "tokenizer": "o200k_base" + } + }, + "gpt-5-mini": { + "json": { + "approximate": false, + "inputCost": 0.00009825, + "inputTokens": 393, + "tokenizer": "o200k_base" }, "markdown": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00009125, + "inputTokens": 365, + "tokenizer": "o200k_base" }, "text": { - "approximate": true, - "inputCost": 0.001092, - "inputTokens": 364, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00009125, + "inputTokens": 365, + "tokenizer": "o200k_base" }, "xml": { - "approximate": true, - "inputCost": 0.001116, - "inputTokens": 372, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00009325, + "inputTokens": 373, + "tokenizer": "o200k_base" }, "yaml": { - "approximate": true, - "inputCost": 0.001125, - "inputTokens": 375, - "tokenizer": "cl100k_base" + "approximate": false, + "inputCost": 0.00009425, + "inputTokens": 377, + "tokenizer": "o200k_base" } }, - "codex-mini-latest": { + "gpt-5-nano": { "json": { "approximate": false, - "inputCost": 0.0005895, + "inputCost": 0.00001965, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0005475, + "inputCost": 0.00001825, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0005475, + "inputCost": 0.00001825, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0005595, + "inputCost": 0.00001865, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0005655, + "inputCost": 0.00001885, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "gemini-1.5-flash": { + "magistral-medium-latest": { "json": { "approximate": true, - "inputCost": 0.00003322, + "inputCost": 0.000886, "inputTokens": 443, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00003255, + "inputCost": 0.000868, "inputTokens": 434, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00003255, + "inputCost": 0.000868, "inputTokens": 434, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00003292, + "inputCost": 0.000878, "inputTokens": 439, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00003292, + "inputCost": 0.000878, "inputTokens": 439, "tokenizer": "heuristic" } }, - "gemini-1.5-flash-8b": { + "magistral-small": { "json": { "approximate": true, - "inputCost": 0.00001661, + "inputCost": 0.0002215, "inputTokens": 443, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.00001627, + "inputCost": 0.000217, "inputTokens": 434, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.00001627, + "inputCost": 0.000217, "inputTokens": 434, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00001646, + "inputCost": 0.0002195, "inputTokens": 439, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00001646, + "inputCost": 0.0002195, "inputTokens": 439, "tokenizer": "heuristic" } }, - "gemini-1.5-pro": { + "ministral-3b-latest": { "json": { "approximate": true, - "inputCost": 0.00055375, + "inputCost": 0.00001772, "inputTokens": 443, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.0005425, + "inputCost": 0.00001736, "inputTokens": 434, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0005425, + "inputCost": 0.00001736, "inputTokens": 434, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00054875, + "inputCost": 0.00001756, "inputTokens": 439, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00054875, + "inputCost": 0.00001756, "inputTokens": 439, "tokenizer": "heuristic" } }, - "gemini-2.0-flash": { + "ministral-8b-latest": { "json": { "approximate": true, "inputCost": 0.0000443, @@ -11397,583 +17594,455 @@ "tokenizer": "heuristic" } }, - "gemini-2.0-flash-lite": { + "mistral-large-latest": { "json": { "approximate": true, - "inputCost": 0.00003322, - "inputTokens": 443, - "tokenizer": "heuristic" + "inputCost": 0.000882, + "inputTokens": 441, + "tokenizer": "mistral_v1_v3" }, "markdown": { "approximate": true, - "inputCost": 0.00003255, - "inputTokens": 434, - "tokenizer": "heuristic" + "inputCost": 0.000848, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" }, "text": { "approximate": true, - "inputCost": 0.00003255, - "inputTokens": 434, - "tokenizer": "heuristic" + "inputCost": 0.000848, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" }, "xml": { "approximate": true, - "inputCost": 0.00003292, - "inputTokens": 439, - "tokenizer": "heuristic" + "inputCost": 0.000868, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" }, "yaml": { "approximate": true, - "inputCost": 0.00003292, - "inputTokens": 439, - "tokenizer": "heuristic" + "inputCost": 0.000924, + "inputTokens": 462, + "tokenizer": "mistral_v1_v3" } }, - "gemini-2.5-flash": { + "mistral-medium-2505": { "json": { "approximate": true, - "inputCost": 0.0001329, + "inputCost": 0.0001772, "inputTokens": 443, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.0001302, + "inputCost": 0.0001736, "inputTokens": 434, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0001302, + "inputCost": 0.0001736, "inputTokens": 434, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.0001317, + "inputCost": 0.0001756, "inputTokens": 439, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.0001317, + "inputCost": 0.0001756, "inputTokens": 439, "tokenizer": "heuristic" } }, - "gemini-2.5-pro": { + "mistral-medium-2508": { "json": { "approximate": true, - "inputCost": 0.00055375, + "inputCost": 0.0001772, "inputTokens": 443, "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.0005425, + "inputCost": 0.0001736, "inputTokens": 434, "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.0005425, + "inputCost": 0.0001736, "inputTokens": 434, "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.00054875, + "inputCost": 0.0001756, "inputTokens": 439, "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.00054875, + "inputCost": 0.0001756, "inputTokens": 439, "tokenizer": "heuristic" } }, - "gpt-3.5-turbo": { - "json": { - "approximate": false, - "inputCost": 0.0001965, - "inputTokens": 393, - "tokenizer": "o200k_base" - }, - "markdown": { - "approximate": false, - "inputCost": 0.0001825, - "inputTokens": 365, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.0001825, - "inputTokens": 365, - "tokenizer": "o200k_base" - }, - "xml": { - "approximate": false, - "inputCost": 0.0001865, - "inputTokens": 373, - "tokenizer": "o200k_base" - }, - "yaml": { - "approximate": false, - "inputCost": 0.0001885, - "inputTokens": 377, - "tokenizer": "o200k_base" - } - }, - "gpt-4": { - "json": { - "approximate": false, - "inputCost": 0.01179, - "inputTokens": 393, - "tokenizer": "o200k_base" - }, - "markdown": { - "approximate": false, - "inputCost": 0.01095, - "inputTokens": 365, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.01095, - "inputTokens": 365, - "tokenizer": "o200k_base" - }, - "xml": { - "approximate": false, - "inputCost": 0.01119, - "inputTokens": 373, - "tokenizer": "o200k_base" - }, - "yaml": { - "approximate": false, - "inputCost": 0.01131, - "inputTokens": 377, - "tokenizer": "o200k_base" - } - }, - "gpt-4-turbo": { - "json": { - "approximate": false, - "inputCost": 0.00393, - "inputTokens": 393, - "tokenizer": "o200k_base" - }, - "markdown": { - "approximate": false, - "inputCost": 0.00365, - "inputTokens": 365, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.00365, - "inputTokens": 365, - "tokenizer": "o200k_base" - }, - "xml": { - "approximate": false, - "inputCost": 0.00373, - "inputTokens": 373, - "tokenizer": "o200k_base" - }, - "yaml": { - "approximate": false, - "inputCost": 0.00377, - "inputTokens": 377, - "tokenizer": "o200k_base" - } - }, - "gpt-4.1": { - "json": { - "approximate": false, - "inputCost": 0.000786, - "inputTokens": 393, - "tokenizer": "o200k_base" - }, - "markdown": { - "approximate": false, - "inputCost": 0.00073, - "inputTokens": 365, - "tokenizer": "o200k_base" - }, - "text": { - "approximate": false, - "inputCost": 0.00073, - "inputTokens": 365, - "tokenizer": "o200k_base" - }, - "xml": { - "approximate": false, - "inputCost": 0.000746, - "inputTokens": 373, - "tokenizer": "o200k_base" - }, - "yaml": { - "approximate": false, - "inputCost": 0.000754, - "inputTokens": 377, - "tokenizer": "o200k_base" - } - }, - "gpt-4.1-mini": { + "mistral-medium-latest": { "json": { - "approximate": false, - "inputCost": 0.0001572, - "inputTokens": 393, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001772, + "inputTokens": 443, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000146, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001736, + "inputTokens": 434, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.000146, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001736, + "inputTokens": 434, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0001492, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001756, + "inputTokens": 439, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0001508, - "inputTokens": 377, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001756, + "inputTokens": 439, + "tokenizer": "heuristic" } }, - "gpt-4.1-nano": { + "mistral-nemo": { "json": { - "approximate": false, - "inputCost": 0.0000393, - "inputTokens": 393, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006645, + "inputTokens": 443, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0000365, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000651, + "inputTokens": 434, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0000365, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000651, + "inputTokens": 434, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0000373, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006585, + "inputTokens": 439, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0000377, - "inputTokens": 377, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006585, + "inputTokens": 439, + "tokenizer": "heuristic" } }, - "gpt-4o": { + "mistral-small-latest": { "json": { - "approximate": false, - "inputCost": 0.0009825, - "inputTokens": 393, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000443, + "inputTokens": 443, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0009125, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000434, + "inputTokens": 434, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0009125, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000434, + "inputTokens": 434, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0009325, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000439, + "inputTokens": 439, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0009425, - "inputTokens": 377, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000439, + "inputTokens": 439, + "tokenizer": "heuristic" } }, - "gpt-4o-mini": { + "o1": { "json": { "approximate": false, - "inputCost": 0.00005895, + "inputCost": 0.005895, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00005475, + "inputCost": 0.005475, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00005475, + "inputCost": 0.005475, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00005595, + "inputCost": 0.005595, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00005655, + "inputCost": 0.005655, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "gpt-5": { + "o1-mini": { "json": { "approximate": false, - "inputCost": 0.00049125, + "inputCost": 0.0004323, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00045625, + "inputCost": 0.0004015, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00045625, + "inputCost": 0.0004015, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00046625, + "inputCost": 0.0004103, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00047125, + "inputCost": 0.0004147, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "gpt-5-chat-latest": { + "o1-pro": { "json": { "approximate": false, - "inputCost": 0.00049125, + "inputCost": 0.05895, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00045625, + "inputCost": 0.05475, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00045625, + "inputCost": 0.05475, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00046625, + "inputCost": 0.05595, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00047125, + "inputCost": 0.05655, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "gpt-5-mini": { + "o3": { "json": { "approximate": false, - "inputCost": 0.00009825, + "inputCost": 0.000786, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00009125, + "inputCost": 0.00073, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00009125, + "inputCost": 0.00073, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00009325, + "inputCost": 0.000746, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00009425, + "inputCost": 0.000754, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "gpt-5-nano": { + "o3-deep-research": { "json": { "approximate": false, - "inputCost": 0.00001965, + "inputCost": 0.00393, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00001825, + "inputCost": 0.00365, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00001825, + "inputCost": 0.00365, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00001865, + "inputCost": 0.00373, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00001885, + "inputCost": 0.00377, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "o1": { + "o3-mini": { "json": { "approximate": false, - "inputCost": 0.005895, + "inputCost": 0.0004323, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.005475, + "inputCost": 0.0004015, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.005475, + "inputCost": 0.0004015, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.005595, + "inputCost": 0.0004103, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.005655, + "inputCost": 0.0004147, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "o1-mini": { + "o3-pro": { "json": { "approximate": false, - "inputCost": 0.0004323, + "inputCost": 0.00786, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0004015, + "inputCost": 0.0073, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0004015, + "inputCost": 0.0073, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0004103, + "inputCost": 0.00746, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0004147, + "inputCost": 0.00754, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "o1-pro": { + "o4-mini": { "json": { "approximate": false, - "inputCost": 0.05895, + "inputCost": 0.0004323, "inputTokens": 393, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.05475, + "inputCost": 0.0004015, "inputTokens": 365, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.05475, + "inputCost": 0.0004015, "inputTokens": 365, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.05595, + "inputCost": 0.0004103, "inputTokens": 373, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.05655, + "inputCost": 0.0004147, "inputTokens": 377, "tokenizer": "o200k_base" } }, - "o3": { + "o4-mini-deep-research": { "json": { "approximate": false, "inputCost": 0.000786, @@ -12005,164 +18074,164 @@ "tokenizer": "o200k_base" } }, - "o3-deep-research": { + "open-mistral-7b": { "json": { - "approximate": false, - "inputCost": 0.00393, - "inputTokens": 393, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00011025, + "inputTokens": 441, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.00365, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000106, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.00365, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000106, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.00373, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001085, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.00377, - "inputTokens": 377, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001155, + "inputTokens": 462, + "tokenizer": "mistral_v1_v3" } }, - "o3-mini": { + "open-mixtral-8x22b": { "json": { - "approximate": false, - "inputCost": 0.0004323, - "inputTokens": 393, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000882, + "inputTokens": 441, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.0004015, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000848, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.0004015, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000848, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.0004103, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000868, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.0004147, - "inputTokens": 377, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000924, + "inputTokens": 462, + "tokenizer": "mistral_v1_v3" } }, - "o3-pro": { + "open-mixtral-8x7b": { "json": { - "approximate": false, - "inputCost": 0.00786, - "inputTokens": 393, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003087, + "inputTokens": 441, + "tokenizer": "mistral_v1_v3" }, "markdown": { - "approximate": false, - "inputCost": 0.0073, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002968, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" }, "text": { - "approximate": false, - "inputCost": 0.0073, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0002968, + "inputTokens": 424, + "tokenizer": "mistral_v1_v3" }, "xml": { - "approximate": false, - "inputCost": 0.00746, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003038, + "inputTokens": 434, + "tokenizer": "mistral_v1_v3" }, "yaml": { - "approximate": false, - "inputCost": 0.00754, - "inputTokens": 377, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003234, + "inputTokens": 462, + "tokenizer": "mistral_v1_v3" } }, - "o4-mini": { + "pixtral-12b": { "json": { - "approximate": false, - "inputCost": 0.0004323, - "inputTokens": 393, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006645, + "inputTokens": 443, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0004015, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000651, + "inputTokens": 434, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0004015, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000651, + "inputTokens": 434, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0004103, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006585, + "inputTokens": 439, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0004147, - "inputTokens": 377, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00006585, + "inputTokens": 439, + "tokenizer": "heuristic" } }, - "o4-mini-deep-research": { + "pixtral-large-latest": { "json": { - "approximate": false, - "inputCost": 0.000786, - "inputTokens": 393, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000886, + "inputTokens": 443, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00073, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000868, + "inputTokens": 434, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00073, - "inputTokens": 365, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000868, + "inputTokens": 434, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.000746, - "inputTokens": 373, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000878, + "inputTokens": 439, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.000754, - "inputTokens": 377, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000878, + "inputTokens": 439, + "tokenizer": "heuristic" } } }, @@ -12482,137 +18551,329 @@ }, "yaml": { "approximate": true, - "inputCost": 0.005835, - "inputTokens": 389, - "tokenizer": "cl100k_base" + "inputCost": 0.005835, + "inputTokens": 389, + "tokenizer": "cl100k_base" + } + }, + "claude-opus-4-7": { + "json": { + "approximate": true, + "inputCost": 0.00447, + "inputTokens": 298, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.001455, + "inputTokens": 97, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.01302, + "inputTokens": 868, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.007095, + "inputTokens": 473, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.005835, + "inputTokens": 389, + "tokenizer": "cl100k_base" + } + }, + "claude-sonnet-4-20250514": { + "json": { + "approximate": true, + "inputCost": 0.000894, + "inputTokens": 298, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000291, + "inputTokens": 97, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.002604, + "inputTokens": 868, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.001419, + "inputTokens": 473, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001167, + "inputTokens": 389, + "tokenizer": "cl100k_base" + } + }, + "claude-sonnet-4-6": { + "json": { + "approximate": true, + "inputCost": 0.000894, + "inputTokens": 298, + "tokenizer": "cl100k_base" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000291, + "inputTokens": 97, + "tokenizer": "cl100k_base" + }, + "text": { + "approximate": true, + "inputCost": 0.002604, + "inputTokens": 868, + "tokenizer": "cl100k_base" + }, + "xml": { + "approximate": true, + "inputCost": 0.001419, + "inputTokens": 473, + "tokenizer": "cl100k_base" + }, + "yaml": { + "approximate": true, + "inputCost": 0.001167, + "inputTokens": 389, + "tokenizer": "cl100k_base" + } + }, + "codestral-latest": { + "json": { + "approximate": true, + "inputCost": 0.0001128, + "inputTokens": 376, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000336, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0002841, + "inputTokens": 947, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0001536, + "inputTokens": 512, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001368, + "inputTokens": 456, + "tokenizer": "mistral_v1_v3" + } + }, + "codex-mini-latest": { + "json": { + "approximate": false, + "inputCost": 0.0004605, + "inputTokens": 307, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000144, + "inputTokens": 96, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0013035, + "inputTokens": 869, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.000711, + "inputTokens": 474, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0005835, + "inputTokens": 389, + "tokenizer": "o200k_base" + } + }, + "command-r": { + "json": { + "approximate": true, + "inputCost": 0.0000522, + "inputTokens": 348, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001665, + "inputTokens": 111, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001209, + "inputTokens": 806, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000705, + "inputTokens": 470, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00007455, + "inputTokens": 497, + "tokenizer": "heuristic" } }, - "claude-opus-4-7": { + "command-r-plus": { "json": { "approximate": true, - "inputCost": 0.00447, - "inputTokens": 298, - "tokenizer": "cl100k_base" + "inputCost": 0.00087, + "inputTokens": 348, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.001455, - "inputTokens": 97, - "tokenizer": "cl100k_base" + "inputCost": 0.0002775, + "inputTokens": 111, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.01302, - "inputTokens": 868, - "tokenizer": "cl100k_base" + "inputCost": 0.002015, + "inputTokens": 806, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.007095, - "inputTokens": 473, - "tokenizer": "cl100k_base" + "inputCost": 0.001175, + "inputTokens": 470, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.005835, - "inputTokens": 389, - "tokenizer": "cl100k_base" + "inputCost": 0.0012425, + "inputTokens": 497, + "tokenizer": "heuristic" } }, - "claude-sonnet-4-20250514": { + "devstral-medium-2507": { "json": { "approximate": true, - "inputCost": 0.000894, - "inputTokens": 298, - "tokenizer": "cl100k_base" + "inputCost": 0.0001392, + "inputTokens": 348, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.000291, - "inputTokens": 97, - "tokenizer": "cl100k_base" + "inputCost": 0.0000444, + "inputTokens": 111, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.002604, - "inputTokens": 868, - "tokenizer": "cl100k_base" + "inputCost": 0.0003224, + "inputTokens": 806, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.001419, - "inputTokens": 473, - "tokenizer": "cl100k_base" + "inputCost": 0.000188, + "inputTokens": 470, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.001167, - "inputTokens": 389, - "tokenizer": "cl100k_base" + "inputCost": 0.0001988, + "inputTokens": 497, + "tokenizer": "heuristic" } }, - "claude-sonnet-4-6": { + "devstral-small-2505": { "json": { "approximate": true, - "inputCost": 0.000894, - "inputTokens": 298, - "tokenizer": "cl100k_base" + "inputCost": 0.0000348, + "inputTokens": 348, + "tokenizer": "heuristic" }, "markdown": { "approximate": true, - "inputCost": 0.000291, - "inputTokens": 97, - "tokenizer": "cl100k_base" + "inputCost": 0.0000111, + "inputTokens": 111, + "tokenizer": "heuristic" }, "text": { "approximate": true, - "inputCost": 0.002604, - "inputTokens": 868, - "tokenizer": "cl100k_base" + "inputCost": 0.0000806, + "inputTokens": 806, + "tokenizer": "heuristic" }, "xml": { "approximate": true, - "inputCost": 0.001419, - "inputTokens": 473, - "tokenizer": "cl100k_base" + "inputCost": 0.000047, + "inputTokens": 470, + "tokenizer": "heuristic" }, "yaml": { "approximate": true, - "inputCost": 0.001167, - "inputTokens": 389, - "tokenizer": "cl100k_base" + "inputCost": 0.0000497, + "inputTokens": 497, + "tokenizer": "heuristic" } }, - "codex-mini-latest": { + "devstral-small-2507": { "json": { - "approximate": false, - "inputCost": 0.0004605, - "inputTokens": 307, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000348, + "inputTokens": 348, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000144, - "inputTokens": 96, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000111, + "inputTokens": 111, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.0013035, - "inputTokens": 869, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000806, + "inputTokens": 806, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.000711, - "inputTokens": 474, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000047, + "inputTokens": 470, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.0005835, - "inputTokens": 389, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000497, + "inputTokens": 497, + "tokenizer": "heuristic" } }, "gemini-1.5-flash": { @@ -12839,388 +19100,708 @@ "tokenizer": "heuristic" } }, - "gpt-3.5-turbo": { + "gpt-3.5-turbo": { + "json": { + "approximate": false, + "inputCost": 0.0001535, + "inputTokens": 307, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000048, + "inputTokens": 96, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.0004345, + "inputTokens": 869, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.000237, + "inputTokens": 474, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.0001945, + "inputTokens": 389, + "tokenizer": "o200k_base" + } + }, + "gpt-4": { + "json": { + "approximate": false, + "inputCost": 0.00921, + "inputTokens": 307, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00288, + "inputTokens": 96, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.02607, + "inputTokens": 869, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.01422, + "inputTokens": 474, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.01167, + "inputTokens": 389, + "tokenizer": "o200k_base" + } + }, + "gpt-4-turbo": { + "json": { + "approximate": false, + "inputCost": 0.00307, + "inputTokens": 307, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.00096, + "inputTokens": 96, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.00869, + "inputTokens": 869, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.00474, + "inputTokens": 474, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.00389, + "inputTokens": 389, + "tokenizer": "o200k_base" + } + }, + "gpt-4.1": { + "json": { + "approximate": false, + "inputCost": 0.000614, + "inputTokens": 307, + "tokenizer": "o200k_base" + }, + "markdown": { + "approximate": false, + "inputCost": 0.000192, + "inputTokens": 96, + "tokenizer": "o200k_base" + }, + "text": { + "approximate": false, + "inputCost": 0.001738, + "inputTokens": 869, + "tokenizer": "o200k_base" + }, + "xml": { + "approximate": false, + "inputCost": 0.000948, + "inputTokens": 474, + "tokenizer": "o200k_base" + }, + "yaml": { + "approximate": false, + "inputCost": 0.000778, + "inputTokens": 389, + "tokenizer": "o200k_base" + } + }, + "gpt-4.1-mini": { "json": { "approximate": false, - "inputCost": 0.0001535, + "inputCost": 0.0001228, "inputTokens": 307, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.000048, + "inputCost": 0.0000384, "inputTokens": 96, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0004345, + "inputCost": 0.0003476, "inputTokens": 869, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.000237, + "inputCost": 0.0001896, "inputTokens": 474, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0001945, + "inputCost": 0.0001556, "inputTokens": 389, "tokenizer": "o200k_base" } }, - "gpt-4": { + "gpt-4.1-nano": { "json": { "approximate": false, - "inputCost": 0.00921, + "inputCost": 0.0000307, "inputTokens": 307, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00288, + "inputCost": 0.0000096, "inputTokens": 96, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.02607, + "inputCost": 0.0000869, "inputTokens": 869, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.01422, + "inputCost": 0.0000474, "inputTokens": 474, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.01167, + "inputCost": 0.0000389, "inputTokens": 389, "tokenizer": "o200k_base" } }, - "gpt-4-turbo": { + "gpt-4o": { "json": { "approximate": false, - "inputCost": 0.00307, + "inputCost": 0.0007675, "inputTokens": 307, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00096, + "inputCost": 0.00024, "inputTokens": 96, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00869, + "inputCost": 0.0021725, "inputTokens": 869, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.00474, + "inputCost": 0.001185, "inputTokens": 474, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00389, + "inputCost": 0.0009725, "inputTokens": 389, "tokenizer": "o200k_base" } }, - "gpt-4.1": { + "gpt-4o-mini": { "json": { "approximate": false, - "inputCost": 0.000614, + "inputCost": 0.00004605, "inputTokens": 307, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.000192, + "inputCost": 0.0000144, "inputTokens": 96, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.001738, + "inputCost": 0.00013035, "inputTokens": 869, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.000948, + "inputCost": 0.0000711, "inputTokens": 474, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.000778, + "inputCost": 0.00005835, "inputTokens": 389, "tokenizer": "o200k_base" } }, - "gpt-4.1-mini": { + "gpt-5": { "json": { "approximate": false, - "inputCost": 0.0001228, + "inputCost": 0.00038375, "inputTokens": 307, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0000384, + "inputCost": 0.00012, "inputTokens": 96, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0003476, + "inputCost": 0.00108625, "inputTokens": 869, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0001896, + "inputCost": 0.0005925, "inputTokens": 474, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0001556, + "inputCost": 0.00048625, "inputTokens": 389, "tokenizer": "o200k_base" } }, - "gpt-4.1-nano": { + "gpt-5-chat-latest": { "json": { "approximate": false, - "inputCost": 0.0000307, + "inputCost": 0.00038375, "inputTokens": 307, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0000096, + "inputCost": 0.00012, "inputTokens": 96, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0000869, + "inputCost": 0.00108625, "inputTokens": 869, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0000474, + "inputCost": 0.0005925, "inputTokens": 474, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0000389, + "inputCost": 0.00048625, "inputTokens": 389, "tokenizer": "o200k_base" } }, - "gpt-4o": { + "gpt-5-mini": { "json": { "approximate": false, - "inputCost": 0.0007675, + "inputCost": 0.00007675, "inputTokens": 307, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.00024, + "inputCost": 0.000024, "inputTokens": 96, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.0021725, + "inputCost": 0.00021725, "inputTokens": 869, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.001185, + "inputCost": 0.0001185, "inputTokens": 474, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.0009725, + "inputCost": 0.00009725, "inputTokens": 389, "tokenizer": "o200k_base" } }, - "gpt-4o-mini": { + "gpt-5-nano": { "json": { "approximate": false, - "inputCost": 0.00004605, + "inputCost": 0.00001535, "inputTokens": 307, "tokenizer": "o200k_base" }, "markdown": { "approximate": false, - "inputCost": 0.0000144, + "inputCost": 0.0000048, "inputTokens": 96, "tokenizer": "o200k_base" }, "text": { "approximate": false, - "inputCost": 0.00013035, + "inputCost": 0.00004345, "inputTokens": 869, "tokenizer": "o200k_base" }, "xml": { "approximate": false, - "inputCost": 0.0000711, + "inputCost": 0.0000237, "inputTokens": 474, "tokenizer": "o200k_base" }, "yaml": { "approximate": false, - "inputCost": 0.00005835, + "inputCost": 0.00001945, "inputTokens": 389, "tokenizer": "o200k_base" } }, - "gpt-5": { + "magistral-medium-latest": { + "json": { + "approximate": true, + "inputCost": 0.000696, + "inputTokens": 348, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000222, + "inputTokens": 111, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.001612, + "inputTokens": 806, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00094, + "inputTokens": 470, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000994, + "inputTokens": 497, + "tokenizer": "heuristic" + } + }, + "magistral-small": { + "json": { + "approximate": true, + "inputCost": 0.000174, + "inputTokens": 348, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000555, + "inputTokens": 111, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.000403, + "inputTokens": 806, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000235, + "inputTokens": 470, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0002485, + "inputTokens": 497, + "tokenizer": "heuristic" + } + }, + "ministral-3b-latest": { + "json": { + "approximate": true, + "inputCost": 0.00001392, + "inputTokens": 348, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00000444, + "inputTokens": 111, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.00003224, + "inputTokens": 806, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000188, + "inputTokens": 470, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00001988, + "inputTokens": 497, + "tokenizer": "heuristic" + } + }, + "ministral-8b-latest": { + "json": { + "approximate": true, + "inputCost": 0.0000348, + "inputTokens": 348, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000111, + "inputTokens": 111, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0000806, + "inputTokens": 806, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000047, + "inputTokens": 470, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0000497, + "inputTokens": 497, + "tokenizer": "heuristic" + } + }, + "mistral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.000752, + "inputTokens": 376, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000224, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.001894, + "inputTokens": 947, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.001024, + "inputTokens": 512, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000912, + "inputTokens": 456, + "tokenizer": "mistral_v1_v3" + } + }, + "mistral-medium-2505": { + "json": { + "approximate": true, + "inputCost": 0.0001392, + "inputTokens": 348, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000444, + "inputTokens": 111, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0003224, + "inputTokens": 806, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.000188, + "inputTokens": 470, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0001988, + "inputTokens": 497, + "tokenizer": "heuristic" + } + }, + "mistral-medium-2508": { "json": { - "approximate": false, - "inputCost": 0.00038375, - "inputTokens": 307, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001392, + "inputTokens": 348, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00012, - "inputTokens": 96, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000444, + "inputTokens": 111, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00108625, - "inputTokens": 869, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003224, + "inputTokens": 806, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0005925, - "inputTokens": 474, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000188, + "inputTokens": 470, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00048625, - "inputTokens": 389, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001988, + "inputTokens": 497, + "tokenizer": "heuristic" } }, - "gpt-5-chat-latest": { + "mistral-medium-latest": { "json": { - "approximate": false, - "inputCost": 0.00038375, - "inputTokens": 307, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001392, + "inputTokens": 348, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.00012, - "inputTokens": 96, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000444, + "inputTokens": 111, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00108625, - "inputTokens": 869, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0003224, + "inputTokens": 806, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0005925, - "inputTokens": 474, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000188, + "inputTokens": 470, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00048625, - "inputTokens": 389, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001988, + "inputTokens": 497, + "tokenizer": "heuristic" } }, - "gpt-5-mini": { + "mistral-nemo": { "json": { - "approximate": false, - "inputCost": 0.00007675, - "inputTokens": 307, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000522, + "inputTokens": 348, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.000024, - "inputTokens": 96, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00001665, + "inputTokens": 111, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00021725, - "inputTokens": 869, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0001209, + "inputTokens": 806, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0001185, - "inputTokens": 474, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000705, + "inputTokens": 470, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00009725, - "inputTokens": 389, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.00007455, + "inputTokens": 497, + "tokenizer": "heuristic" } }, - "gpt-5-nano": { + "mistral-small-latest": { "json": { - "approximate": false, - "inputCost": 0.00001535, - "inputTokens": 307, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000348, + "inputTokens": 348, + "tokenizer": "heuristic" }, "markdown": { - "approximate": false, - "inputCost": 0.0000048, - "inputTokens": 96, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000111, + "inputTokens": 111, + "tokenizer": "heuristic" }, "text": { - "approximate": false, - "inputCost": 0.00004345, - "inputTokens": 869, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000806, + "inputTokens": 806, + "tokenizer": "heuristic" }, "xml": { - "approximate": false, - "inputCost": 0.0000237, - "inputTokens": 474, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.000047, + "inputTokens": 470, + "tokenizer": "heuristic" }, "yaml": { - "approximate": false, - "inputCost": 0.00001945, - "inputTokens": 389, - "tokenizer": "o200k_base" + "approximate": true, + "inputCost": 0.0000497, + "inputTokens": 497, + "tokenizer": "heuristic" } }, "o1": { @@ -13510,9 +20091,169 @@ "inputTokens": 389, "tokenizer": "o200k_base" } + }, + "open-mistral-7b": { + "json": { + "approximate": true, + "inputCost": 0.000094, + "inputTokens": 376, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000028, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.00023675, + "inputTokens": 947, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.000128, + "inputTokens": 512, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000114, + "inputTokens": 456, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x22b": { + "json": { + "approximate": true, + "inputCost": 0.000752, + "inputTokens": 376, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000224, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.001894, + "inputTokens": 947, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.001024, + "inputTokens": 512, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000912, + "inputTokens": 456, + "tokenizer": "mistral_v1_v3" + } + }, + "open-mixtral-8x7b": { + "json": { + "approximate": true, + "inputCost": 0.0002632, + "inputTokens": 376, + "tokenizer": "mistral_v1_v3" + }, + "markdown": { + "approximate": true, + "inputCost": 0.0000784, + "inputTokens": 112, + "tokenizer": "mistral_v1_v3" + }, + "text": { + "approximate": true, + "inputCost": 0.0006629, + "inputTokens": 947, + "tokenizer": "mistral_v1_v3" + }, + "xml": { + "approximate": true, + "inputCost": 0.0003584, + "inputTokens": 512, + "tokenizer": "mistral_v1_v3" + }, + "yaml": { + "approximate": true, + "inputCost": 0.0003192, + "inputTokens": 456, + "tokenizer": "mistral_v1_v3" + } + }, + "pixtral-12b": { + "json": { + "approximate": true, + "inputCost": 0.0000522, + "inputTokens": 348, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.00001665, + "inputTokens": 111, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.0001209, + "inputTokens": 806, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.0000705, + "inputTokens": 470, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.00007455, + "inputTokens": 497, + "tokenizer": "heuristic" + } + }, + "pixtral-large-latest": { + "json": { + "approximate": true, + "inputCost": 0.000696, + "inputTokens": 348, + "tokenizer": "heuristic" + }, + "markdown": { + "approximate": true, + "inputCost": 0.000222, + "inputTokens": 111, + "tokenizer": "heuristic" + }, + "text": { + "approximate": true, + "inputCost": 0.001612, + "inputTokens": 806, + "tokenizer": "heuristic" + }, + "xml": { + "approximate": true, + "inputCost": 0.00094, + "inputTokens": 470, + "tokenizer": "heuristic" + }, + "yaml": { + "approximate": true, + "inputCost": 0.000994, + "inputTokens": 497, + "tokenizer": "heuristic" + } } } }, - "ratesVersion": "2026-05-08", + "ratesVersion": "2026-05-09", "schemaVersion": 1 } diff --git a/benchmarks/run.mjs b/benchmarks/run.mjs index 25e2c10..2005037 100644 --- a/benchmarks/run.mjs +++ b/benchmarks/run.mjs @@ -1,4 +1,16 @@ #!/usr/bin/env node +// +// Benchmark sweep modes: +// +// node benchmarks/run.mjs # offline drift check vs results.json +// node benchmarks/run.mjs --regenerate # rewrite results.json from current code +// node benchmarks/run.mjs --empirical # countTokens sweep (Anthropic / Google free), writes empirical.json +// node benchmarks/run.mjs --latency # real generation sweep (METERED), writes latency-empirical.json +// +// `--latency` runs `--latency-trials` (default 3) streaming generations per +// (model, format) cell with max_tokens=200. Cost scales linearly with the +// number of cells; respect your `MAX_SPEND_USD` env or use `--filter`. + import { readFile, readdir, writeFile } from 'node:fs/promises'; import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -6,6 +18,7 @@ import { KNOWN_MODELS, RATES_VERSION, allFormats, + measureLatency, tokenize, tokenizeEmpirical, } from '@tokenometer/core'; @@ -14,6 +27,7 @@ const HERE = dirname(fileURLToPath(import.meta.url)); const PROMPTS_DIR = join(HERE, 'prompts'); const RESULTS_PATH = join(HERE, 'results.json'); const EMPIRICAL_PATH = join(HERE, 'empirical.json'); +const LATENCY_PATH = join(HERE, 'latency-empirical.json'); const loadPrompts = async () => { const files = (await readdir(PROMPTS_DIR)).filter((f) => !f.startsWith('.')).sort(); @@ -136,8 +150,11 @@ const compareResults = async (results) => { const readEnv = () => { const env = {}; if (process.env.ANTHROPIC_API_KEY) env.anthropicApiKey = process.env.ANTHROPIC_API_KEY; + if (process.env.COHERE_API_KEY) env.cohereApiKey = process.env.COHERE_API_KEY; const googleKey = process.env.GOOGLE_API_KEY ?? process.env.GEMINI_API_KEY; if (googleKey) env.googleApiKey = googleKey; + if (process.env.MISTRAL_API_KEY) env.mistralApiKey = process.env.MISTRAL_API_KEY; + if (process.env.OPENAI_API_KEY) env.openaiApiKey = process.env.OPENAI_API_KEY; return env; }; @@ -225,10 +242,65 @@ const summarizeByProvider = (rows) => { return summary; }; +const parseLatencyTrials = (args) => { + const idx = args.indexOf('--latency-trials'); + if (idx === -1 || !args[idx + 1]) return 3; + const n = Number.parseInt(args[idx + 1], 10); + if (!Number.isFinite(n) || n < 1 || n > 10) { + throw new Error(`--latency-trials must be 1..10, got "${args[idx + 1]}"`); + } + return n; +}; + +const runLatencySweep = async (prompts, env, models, trials) => { + const formats = [...allFormats()]; + const out = {}; + let totalTrials = 0; + for (const [name, prompt] of Object.entries(prompts).sort()) { + process.stderr.write(`${name} ... `); + const byModel = {}; + for (const modelId of models) { + const byFormat = {}; + for (const format of formats) { + try { + const result = await measureLatency({ + env, + modelId, + prompt, + trials, + }); + byFormat[format] = { + mean: result.mean, + p50: result.p50, + p95: result.p95, + trials: result.trials, + }; + totalTrials += trials; + } catch (err) { + byFormat[format] = { error: err.message }; + } + } + byModel[modelId] = byFormat; + } + out[name] = byModel; + process.stderr.write('done\n'); + } + return { + formats, + generatedAt: new Date().toISOString(), + latency: out, + models, + schemaVersion: 1, + totalTrials, + trialsPerCell: trials, + }; +}; + const main = async () => { const args = process.argv.slice(2); const isRegenerate = args.includes('--regenerate'); const isEmpirical = args.includes('--empirical'); + const isLatency = args.includes('--latency'); const filter = parseModelFilter(args); const models = selectModels(filter); if (filter) { @@ -236,6 +308,30 @@ const main = async () => { } const prompts = await loadPrompts(); + if (isLatency) { + const env = readEnv(); + const trials = parseLatencyTrials(args); + if ( + !env.anthropicApiKey && + !env.googleApiKey && + !env.openaiApiKey && + !env.cohereApiKey && + !env.mistralApiKey + ) { + console.error( + 'Latency sweep needs at least one of ANTHROPIC_API_KEY / OPENAI_API_KEY / GOOGLE_API_KEY (or GEMINI_API_KEY) / COHERE_API_KEY / MISTRAL_API_KEY.', + ); + console.error( + 'Each trial is a metered ~200-token chat completion — use --filter to narrow scope.', + ); + return 1; + } + const result = await runLatencySweep(prompts, env, models, trials); + await writeFile(LATENCY_PATH, `${JSON.stringify(result, null, 2)}\n`, 'utf8'); + console.log(`\nWrote ${LATENCY_PATH} (${result.totalTrials} trials, ${trials} per cell).`); + return 0; + } + if (isEmpirical) { const env = readEnv(); if (!env.anthropicApiKey && !env.googleApiKey) { diff --git a/package-lock.json b/package-lock.json index 0d98270..59d2711 100644 --- a/package-lock.json +++ b/package-lock.json @@ -95,6 +95,191 @@ } } }, + "node_modules/@azu/format-text": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", + "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@azu/style-format": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz", + "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "@azu/format-text": "^1.0.1" + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", + "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.22.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz", + "integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", + "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz", + "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^5.5.0", + "@azure/msal-node": "^5.1.0", + "open": "^10.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.10.0.tgz", + "integrity": "sha512-2Y4TlG5mCfxviHutfW50i8Xd8xhGKTgieL02vMYOE5ZbZrVM+drKSGD//tweRAmlmqqp+F9vrKoHWri/buzxWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.6.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.6.0.tgz", + "integrity": "sha512-FemGljX0csPlBMUE5GUan7BfRn1emeMRUhHSARhqzLN6LA9nt+MgzmAQ1xVqdLm+6plVoxsq9mS5eoyKtpPSgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.2.0.tgz", + "integrity": "sha512-b/ak8XAqpnGk1N1nsyTVV0Remp48BP3QrGQZ1uCMcvg2S8X1eSXzhHQZEae2oX276Q4KFAqCUswanDtcvIKLrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.6.0", + "jsonwebtoken": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", @@ -1325,6 +1510,16 @@ } } }, + "node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -2001,6 +2196,235 @@ "win32" ] }, + "node_modules/@secretlint/config-creator": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz", + "integrity": "sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.2.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/config-loader": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz", + "integrity": "sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/profiler": "^10.2.2", + "@secretlint/resolver": "^10.2.2", + "@secretlint/types": "^10.2.2", + "ajv": "^8.17.1", + "debug": "^4.4.1", + "rc-config-loader": "^4.1.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/core": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz", + "integrity": "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/profiler": "^10.2.2", + "@secretlint/types": "^10.2.2", + "debug": "^4.4.1", + "structured-source": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/formatter": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz", + "integrity": "sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/resolver": "^10.2.2", + "@secretlint/types": "^10.2.2", + "@textlint/linter-formatter": "^15.2.0", + "@textlint/module-interop": "^15.2.0", + "@textlint/types": "^15.2.0", + "chalk": "^5.4.1", + "debug": "^4.4.1", + "pluralize": "^8.0.0", + "strip-ansi": "^7.1.0", + "table": "^6.9.0", + "terminal-link": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/formatter/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@secretlint/formatter/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@secretlint/formatter/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@secretlint/node": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz", + "integrity": "sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/config-loader": "^10.2.2", + "@secretlint/core": "^10.2.2", + "@secretlint/formatter": "^10.2.2", + "@secretlint/profiler": "^10.2.2", + "@secretlint/source-creator": "^10.2.2", + "@secretlint/types": "^10.2.2", + "debug": "^4.4.1", + "p-map": "^7.0.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/node/node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@secretlint/profiler": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz", + "integrity": "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==", + "dev": true, + "license": "MIT" + }, + "node_modules/@secretlint/resolver": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz", + "integrity": "sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@secretlint/secretlint-formatter-sarif": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz", + "integrity": "sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-sarif-builder": "^3.2.0" + } + }, + "node_modules/@secretlint/secretlint-rule-no-dotenv": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz", + "integrity": "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.2.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/secretlint-rule-preset-recommend": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz", + "integrity": "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/source-creator": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz", + "integrity": "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.2.2", + "istextorbinary": "^9.5.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/types": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz", + "integrity": "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@stablelib/base64": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz", @@ -2279,6 +2703,67 @@ "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, + "node_modules/@textlint/ast-node-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.6.0.tgz", + "integrity": "sha512-CxZHFbYAU7J0A4izz31wV2ZZfySR6aVj2OSR6/3tppZm7VV6hM7nA7sutsLwIiBL/v4lsB1RM79l4Dc/VrH4qw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.6.0.tgz", + "integrity": "sha512-IwHRhjwxs0a5t1eNAoKAdV224CDca38LyopPofXpwO/d0J75wBvzf/cBHXNl4TMsLKhYGtR83UprcLEKj/gZsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azu/format-text": "^1.0.2", + "@azu/style-format": "^1.0.1", + "@textlint/module-interop": "15.6.0", + "@textlint/resolver": "15.6.0", + "@textlint/types": "15.6.0", + "chalk": "^4.1.2", + "debug": "^4.4.3", + "js-yaml": "^4.1.1", + "lodash": "^4.18.1", + "pluralize": "^2.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "table": "^6.9.0", + "text-table": "^0.2.0" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/pluralize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", + "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/module-interop": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.6.0.tgz", + "integrity": "sha512-MHY6pJx9i5kOlrvUSK51887tYZjHAV2qnr6unBm7LtBLGDFo93utdYqHyWep8r9QLsilQdeijWtufJI46z4v4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/resolver": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.6.0.tgz", + "integrity": "sha512-T1l2Gd3455pwtm0cTewhX/LLy3bL9z6/Fu/am+jj+jjGfXVoknYkjfkZEKrjHlA7xzay0EfUKnu//teYemLeZw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.6.0.tgz", + "integrity": "sha512-CvgYb1PiqF4BGyoZebGWzAJCZ4ChJAZ9gtWjpQIMKE4Xe2KlSwDA8m8MsiZIV321f5Ibx38BMjC1Z/2ZYP2GQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@textlint/ast-node-types": "15.6.0" + } + }, "node_modules/@tokenlens/core": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@tokenlens/core/-/core-1.3.0.tgz", @@ -2317,10 +2802,18 @@ "resolved": "packages/action", "link": true }, + "node_modules/@tokenometer/claude-code-skill": { + "resolved": "packages/claude-code-skill", + "link": true + }, "node_modules/@tokenometer/core": { "resolved": "packages/core", "link": true }, + "node_modules/@tokenometer/vscode": { + "resolved": "packages/vscode", + "link": true + }, "node_modules/@tokenometer/web": { "resolved": "packages/web", "link": true @@ -2414,6 +2907,13 @@ "form-data": "^4.0.4" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/react": { "version": "19.2.14", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", @@ -2435,6 +2935,35 @@ "@types/react": "^19.2.0" } }, + "node_modules/@types/sarif": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", + "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/vscode": { + "version": "1.118.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.118.0.tgz", + "integrity": "sha512-Ah6eTlqDcwIMELEVwQMO++rJAFBRz/oLluLD/vWdYrH1KuI9kfpaM+7pg0OvvascgcJy+ghLCERAYouM4QbzGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.5.tgz", + "integrity": "sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@vitejs/plugin-react": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", @@ -2571,6 +3100,229 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vscode/vsce": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.9.1.tgz", + "integrity": "sha512-MPn5p+DoudI+3GfJSpAZZraE1lgLv0LcwbH3+xy7RgEhty3UIkmUMUA+5jPTDaxXae00AnX5u77FxGM8FhfKKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/identity": "^4.1.0", + "@secretlint/node": "^10.1.2", + "@secretlint/secretlint-formatter-sarif": "^10.1.2", + "@secretlint/secretlint-rule-no-dotenv": "^10.1.2", + "@secretlint/secretlint-rule-preset-recommend": "^10.1.2", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", + "commander": "^12.1.0", + "form-data": "^4.0.0", + "glob": "^11.0.0", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^14.1.0", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "secretlint": "^10.1.2", + "semver": "^7.5.2", + "tmp": "^0.2.3", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^3.2.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "keytar": "^7.7.0" + } + }, + "node_modules/@vscode/vsce-sign": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz", + "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==", + "dev": true, + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.6", + "@vscode/vsce-sign-alpine-x64": "2.0.6", + "@vscode/vsce-sign-darwin-arm64": "2.0.6", + "@vscode/vsce-sign-darwin-x64": "2.0.6", + "@vscode/vsce-sign-linux-arm": "2.0.6", + "@vscode/vsce-sign-linux-arm64": "2.0.6", + "@vscode/vsce-sign-linux-x64": "2.0.6", + "@vscode/vsce-sign-win32-arm64": "2.0.6", + "@vscode/vsce-sign-win32-x64": "2.0.6" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz", + "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz", + "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz", + "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz", + "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz", + "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz", + "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz", + "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz", + "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz", + "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vscode/vsce/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@vscode/vsce/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -2583,6 +3335,16 @@ "node": ">=6.5" } }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/agentkeepalive": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", @@ -2595,6 +3357,23 @@ "node": ">= 8.0.0" } }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -2605,6 +3384,22 @@ "node": ">=6" } }, + "node_modules/ansi-escapes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2615,6 +3410,22 @@ "node": ">=8" } }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2642,12 +3453,33 @@ "node": ">=12" } }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, + "node_modules/azure-devops-node-api": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, "node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", @@ -2657,6 +3489,28 @@ "node": "18 || 20 || >=22" } }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, "node_modules/baseline-browser-mapping": { "version": "2.10.27", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.27.tgz", @@ -2689,6 +3543,49 @@ "node": ">=4" } }, + "node_modules/binaryextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", + "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/boundary": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", + "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/brace-expansion": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", @@ -2749,6 +3646,65 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -2772,6 +3728,23 @@ "node": ">= 0.4" } }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001792", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", @@ -2810,16 +3783,33 @@ "node": ">=18" } }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT" - }, - "node_modules/check-error": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", "dev": true, "license": "MIT", @@ -2827,6 +3817,98 @@ "node": ">= 16" } }, + "node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio/node_modules/undici": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.25.0.tgz", + "integrity": "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -2839,6 +3921,23 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2846,6 +3945,19 @@ "dev": true, "license": "MIT" }, + "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/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2861,6 +3973,36 @@ "node": ">= 8" } }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -2893,6 +4035,23 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-eql": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", @@ -2903,6 +4062,60 @@ "node": ">=6" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2951,6 +4164,65 @@ "node": ">=8" } }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, "node_modules/dotenv": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", @@ -2975,6 +4247,33 @@ "node": ">= 0.4" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/editions/-/editions-6.22.0.tgz", + "integrity": "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "version-range": "^4.15.0" + }, + "engines": { + "ecmascript": ">= es5", + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.352", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.352.tgz", @@ -2982,6 +4281,51 @@ "dev": true, "license": "ISC" }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.21.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", @@ -3010,6 +4354,32 @@ "node": ">=8.6" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -3147,6 +4517,17 @@ "node": ">=6" } }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "license": "(MIT OR WTFPL)", + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/expect-type": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", @@ -3164,6 +4545,13 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -3187,13 +4575,30 @@ "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==", "license": "Unlicense" }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "node_modules/fast-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "dev": true, - "license": "ISC", - "dependencies": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { "reusify": "^1.0.4" } }, @@ -3224,6 +4629,23 @@ "node": ">=8" } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", @@ -3259,6 +4681,14 @@ "node": ">= 12.20" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -3345,6 +4775,39 @@ "node": ">= 0.4" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -3404,6 +4867,16 @@ "dev": true, "license": "ISC" }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -3443,6 +4916,100 @@ "node": ">= 0.4" } }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-id": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.1.3.tgz", @@ -3479,6 +5046,28 @@ "url": "https://opencollective.com/express" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause", + "optional": true + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3501,6 +5090,51 @@ "node": ">=16.x" } }, + "node_modules/index-to-position": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", + "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3511,6 +5145,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3524,6 +5168,25 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3557,6 +5220,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3564,6 +5243,40 @@ "dev": true, "license": "ISC" }, + "node_modules/istextorbinary": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", + "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "binaryextensions": "^6.11.0", + "editions": "^6.21.0", + "textextensions": "^6.11.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/jiti": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", @@ -3620,6 +5333,13 @@ "node": ">=16" } }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -3633,6 +5353,13 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -3643,6 +5370,75 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/lightningcss": { "version": "1.32.0", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", @@ -3904,6 +5700,16 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -3917,13 +5723,76 @@ "node": ">=8" } }, - "node_modules/lodash.startcase": { + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", "dev": true, "license": "MIT" }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, "node_modules/loupe": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", @@ -3951,6 +5820,24 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/markdown-it": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -3960,6 +5847,13 @@ "node": ">= 0.4" } }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3984,6 +5878,19 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -4005,6 +5912,20 @@ "node": ">= 0.6" } }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", @@ -4020,6 +5941,41 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mistral-tokenizer-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mistral-tokenizer-js/-/mistral-tokenizer-js-1.0.0.tgz", + "integrity": "sha512-9+M/2Ul5M5oRFwX+QmwUIxpi7iptLgkIs87f3DEwVqmt/hQ7j4RGkawOBjs3LsmJzEbpSQcv8GGOMG1lwoAKyw==", + "license": "MIT" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -4036,6 +5992,13 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, "node_modules/nanoid": { "version": "3.3.12", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", @@ -4055,6 +6018,36 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-abi": { + "version": "3.92.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz", + "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -4102,6 +6095,119 @@ "dev": true, "license": "MIT" }, + "node_modules/node-sarif-builder": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.4.0.tgz", + "integrity": "sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sarif": "^2.1.7", + "fs-extra": "^11.1.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/node-sarif-builder/node_modules/fs-extra": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", + "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/node-sarif-builder/node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/node-sarif-builder/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4111,6 +6217,25 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/outdent": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", @@ -4180,6 +6305,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/package-manager-detector": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", @@ -4190,6 +6322,97 @@ "quansync": "^0.2.7" } }, + "node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.1.0" + } + }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4210,6 +6433,33 @@ "node": ">=8" } }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", + "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -4237,6 +6487,13 @@ "node": ">= 14.16" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4267,10 +6524,20 @@ "node": ">=6" } }, - "node_modules/postcss": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", - "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "dev": true, "funding": [ { @@ -4296,6 +6563,35 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", @@ -4312,6 +6608,44 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/quansync": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", @@ -4350,6 +6684,36 @@ ], "license": "MIT" }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.4.tgz", + "integrity": "sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "js-yaml": "^4.1.1", + "json5": "^2.2.3", + "require-from-string": "^2.0.2" + } + }, "node_modules/react": { "version": "19.2.6", "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", @@ -4365,6 +6729,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -4382,6 +6747,77 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.15.0.tgz", + "integrity": "sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.15.0.tgz", + "integrity": "sha512-VcrVg64Fo8nwBvDscajG8gRTLIuTC6N50nb22l2HOOV4PTOHgoGp8mUjy9wLiHYoYTSYI36tUnXZgasSRFZorQ==", + "license": "MIT", + "dependencies": { + "react-router": "7.15.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/read-yaml-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", @@ -4422,6 +6858,32 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -4495,6 +6957,19 @@ "dev": true, "license": "MIT" }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4519,6 +6994,27 @@ "queue-microtask": "^1.2.2" } }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4526,12 +7022,114 @@ "dev": true, "license": "MIT" }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, + "node_modules/secretlint": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-10.2.2.tgz", + "integrity": "sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/config-creator": "^10.2.2", + "@secretlint/formatter": "^10.2.2", + "@secretlint/node": "^10.2.2", + "@secretlint/profiler": "^10.2.2", + "debug": "^4.4.1", + "globby": "^14.1.0", + "read-pkg": "^9.0.1" + }, + "bin": { + "secretlint": "bin/secretlint.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/secretlint/node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/secretlint/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/secretlint/node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/secretlint/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/secretlint/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -4545,6 +7143,12 @@ "node": ">=10" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4568,6 +7172,82 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -4588,9 +7268,58 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", @@ -4598,6 +7327,24 @@ "node": ">=8" } }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -4619,6 +7366,42 @@ "signal-exit": "^4.0.1" } }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -4650,6 +7433,32 @@ "dev": true, "license": "MIT" }, + "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==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4673,6 +7482,17 @@ "node": ">=4" } }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-literal": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", @@ -4686,6 +7506,63 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/structured-source": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz", + "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boundary": "^2.0.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/tailwindcss": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.4.tgz", @@ -4707,6 +7584,38 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", @@ -4720,6 +7629,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/terminal-link": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-4.0.0.tgz", + "integrity": "sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "supports-hyperlinks": "^3.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/textextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz", + "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -4813,6 +7762,16 @@ "node": ">=14.0.0" } }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4854,6 +7813,13 @@ "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", "license": "MIT" }, + "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==", + "dev": true, + "license": "0BSD" + }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -4863,6 +7829,45 @@ "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -4877,6 +7882,20 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/underscore": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", + "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", + "dev": true, + "license": "MIT" + }, "node_modules/undici": { "version": "5.29.0", "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", @@ -4895,6 +7914,19 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universal-user-agent": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", @@ -4942,6 +7974,45 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/version-range": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz", + "integrity": "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==", + "dev": true, + "license": "Artistic-2.0", + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/vite": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", @@ -5146,123 +8217,748 @@ } } }, - "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz", + "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yauzl": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.0.tgz", + "integrity": "sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "packages/action": { + "name": "@tokenometer/action", + "version": "0.0.2", + "license": "MIT", + "dependencies": { + "@actions/core": "^1.11.1", + "@actions/exec": "^1.1.1", + "@actions/github": "^6.0.0", + "@tokenometer/core": "0.0.2", + "minimatch": "^10.2.5" + }, + "devDependencies": { + "@types/node": "^22.10.5", + "esbuild": "^0.24.0", + "typescript": "^5.7.2" + } + }, + "packages/action/node_modules/@esbuild/aix-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/android-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/android-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/android-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/darwin-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/darwin-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/freebsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-loong64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-mips64el": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-riscv64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-s390x": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/linux-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/netbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/openbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/sunos-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "packages/action/node_modules/@esbuild/win32-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=18" } }, - "node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "packages/action/node_modules/@esbuild/win32-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 14" + "node": ">=18" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "packages/action/node_modules/@esbuild/win32-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "packages/action/node_modules/esbuild": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, + "hasInstallScript": true, + "license": "MIT", "bin": { - "node-which": "bin/node-which" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" } }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, + "packages/claude-code-skill": { + "name": "@tokenometer/claude-code-skill", + "version": "0.0.2", + "license": "MIT" + }, + "packages/cli": { + "name": "tokenometer", + "version": "0.0.2", "license": "MIT", "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" + "@tokenometer/core": "0.0.2", + "image-size": "^2.0.2" }, "bin": { - "why-is-node-running": "cli.js" + "tokenometer": "dist/index.js" }, - "engines": { - "node": ">=8" + "devDependencies": { + "@types/node": "^22.10.5", + "typescript": "^5.7.2", + "vitest": "^3.0.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz", - "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==", - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" + "packages/core": { + "name": "@tokenometer/core", + "version": "0.0.2", + "license": "MIT", + "dependencies": { + "@anthropic-ai/sdk": "^0.95.0", + "@google/generative-ai": "^0.24.1", + "@tokenlens/models": "^1.3.0", + "gpt-tokenizer": "^3.4.0", + "mistral-tokenizer-js": "^1.0.0", + "tokenlens": "^1.3.1", + "yaml": "^2.8.4" }, - "funding": { - "url": "https://github.com/sponsors/eemeli" + "devDependencies": { + "typescript": "^5.7.2", + "vitest": "^3.0.0" } }, - "packages/action": { - "name": "@tokenometer/action", + "packages/vscode": { + "name": "@tokenometer/vscode", "version": "0.0.2", "license": "MIT", "dependencies": { - "@actions/core": "^1.11.1", - "@actions/exec": "^1.1.1", - "@actions/github": "^6.0.0", - "@tokenometer/core": "0.0.2", - "minimatch": "^10.2.5" + "@tokenometer/core": "0.0.2" }, "devDependencies": { - "@types/node": "^22.10.5", + "@biomejs/biome": "^1.9.4", + "@types/vscode": "^1.85.0", + "@vscode/vsce": "^3.2.1", "esbuild": "^0.24.0", "typescript": "^5.7.2" + }, + "engines": { + "vscode": "^1.85.0" } }, - "packages/action/node_modules/@esbuild/aix-ppc64": { + "packages/vscode/node_modules/@esbuild/aix-ppc64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", @@ -5279,7 +8975,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/android-arm": { + "packages/vscode/node_modules/@esbuild/android-arm": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", @@ -5296,7 +8992,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/android-arm64": { + "packages/vscode/node_modules/@esbuild/android-arm64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", @@ -5313,7 +9009,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/android-x64": { + "packages/vscode/node_modules/@esbuild/android-x64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", @@ -5330,7 +9026,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/darwin-arm64": { + "packages/vscode/node_modules/@esbuild/darwin-arm64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", @@ -5347,7 +9043,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/darwin-x64": { + "packages/vscode/node_modules/@esbuild/darwin-x64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", @@ -5364,7 +9060,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/freebsd-arm64": { + "packages/vscode/node_modules/@esbuild/freebsd-arm64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", @@ -5381,7 +9077,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/freebsd-x64": { + "packages/vscode/node_modules/@esbuild/freebsd-x64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", @@ -5398,7 +9094,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-arm": { + "packages/vscode/node_modules/@esbuild/linux-arm": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", @@ -5415,7 +9111,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-arm64": { + "packages/vscode/node_modules/@esbuild/linux-arm64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", @@ -5432,7 +9128,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-ia32": { + "packages/vscode/node_modules/@esbuild/linux-ia32": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", @@ -5449,7 +9145,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-loong64": { + "packages/vscode/node_modules/@esbuild/linux-loong64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", @@ -5466,7 +9162,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-mips64el": { + "packages/vscode/node_modules/@esbuild/linux-mips64el": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", @@ -5483,7 +9179,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-ppc64": { + "packages/vscode/node_modules/@esbuild/linux-ppc64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", @@ -5500,7 +9196,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-riscv64": { + "packages/vscode/node_modules/@esbuild/linux-riscv64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", @@ -5517,7 +9213,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-s390x": { + "packages/vscode/node_modules/@esbuild/linux-s390x": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", @@ -5534,7 +9230,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/linux-x64": { + "packages/vscode/node_modules/@esbuild/linux-x64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", @@ -5551,7 +9247,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/netbsd-arm64": { + "packages/vscode/node_modules/@esbuild/netbsd-arm64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", @@ -5568,7 +9264,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/netbsd-x64": { + "packages/vscode/node_modules/@esbuild/netbsd-x64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", @@ -5585,7 +9281,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/openbsd-arm64": { + "packages/vscode/node_modules/@esbuild/openbsd-arm64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", @@ -5602,7 +9298,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/openbsd-x64": { + "packages/vscode/node_modules/@esbuild/openbsd-x64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", @@ -5619,7 +9315,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/sunos-x64": { + "packages/vscode/node_modules/@esbuild/sunos-x64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", @@ -5636,7 +9332,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/win32-arm64": { + "packages/vscode/node_modules/@esbuild/win32-arm64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", @@ -5653,7 +9349,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/win32-ia32": { + "packages/vscode/node_modules/@esbuild/win32-ia32": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", @@ -5670,7 +9366,7 @@ "node": ">=18" } }, - "packages/action/node_modules/@esbuild/win32-x64": { + "packages/vscode/node_modules/@esbuild/win32-x64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", @@ -5687,7 +9383,7 @@ "node": ">=18" } }, - "packages/action/node_modules/esbuild": { + "packages/vscode/node_modules/esbuild": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", @@ -5728,40 +9424,6 @@ "@esbuild/win32-x64": "0.24.2" } }, - "packages/cli": { - "name": "tokenometer", - "version": "0.0.2", - "license": "MIT", - "dependencies": { - "@tokenometer/core": "0.0.2", - "image-size": "^2.0.2" - }, - "bin": { - "tokenometer": "dist/index.js" - }, - "devDependencies": { - "@types/node": "^22.10.5", - "typescript": "^5.7.2", - "vitest": "^3.0.0" - } - }, - "packages/core": { - "name": "@tokenometer/core", - "version": "0.0.2", - "license": "MIT", - "dependencies": { - "@anthropic-ai/sdk": "^0.95.0", - "@google/generative-ai": "^0.24.1", - "@tokenlens/models": "^1.3.0", - "gpt-tokenizer": "^3.4.0", - "tokenlens": "^1.3.1", - "yaml": "^2.8.4" - }, - "devDependencies": { - "typescript": "^5.7.2", - "vitest": "^3.0.0" - } - }, "packages/web": { "name": "@tokenometer/web", "version": "0.0.2", @@ -5771,7 +9433,8 @@ "@google/generative-ai": "^0.21.0", "@tokenometer/core": "0.0.2", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "react-router-dom": "^7.15.0" }, "devDependencies": { "@tailwindcss/vite": "^4.0.0", diff --git a/packages/action/dist/index.cjs b/packages/action/dist/index.cjs index 1b03e6f..093a5f4 100644 --- a/packages/action/dist/index.cjs +++ b/packages/action/dist/index.cjs @@ -1909,10 +1909,10 @@ var require_Dicer = __commonJS({ var require_decodeText = __commonJS({ "../../node_modules/@fastify/busboy/lib/utils/decodeText.js"(exports2, module2) { "use strict"; - var utf8Decoder = new TextDecoder("utf-8"); + var utf8Decoder2 = new TextDecoder("utf-8"); var textDecoders = /* @__PURE__ */ new Map([ - ["utf-8", utf8Decoder], - ["utf8", utf8Decoder] + ["utf-8", utf8Decoder2], + ["utf8", utf8Decoder2] ]); function getDecoder(charset) { let lc; @@ -14485,7 +14485,7 @@ var require_util4 = __commonJS({ if (encoding === "failure") { encoding = "UTF-8"; } - return decode3(bytes, encoding); + return decode4(bytes, encoding); } case "ArrayBuffer": { const sequence = combineByteSequences(bytes); @@ -14502,7 +14502,7 @@ var require_util4 = __commonJS({ } } } - function decode3(ioQueue, encoding) { + function decode4(ioQueue, encoding) { const bytes = combineByteSequences(ioQueue); const BOMEncoding = BOMSniffing(bytes); let slice = 0; @@ -31379,14 +31379,14 @@ var require_base64 = __commonJS({ ); exports2.Coder = Coder; var stdCoder = new Coder(); - function encode4(data) { + function encode5(data) { return stdCoder.encode(data); } - exports2.encode = encode4; - function decode3(s) { + exports2.encode = encode5; + function decode4(s) { return stdCoder.decode(s); } - exports2.decode = decode3; + exports2.decode = decode4; var URLSafeCoder = ( /** @class */ function(_super) { @@ -32561,6 +32561,474 @@ var googleModels = { }; var google_default = googleModels; +// ../../node_modules/@tokenlens/models/dist/providers/mistral.js +var mistralModels = { + id: "mistral", + name: "Mistral", + npm: "@ai-sdk/mistral", + doc: "https://docs.mistral.ai/getting-started/models/", + env: ["MISTRAL_API_KEY"], + models: { + "pixtral-large-latest": { + id: "pixtral-large-latest", + name: "Pixtral Large", + attachment: true, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-11", + release_date: "2024-11-01", + last_updated: "2024-11-04", + modalities: { + input: ["text", "image"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 2, + output: 6 + }, + limit: { + context: 128e3, + output: 128e3 + } + }, + "open-mixtral-8x7b": { + id: "open-mixtral-8x7b", + name: "Mixtral 8x7B", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-01", + release_date: "2023-12-11", + last_updated: "2023-12-11", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.7, + output: 0.7 + }, + limit: { + context: 32e3, + output: 32e3 + } + }, + "codestral-latest": { + id: "codestral-latest", + name: "Codestral", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-10", + release_date: "2024-05-29", + last_updated: "2025-01-04", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.3, + output: 0.9 + }, + limit: { + context: 256e3, + output: 4096 + } + }, + "devstral-small-2505": { + id: "devstral-small-2505", + name: "Devstral Small 2505", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2025-05", + release_date: "2025-05-07", + last_updated: "2025-05-07", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.1, + output: 0.3 + }, + limit: { + context: 128e3, + output: 128e3 + } + }, + "devstral-medium-2507": { + id: "devstral-medium-2507", + name: "Devstral Medium", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2025-05", + release_date: "2025-07-10", + last_updated: "2025-07-10", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.4, + output: 2 + }, + limit: { + context: 128e3, + output: 128e3 + } + }, + "mistral-medium-2505": { + id: "mistral-medium-2505", + name: "Mistral Medium 3", + attachment: true, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2025-05", + release_date: "2025-05-07", + last_updated: "2025-05-07", + modalities: { + input: ["text", "image"], + output: ["text"] + }, + open_weights: false, + cost: { + input: 0.4, + output: 2 + }, + limit: { + context: 131072, + output: 131072 + } + }, + "devstral-small-2507": { + id: "devstral-small-2507", + name: "Devstral Small", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2025-05", + release_date: "2025-07-10", + last_updated: "2025-07-10", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.1, + output: 0.3 + }, + limit: { + context: 128e3, + output: 128e3 + } + }, + "ministral-8b-latest": { + id: "ministral-8b-latest", + name: "Ministral 8B", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-10", + release_date: "2024-10-01", + last_updated: "2024-10-04", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.1, + output: 0.1 + }, + limit: { + context: 128e3, + output: 128e3 + } + }, + "magistral-medium-latest": { + id: "magistral-medium-latest", + name: "Magistral Medium", + attachment: false, + reasoning: true, + temperature: true, + tool_call: true, + knowledge: "2025-06", + release_date: "2025-03-17", + last_updated: "2025-03-20", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 2, + output: 5 + }, + limit: { + context: 128e3, + output: 16384 + } + }, + "pixtral-12b": { + id: "pixtral-12b", + name: "Pixtral 12B", + attachment: true, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-09", + release_date: "2024-09-01", + last_updated: "2024-09-01", + modalities: { + input: ["text", "image"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.15, + output: 0.15 + }, + limit: { + context: 128e3, + output: 128e3 + } + }, + "open-mistral-7b": { + id: "open-mistral-7b", + name: "Mistral 7B", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2023-12", + release_date: "2023-09-27", + last_updated: "2023-09-27", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.25, + output: 0.25 + }, + limit: { + context: 8e3, + output: 8e3 + } + }, + "magistral-small": { + id: "magistral-small", + name: "Magistral Small", + attachment: false, + reasoning: true, + temperature: true, + tool_call: true, + knowledge: "2025-06", + release_date: "2025-03-17", + last_updated: "2025-03-17", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.5, + output: 1.5 + }, + limit: { + context: 128e3, + output: 128e3 + } + }, + "mistral-medium-2508": { + id: "mistral-medium-2508", + name: "Mistral Medium 3.1", + attachment: true, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2025-05", + release_date: "2025-08-12", + last_updated: "2025-08-12", + modalities: { + input: ["text", "image"], + output: ["text"] + }, + open_weights: false, + cost: { + input: 0.4, + output: 2 + }, + limit: { + context: 262144, + output: 262144 + } + }, + "open-mixtral-8x22b": { + id: "open-mixtral-8x22b", + name: "Mixtral 8x22B", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-04", + release_date: "2024-04-17", + last_updated: "2024-04-17", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 2, + output: 6 + }, + limit: { + context: 64e3, + output: 64e3 + } + }, + "mistral-medium-latest": { + id: "mistral-medium-latest", + name: "Mistral Medium", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2025-05", + release_date: "2025-05-07", + last_updated: "2025-05-10", + modalities: { + input: ["text", "image"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.4, + output: 2 + }, + limit: { + context: 128e3, + output: 16384 + } + }, + "mistral-small-latest": { + id: "mistral-small-latest", + name: "Mistral Small", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2025-03", + release_date: "2024-09-01", + last_updated: "2024-09-04", + modalities: { + input: ["text", "image"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.1, + output: 0.3 + }, + limit: { + context: 128e3, + output: 16384 + } + }, + "mistral-large-latest": { + id: "mistral-large-latest", + name: "Mistral Large", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-11", + release_date: "2024-11-01", + last_updated: "2024-11-04", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 2, + output: 6 + }, + limit: { + context: 131072, + output: 16384 + } + }, + "mistral-nemo": { + id: "mistral-nemo", + name: "Mistral Nemo", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-07", + release_date: "2024-07-01", + last_updated: "2024-07-01", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.15, + output: 0.15 + }, + limit: { + context: 128e3, + output: 128e3 + } + }, + "ministral-3b-latest": { + id: "ministral-3b-latest", + name: "Ministral 3B", + attachment: false, + reasoning: false, + temperature: true, + tool_call: true, + knowledge: "2024-10", + release_date: "2024-10-01", + last_updated: "2024-10-04", + modalities: { + input: ["text"], + output: ["text"] + }, + open_weights: true, + cost: { + input: 0.04, + output: 0.04 + }, + limit: { + context: 128e3, + output: 128e3 + } + } + } +}; +var mistral_default = mistralModels; + // ../../node_modules/@tokenlens/models/dist/providers/openai.js var openaiModels = { id: "openai", @@ -41291,474 +41759,6 @@ var lmstudioModels = { }; var lmstudio_default = lmstudioModels; -// ../../node_modules/@tokenlens/models/dist/providers/mistral.js -var mistralModels = { - id: "mistral", - name: "Mistral", - npm: "@ai-sdk/mistral", - doc: "https://docs.mistral.ai/getting-started/models/", - env: ["MISTRAL_API_KEY"], - models: { - "pixtral-large-latest": { - id: "pixtral-large-latest", - name: "Pixtral Large", - attachment: true, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-11", - release_date: "2024-11-01", - last_updated: "2024-11-04", - modalities: { - input: ["text", "image"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 2, - output: 6 - }, - limit: { - context: 128e3, - output: 128e3 - } - }, - "open-mixtral-8x7b": { - id: "open-mixtral-8x7b", - name: "Mixtral 8x7B", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-01", - release_date: "2023-12-11", - last_updated: "2023-12-11", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.7, - output: 0.7 - }, - limit: { - context: 32e3, - output: 32e3 - } - }, - "codestral-latest": { - id: "codestral-latest", - name: "Codestral", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-10", - release_date: "2024-05-29", - last_updated: "2025-01-04", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.3, - output: 0.9 - }, - limit: { - context: 256e3, - output: 4096 - } - }, - "devstral-small-2505": { - id: "devstral-small-2505", - name: "Devstral Small 2505", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2025-05", - release_date: "2025-05-07", - last_updated: "2025-05-07", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.1, - output: 0.3 - }, - limit: { - context: 128e3, - output: 128e3 - } - }, - "devstral-medium-2507": { - id: "devstral-medium-2507", - name: "Devstral Medium", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2025-05", - release_date: "2025-07-10", - last_updated: "2025-07-10", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.4, - output: 2 - }, - limit: { - context: 128e3, - output: 128e3 - } - }, - "mistral-medium-2505": { - id: "mistral-medium-2505", - name: "Mistral Medium 3", - attachment: true, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2025-05", - release_date: "2025-05-07", - last_updated: "2025-05-07", - modalities: { - input: ["text", "image"], - output: ["text"] - }, - open_weights: false, - cost: { - input: 0.4, - output: 2 - }, - limit: { - context: 131072, - output: 131072 - } - }, - "devstral-small-2507": { - id: "devstral-small-2507", - name: "Devstral Small", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2025-05", - release_date: "2025-07-10", - last_updated: "2025-07-10", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.1, - output: 0.3 - }, - limit: { - context: 128e3, - output: 128e3 - } - }, - "ministral-8b-latest": { - id: "ministral-8b-latest", - name: "Ministral 8B", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-10", - release_date: "2024-10-01", - last_updated: "2024-10-04", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.1, - output: 0.1 - }, - limit: { - context: 128e3, - output: 128e3 - } - }, - "magistral-medium-latest": { - id: "magistral-medium-latest", - name: "Magistral Medium", - attachment: false, - reasoning: true, - temperature: true, - tool_call: true, - knowledge: "2025-06", - release_date: "2025-03-17", - last_updated: "2025-03-20", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 2, - output: 5 - }, - limit: { - context: 128e3, - output: 16384 - } - }, - "pixtral-12b": { - id: "pixtral-12b", - name: "Pixtral 12B", - attachment: true, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-09", - release_date: "2024-09-01", - last_updated: "2024-09-01", - modalities: { - input: ["text", "image"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.15, - output: 0.15 - }, - limit: { - context: 128e3, - output: 128e3 - } - }, - "open-mistral-7b": { - id: "open-mistral-7b", - name: "Mistral 7B", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2023-12", - release_date: "2023-09-27", - last_updated: "2023-09-27", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.25, - output: 0.25 - }, - limit: { - context: 8e3, - output: 8e3 - } - }, - "magistral-small": { - id: "magistral-small", - name: "Magistral Small", - attachment: false, - reasoning: true, - temperature: true, - tool_call: true, - knowledge: "2025-06", - release_date: "2025-03-17", - last_updated: "2025-03-17", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.5, - output: 1.5 - }, - limit: { - context: 128e3, - output: 128e3 - } - }, - "mistral-medium-2508": { - id: "mistral-medium-2508", - name: "Mistral Medium 3.1", - attachment: true, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2025-05", - release_date: "2025-08-12", - last_updated: "2025-08-12", - modalities: { - input: ["text", "image"], - output: ["text"] - }, - open_weights: false, - cost: { - input: 0.4, - output: 2 - }, - limit: { - context: 262144, - output: 262144 - } - }, - "open-mixtral-8x22b": { - id: "open-mixtral-8x22b", - name: "Mixtral 8x22B", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-04", - release_date: "2024-04-17", - last_updated: "2024-04-17", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 2, - output: 6 - }, - limit: { - context: 64e3, - output: 64e3 - } - }, - "mistral-medium-latest": { - id: "mistral-medium-latest", - name: "Mistral Medium", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2025-05", - release_date: "2025-05-07", - last_updated: "2025-05-10", - modalities: { - input: ["text", "image"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.4, - output: 2 - }, - limit: { - context: 128e3, - output: 16384 - } - }, - "mistral-small-latest": { - id: "mistral-small-latest", - name: "Mistral Small", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2025-03", - release_date: "2024-09-01", - last_updated: "2024-09-04", - modalities: { - input: ["text", "image"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.1, - output: 0.3 - }, - limit: { - context: 128e3, - output: 16384 - } - }, - "mistral-large-latest": { - id: "mistral-large-latest", - name: "Mistral Large", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-11", - release_date: "2024-11-01", - last_updated: "2024-11-04", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 2, - output: 6 - }, - limit: { - context: 131072, - output: 16384 - } - }, - "mistral-nemo": { - id: "mistral-nemo", - name: "Mistral Nemo", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-07", - release_date: "2024-07-01", - last_updated: "2024-07-01", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.15, - output: 0.15 - }, - limit: { - context: 128e3, - output: 128e3 - } - }, - "ministral-3b-latest": { - id: "ministral-3b-latest", - name: "Ministral 3B", - attachment: false, - reasoning: false, - temperature: true, - tool_call: true, - knowledge: "2024-10", - release_date: "2024-10-01", - last_updated: "2024-10-04", - modalities: { - input: ["text"], - output: ["text"] - }, - open_weights: true, - cost: { - input: 0.04, - output: 0.04 - }, - limit: { - context: 128e3, - output: 128e3 - } - } - } -}; -var mistral_default = mistralModels; - // ../../node_modules/@tokenlens/models/dist/providers/modelscope.js var modelscopeModels = { id: "modelscope", @@ -49445,9 +49445,10 @@ function getContext2(args) { var CATALOG = { anthropic: anthropic_default, google: google_default, + mistral: mistral_default, openai: openai_default }; -var PROVIDERS = ["anthropic", "google", "openai"]; +var PROVIDERS = ["anthropic", "google", "mistral", "openai"]; var LOCAL_OVERRIDES = { "claude-haiku-4-5": { rate: { cachedInputPer1k: 1e-4, inputPer1k: 1e-3, outputPer1k: 5e-3 }, @@ -49478,6 +49479,26 @@ var LOCAL_OVERRIDES = { pricingSource: "local", provider: "anthropic" } + }, + "command-r": { + rate: { inputPer1k: 15e-5, outputPer1k: 6e-4 }, + descriptor: { + contextWindow: 128e3, + id: "command-r", + maxOutputTokens: 4096, + pricingSource: "local", + provider: "cohere" + } + }, + "command-r-plus": { + rate: { inputPer1k: 25e-4, outputPer1k: 0.01 }, + descriptor: { + contextWindow: 128e3, + id: "command-r-plus", + maxOutputTokens: 4096, + pricingSource: "local", + provider: "cohere" + } } }; var PREVIEW_ID_PATTERN = /(^|-)preview(-|$)/i; @@ -58716,6 +58737,14 @@ var GptEncoding = class _GptEncoding { var api = GptEncoding.getEncodingApi("o200k_base", () => o200k_base_default); var { decode, decodeAsyncGenerator, decodeGenerator, encode: encode2, encodeGenerator, isWithinTokenLimit, countTokens, encodeChat, encodeChatGenerator, vocabularySize, setMergeCacheSize, clearMergeCache, estimateCost: estimateCost2 } = api; +// ../core/dist/tokenize-cohere.js +var COHERE_HEURISTIC_CHARS_PER_TOKEN = 4; +var cohereCount = (text) => ({ + approximate: true, + tokens: Math.ceil(text.length / COHERE_HEURISTIC_CHARS_PER_TOKEN), + tokenizer: "heuristic" +}); + // ../../node_modules/gpt-tokenizer/esm/bpeRanks/cl100k_base.js var c02 = ["!", '"', "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", [161], [162], [163], [164], [165], [166], [167], [168], [169], [170], [171], [172], [174], [175], [176], [177], [178], [179], [180], [181], [182], [183], [184], [185], [186], [187], [188], [189], [190], [191], [192], [193], [194], [195], [196], [197], [198], [199], [200], [201], [202], [203], [204], [205], [206], [207], [208], [209], [210], [211], [212], [213], [214], [215], [216], [217], [218], [219], [220], [221], [222], [223], [224], [225], [226], [227], [228], [229], [230], [231], [232], [233], [234], [235], [236], [237], [238], [239], [240], [241], [242], [243], [244], [245], [246], [247], [248], [249], [250], [251], [252], [253], [254], [255], "\0", "", "", "", "", "", "", "\x07", "\b", " ", "\n", "\v", "\f", "\r", "", "", "", "", "", "", "", "", "", "", "", "", "", "\x1B", "", "", "", "", " ", "\x7F", [128], [129], [130], [131], [132], [133], [134], [135], [136], [137], [138], [139], [140], [141], [142], [143], [144], [145], [146], [147], [148], [149], [150], [151], [152], [153], [154], [155], [156], [157], [158], [159], [160], [173], " ", " ", "in", " t", " ", "er", " ", "on", " a", "re", "at", "st", "en", "or", " th", "\n\n", " c", "le", " s", "it", "an", "ar", "al", " the", ";\n", " p", " f", "ou", " =", "is", " ", "ing", "es", " w", "ion", "ed", "ic", " b", " d", "et", " m", " o", " ", "ro", "as", "el", "ct", "nd", " in", " h", "ent", "id", " n", "am", " ", " to", " re", "--", " {", " of", "om", ");\n", "im", "\r\n", " (", "il", "//", " and", "ur", "se", " l", "ex", " S", "ad", ' "', "ch", "ut", "if", "**", " }", "em", "ol", " ", "th", ")\n", " {\n", " g", "ig", "iv", ",\n", "ce", "od", " v", "ate", " T", "ag", "ay", " *", "ot", "us", " C", " st", " I", "un", "ul", "ue", " A", "ow", " '", "ew", " <", "ation", "()", " for", "ab", "ort", "um", "ame", " is", "pe", "tr", "ck", [226, 128], " y", "ist", "----", ".\n\n", "he", " e", "lo", " M", " be", "ers", " on", " con", "ap", "ub", " P", " ", "ass", "int", ">\n", "ly", "urn", " $", ";\n\n", "av", "port", "ir", "->", "nt", "ction", "end", " de", "00", "ith", "out", "turn", "our", " ", "lic", "res", "pt", "==", " this", " wh", " if", " D", "ver", "age", " B", "ht", "ext", '="', " that", "****", " R", " it", "ess", " F", " r", "os", "and", " as", "ect", "ke", "rom", " //", "con", " L", '("', "qu", "lass", " with", "iz", "de", " N", " al", "op", "up", "get", " }\n", "ile", " an", "ata", "ore", "ri", " pro", ";\r\n", " ", "ter", "ain", " W", " E", " com", " return", "art", " H", "ack", "import", "ublic", " or", "est", "ment", " G", "able", " -", "ine", "ill", "ind", "ere", "::", "ity", " +", " tr", "elf", "ight", "('", "orm", "ult", "str", "..", '",', " you", "ype", "pl", " new", " j", " ", " from", " ex", " O", "20", "ld", " [", "oc", ":\n", " se", " le", "--------", ".s", "{\n", "',", "ant", " at", "ase", ".c", " ch", "", "ust", "que", " res", "))", "'s", " k", "ans", "yst", "unction", "********", " i", " us", "pp", "10", "one", "ail", "====", "name", " str", " /", " &", "ach", "div", "ystem", "ell", " have", "err", "ould", "ull", "pon", " J", "_p", " ==", "ign", "St", ".\n", " pl", ");\n\n", "form", "put", "ount", "}\n\n", "dd", "ite", " get", "rr", "ome", [32, 226, 128], "aram", "cc", " */", "ER", "In", "les", "_s", "ong", "ie", " can", " V", "erv", "pr", " un", "row", "ber", " do", "ll", " el", " self", "ated", "ary", " .", "']", "ud", " en", " Th", " ", "te", "_c", "uct", " ab", "ork", ".get", " #", "aw", "ress", "ob", "Name", "201", "app", "['", " all", "ory", "ition", "ance", "ear", " cont", "vent", "ia", " will", "IN", " ", "return", " ', '",\n', "ec", " In", "ph", " |", "_f", " var", "ence", "Id", "ree", "ink", "lect", "ug", "eth", " else", "----------------", "19", "cont", " so", "atic", " lo", "pro", "ton", "ss", "own", "abel", "oint", "ous", "eld", "ST", "The", " ", "RE", '":', "olor", "tp", "eg", "key", "ude", " St", "ound", " ar", '");\n', "ener", "ser", "11", "bject", "essage", "fer", " more", "ations", "ents", " his", " they", ".S", " Y", "use", "ne", "ish", "old", "_d", "io", "ield", " per", "Cont", "ings", "####", " data", " sa", "ef", "fo", " one", "eng", " dis", "AT", " name", " true", "val", "led", ".f", " ne", " end", "32", ".T", "16", "cre", "ark", "log", "Ex", "error", "_id", "urre", "ange", " null", "rray", " my", "pan", "ict", "ator", "View", "List", " return", "\u201D", " pre", " x", "clude", "arg", "15", "ov", ".h", " >", " their", "')", "irst", "ick", "gh", "LE", "OR", " private", "tem", "\r\n\r\n", "user", " )", "com", ".A", '";\n', " id", "read", " who", "_b", '">\n', " time", " man", "ry", "========", "roup", "rop", "public", "vel", "umber", "ble", " which", "****************", " any", " false", "we", " value", " li", '")', "nder", "gr", " no", "param", "25", "fig", ".com", " app", "_l", "ions", ".D", " Ch", " about", " add", " su", " string", "ID", " over", "string", ".l", "ource", "000", "_C", "]\n", " qu", " String", "ca", "SE", " ro", "sh", "ual", "Type", "son", "new", "ern", " ag", "AR", "];\n", "].", " ?", "ical", " des", "uth", "ix", "ays", " type", "'t", "ault", " inter", "var", ".b", " part", ".d", "urrent", "IT", "EN", "30", "enc", "(f", "ra", "value", "cho", "18", "utton", "ose", "14", " !=", "ater", "\xE9", "reate", "oll", "pos", "yle", "ng", "AL", "using", "ames", " {\r\n", "ates", "ely", " work", " em", "inal", " sp", " when", ".set", " ", "):\n", "to", "quire", "indow", "lement", "pect", "ash", "[i", " use", ".F", "pec", " ad", "ove", "ception", "ength", "include", "ader", " ", "atus", "Th", "itle", "rit", "void", "().", "(\n", " off", " other", " &&", "';\n", "ms", " been", " te", "ml", "co", "nc", "13", "ervice", " %", "**\n", "ann", "ade", "\n\n\n\n", "lock", "const", "100", "ponse", " sup", "++", "date", " acc", " had", " bu", "200", " Re", " were", " file", " would", " \u201C", "ven", "iss", " our", "class", "raw", " year", "Data", " val", " some", "fter", "ys", " ///", "round", "view", " pe", " there", " said", "du", "of", "line", "/*", "duct", " her", " ", "Res", " co", " comm", "ise", "min", " \n", "#include", "ethod", ".P", "ute", " ass", "Int", "ask", "loc", " like", "ody", " let", "load", " am", "rol", " gr", "yp", " also", " It", "url", "ific", "ors", "_P", "_n", "igh", " than", "Com", "AN", "UL", "ating", "17", " This", "ref", "_S", " static", "roll", " just", " result", "ian", "idth", " them", "));\n", "der", "reak", "Con", "://", "ule", "...", "arch", "ement", " <<", "50", "ush", "ense", "arr", " into", "cess", "amp", "ied", "ument", " \\", "],", "wo", "als", " what", "anc", "Value", "='", "olum", " pos", "ages", "ayer", " sc", "ues", '")\n', "_T", " list", "(s", " case", "Ch", " ", "////////", "ponent", " z", " kn", "let", "DE", "red", " fe", " },\n", " ,", "(t", " first", "');\n", "word", " import", " act", " char", "CT", " Tr", "ople", "={", " f", "24", "ient", "cent", ".j", "lection", "))\n", " only", " print", "mer", ".W", "ock", " --", "Text", " op", "ank", " its", " back", '["', " need", " cl", " sub", " la", "((", '."', "Object", " start", "file", "(self", "ner", "ey", " user", " ent", " Com", "its", " Con", "ouble", "ower", "item", "very", " We", "64", "lick", " Q", "php", "ttp", "':", "ics", " under", " *\n", ".L", ");", "ices", " reg", ")\r\n", " public", "SS", " then", "reat", "ious", ".G", "ek", "irect", "heck", "cript", "ning", " Un", " may", " Wh", "Bo", "Item", "struct", ".st", "ream", "ible", "loat", " org", "und", "sum", "_in", "../", "_M", " how", "rite", "'\n", "To", "40", "ww", " people", "index", ".n", "http", "(m", "ector", " ind", " jav", "],\n", " He", "_st", "ful", "ole", "){\n", " should", "opy", "elp", "ier", "_name", "erson", "ION", "ote", " test", " bet", "rror", "ular", [227, 128], [32, 208], "bs", "ting", " make", "Tr", " after", "arget", "RO", "olumn", "rc", "_re", "define", "22", " right", "right", "day", " long", "[]", "(p", "td", "cond", " Pro", " rem", "ptions", "vid", ".g", " ext", " __", "')\n", "pace", "mp", " min", "stance", "air", "action", "wh", "type", "util", "ait", "\n\n", " she", '"]', "aph", " exp", "erty", " Se", " par", "unc", "ET", " read", "print", " rel", " form", " dr", "Exception", "input", " trans", "########", "order", "By", " aw", "ities", "uff", "play", ".add", " \u2013", " want", " comp", "ments", " ||", "az", "be", " number", " require", " Ex", "60", " col", " key", "ember", " two", " size", " where", "UT", "result", " ", "ough", "orld", "ood", "uch", "ative", "ger", "arent", " /*", " arg", " while", "23", "(this", " rec", " dif", "State", " spec", "ride", "_F", " look", "AM", "ility", "eter", "\u2019t", "\n\n\n", "ayout", "--------------------------------", "ager", " could", " br", "ends", "ures", " know", "ets", " If", " Sh", ".w", "back", " ser", " +=", " fr", "());\n", " hand", "Ind", "ULL", "Im", "();\n\n", " most", " try", " now", "rough", ">\r\n", "ackage", " him", "._", "ify", " break", " );\n", "ren", "#define", "itt", " ap", " c", "(n", " You", ":\n\n", "-m", " every", "ustom", "lient", "ocument", "cription", "Error", "-b", "\u043E", "][", "99", "trans", " point", " std", " fil", "Time", "80", " mod", " ->", " error", "ah", " text", "roller", "lose", "ql", " pol", "><", ".B", "-c", " open", " est", " \n", " next", "IM", "\u0442", "OT", "\xF3", " follow", "content", " ", " includ", "HE", " Res", " href", "\u0438", " car", "ypes", "image", "Un", " bool", "AD", " game", ".Form", "rows", "*/", "velop", ".Drawing", " path", "ision", " each", " Pl", "_type", "Path", "nection", " av", "').", " support", "ENT", "rem", '").', " own", " cor", "count", "miss", "ually", " mem", "std", "ience", "search", '"\n\n', "Form", " sex", "ename", " sign", " et", " ", "','", " App", " those", "off", " err", " system", " best", "code", " same", " di", "uss", " create", "ather", "Array", ".in", "fe", "Service", "UN", "ats", " Z", "alth", " made", "true", "AB", " mark", "rid", "ified", ",\r\n", "yn", "press", " group", " fin", " License", "Field", "eger", " world", "iness", "ty", " process", "(b", " cre", "arn", "ives", " main", "ideo", "36", "_g", "AG", "valid", "img", "PI", " color", " report", " take", "rib", "OM", " day", "Request", " sk", "bers", " s", ".Add", "oot", "Image", " comple", "ollection", " top", " free", "AS", "De", " On", "IG", "90", "eta", "Date", " action", "34", "Over", "itor", " ", "not", " index", "her", "icon", "On", ";\r\n\r\n", "ivity", "mand", ".Windows", "OL", " real", " max", "land", "....", "raph", " build", "leg", "assword", "?\n\n", "\u2026", "ook", "uck", " message", "test", "ivers", "38", " input", " art", " between", "Get", "enter", "ground", "ene", "\xE1", ".length", "Node", "(i", "Class", "for", " \u2014", "ten", "oin", " ke", "ui", " IN", " table", "sub", " Le", " head", " must", "////////////////", ".util", "Context", " order", " mov", "over", " contin", " say", "static", ".Text", " className", "pany", " ter", "head", "rg", " product", "This", ".\u201D", " But", "70", "loy", " double", "sg", " place", ".x", "message", " information", "private", " oper", "ced", "db", '">", "aterial", "iled", " put", "Qu", "\u0440", "ung", "map", " ", " level", "Component", "book", "creen", "_RE", " config", [227, 129], "Or", ".data", " document", '","', "tribute", "ux", "Log", "ference", "post", "_e", " local", "andom", "assert", "Val", "lected", "ina", "atabase", "Add", " content", ".print", "signed", "ric", '."\n\n', " fa", "!\n\n", "-f", "ived", " quest", ".ex", " float", " develop", [208, 190, 208], "Map", "ading", " poss", "UE", "namespace", "_O", " b", ".Get", ">(", "json", "etails", "66", " too", " extends", " None", " fore", "(String", "format", " great", "inter", "cale", "\u0441", "ron", "iving", "Ent", "ency", "xt", "oy", "05", " month", " happ", " super", "bar", "default", "_de", "ords", "ln", "({\n", " Ind", "ases", " title", " context", "08", "oh", "-p", "Em", " met", "Test", " life", "_v", " US", "UI", "ocation", "md", " [\n", " ]", "sw", " incre", "script", "ential", "ways", ".de", " src", " catch", " Americ", "//\n", " ", " pay", "plit", "\u2014", " coun", "obj", ".php", " change", "ething", "'re", "aster", "los", "lation", " \n", "Le", "\xE4", "({", "ready", " No", " position", " old", " book", "abled", "bug", "202", "Hand", "};\n\n", "isplay", "aving", "04", " gover", " version", "System", "nect", "response", "Style", "Up", "angu", " three", "init", "ero", " law", "endif", " base", "email", "(l", "_V", " conf", "ATE", " during", "tes", " console", " Pr", " spe", "ves", "65", "path", "ialog", "dition", "_to", "ards", " against", "etwork", " Ph", "_L", "cur", "imit", "With", " power", "ium", "';\n\n", " wom", "left", "ources", "atri", " Im", " Man", "orth", "${", "88", "quals", "ese", "_size", " iss", "otal", "-g", "ique", "rame", " width", "erg", ")(", "ittle", "TR", " They", "ences", "02", "rl", "ons", " label", ".y", "-t", "update", "anel", "sc", ".to", " project", "\xFC", " element", " success", " \n", ".sh", "ram", "ched", "())\n", " (\n", " date", " tot", "_ST", "All", "ification", " var", " tri", "chem", "my", " big", " Ad", " At", "ots", "num", "Act", " map", "era", "cope", ".$", ",\u201D", " pop", " few", " len", "uid", "eters", "ules", "\xED", "source", "https", " dem", " ear", "################", " match", "ories", "49", "aces", " Cl", " node", "78", "irc", "local", "unity", "};\n", " another", "<<", "ogle", " sit", "ework", "TE", ".I", "NS", "ology", "ought", ".Cont", ">>", " care", "state", " private", " effect", "++)", "_file", "ending", "Line", "For", "ior", " Sc", " fun", ".Size", " else", "])", "start", "vious", " },", "ours", " leg", " service", " since", "iron", "Label", " non", " los", "iction", " full", "acter", "board", "gress", " turn", "ither", "09", ".size", " body", "resh", "eturn", "199", "(_", "yles", "ormal", "pi", " something", "!--", "uint", " produ", " stand", " proble", " available", "mt", " Bl", " ...", " block", "Input", " keep", "Count", "open", " ['", " throw", "uilder", "Action", " things", "True", " url", " Bo", "printf", " red", "js", ".create", " Or", "Status", "Instance", " control", " come", " custom", "location", "07", "model", " \r\n", " source", " eas", ".out", "]\n\n", "oney", " await", " partic", "AP", "ublish", "odes", "_pro", "ply", "riter", " prov", " mill", "HT", "])\n", " chang", " ask", " ", " output", " email", "68", ".push", " }\r\n\r\n", "ination", "47", "atrix", "Table", "uccess", "]);\n", " ", " disc", "([", " business", "height", ".html", "ta", "field", " required", "_R", " govern", "}\r\n\r\n", "lex", "500", ".,", " Set", "urch", "///", "ts", "af", " might", "istory", "Str", " never", "Response", "arse", "ada", " How", " *)", " ;", " hard", "Ad", " intern", "used", "(data", "mod", "annel", " np", "ugg", " />\n", " called", "body", " cho", "(r", "_set", "ird", " >=", " };\n", " options", " Gener", " height", "Point", "You", "ety", "Click", " small", " ide", " access", "anguage", " protected", " job", " There", "Def", " address", " uint", "Not", "oo", "aps", "", " ", '"))', "Content", "_W", "plement", " won", " video", "adi", "point", "%%", "03", " gl", "erved", "viron", "IF", "uted", [227, 131], "'m", " cert", " prof", " cell", "ari", " player", "ais", " cost", " hum", "(R", " offic", "ks", ".text", "atures", " total", " */\n\n", "ope", " stat", "UM", " load", "ights", " clear", "uro", " techn", "upport", "IR", " row", " seem", " q", " short", " Not", "ipp", "Group", "section", "max", "irl", " override", " company", " done", '");\r\n', " gre", ".Re", " belie", "rist", " health", "ANT", "()\n\n", " Be", ".value", " Gr", "ottom", " args", "PT", "status", "func", "uments", "-h", "Number", ":\r\n", " Log", "erver", " ),\n", "ament", " obj", "inc", " children", "icy", "IZ", "ands", "ably", " distrib", " cur", "erial", " days", "reated", "rect", "-l", "irm", "idden", "omb", " initial", ".js", [32, 226], "Query", " online", "imal", ".con", "au", "Url", "control", "irection", " instance", "ORT", " Fr", "where", " javax", " organ", "apter", " reason", "options", "59", " Mar", "(a", " within", ".\u201D\n\n", "ODE", "_DE", "admin", "ended", " design", " Data", "une", " File", "root", " cent", " arr", "_add", "len", "page", ",'", "_str", " bro", "ability", "outh", "58", "/c", "pose", "irtual", "earch", "_url", "argin", "Http", " school", "ava", " consider", ".label", " Array", "42", "web", "opt", ".println", "ulation", " func", "PL", ' "\\', " Text", "actory", "(function", "null", " eng", "down", " include", " En", " Dr", " db", "!!", "side", " init", "quired", " She", "Column", "react", " ann", " stop", " later", " That", "ention", "df", "UG", "ILE", " client", "raft", "ffer", "POST", "elper", " love", "quote", "oud", " json", " able", " men", "AX", " Copyright", "\xF6", "avig", "req", "Client", "});\n", ".Com", "erc", "ilt", "pecial", "_com", "room", ".Name", " give", "amb", "ike", " condition", "client", "ators", ':"', " copy", "uture", "iversity", "ernal", "{{", " Can", "ounc", "do", " occ", " appro", "thers", "ze", " either", " Fl", " important", " lead", "attr", "ART", "Equal", " da", "etch", "entity", " family", "adding", " option", " exist", "ica", " Object", "69", "'ve", "vers", "itional", "67", "output", " True", " OF", "_time", " offer", " });\n\n", "HER", "egin", '""', " water", " che", " My", "ored", " step", "ances", "CK", "AY", [224, 184], "struction", "(C", "300", "ouch", "Stream", "active", "ama", "Entity", "product", "(){\n", " government", " ID", "ajor", "And", " display", "\u043B", " times", " four", " far", " present", " NS", " \\\n", "uest", " bas", "echo", "child", "ifier", "Handler", " lib", "Property", "translation", " room", " once", " []", "center", "================================", " results", " continue", " talk", "_get", " grow", ".sw", "eb", " Public", "OP", "ecute", "ols", " **", '");\n\n', " mass", "ured", ".class", "omic", " mean", "ips", " aut", ");\r\n\r\n", " until", " market", " area", "uit", " length", " With", "structor", "event", '"><', " Sp", "IV", " mus", "iff", " kind", "author", "ounds", "mb", "_key", "41", "width", "pository", " light", "uk", "Row", "ohn", "alf", "vironment", "apper", "ollections", " side", "_info", " example", "imary", " wr", " camp", "cribe", "255", '"/', " miss", "way", " based", " plan", "Vis", "omain", "unk", " away", "UP", "", " den", "obile", "change", " \n", "ici", "na", " Form", " sort", "Select", "pare", " thought", "_con", " task", "ocus", " DE", " Min", " opt", " break", "umer", "KE", "then", " det", " Test", "ports", " review", "('/", "move", " switch", "ERT", "patch", "annot", [227, 130], " above", "itive", "56", " question", " Qu", "\u3002\n\n", "gle", " word", " provide", " Return", " research", "\xE3o", "ustr", " publish", "chema", "}}", " CON", "-in", "allback", " cover", "\\\\", "color", " IS", " whether", "imate", "isc", "Bar", " div", "Be", "ourn", " having", "lem", "player", "abs", "amera", "ney", " exc", "gether", "plied", "ao", "[$", " ++", "ipe", "show", "/d", "[:", "agement", "lev", "_ID", "97", "rary", "ades", "_se", "ause", " employ", " */\r\n", " fre", " '@", " complet", " large", "ral", "\\x", " fac", ">", " face", "CTION", " save", " typ", "dev", '("#', "AGE", "container", "edit", "QL", " items", " social", "ien", " React", ").\n\n", " mar", " redu", " RE", ".put", " major", "Cell", "next", " expected", " yet", " indiv", "tributes", "atis", "amed", " food", "Source", "(string", " +\n", "ites", "dr", " members", " comb", "items", " Per", "TH", "=True", " bar", "_SE", "comm", "(w", ")\n\n\n", " send", " inc", "unsigned", "FA", " params", "apping", "ros", "ugin", "fa", " connection", " };\n\n", " become", "Mode", " ev", " diff", " United", "Height", "fully", "images", " makes", " global", " contact", "':\n", " abs", [208, 176, 208], "float", " except", " Pol", "Child", "typ", " certain", "i\xF3n", "OUT", " impro", "iles", " -->\n", " Part", "values", "oss", "/**", "ilit", " Event", "curity", "ster", " character", "198", " news", ' ",', " device", "cel", "login", "heet", "Default", '@"', " ", "click", "(value", " Ab", " previous", "ERROR", "ocal", " material", " below", " Christ", " media", "cover", " UI", " fail", " black", " component", " American", " added", " buy", "stit", " came", " delete", "property", "oding", " card", "rops", " https", " root", " handle", "CC", "Back", "emplate", " getting", "_by", "mail", "_sh", ".assert", " Dec", "(true", " comput", " claim", "'=>", " Sub", " air", "ops", "nav", "ements", "(id", " enter", "anged", "End", " location", " night", " doing", " Red", "lin", "}\n\n\n", "vider", " pick", " watch", "essages", " human", " dam", "pend", "dir", " tax", " girl", "reet", " box", " strong", "(v", "rel", " interface", " msg", "fect", "_at", " house", " track", "');\n\n", "je", " John", "istr", "(S", "ube", " ce", "itted", "VER", "*)", "parent", " application", "any", ".swing", " pack", "\\u", " pract", " section", "ctx", " unsigned", ".Point", " One", "\u0131", "iple", "aid", "\u0443", "Vector", "byte", " wait", " \xE0", "\xE5", " together", " throws", "FO", "'))", "host", "ising", ".view", " terms", "framework", "-r", " apply", " session", "Options", "uggest", " others", "witter", " fund", "Init", "__(", "ensor", "GET", " several", "ii", "[j", "IO", " template", "Position", " econ", "achine", " il", ".spring", "main", "elt", "iment", "Rec", "mm", " University", "ursor", " ", "GL", "icture", "ithub", "cer", "cast", "From", "ales", " subject", "password", "ny", " esc", ".write", "\uFF0C", "What", ".H", " history", " Fe", " individual", "unit", " -->", " du", "IST", " users", "fs", "false", "unt", "Title", " mot", " future", "ached", " started", " mode", " '<", "_array", " ax", "'];\n", "ires", "There", "ught", "tml", "posed", "icult", " took", " games", " }}", " ?>\n", " products", "Is", " bad", " Des", ".path", "'\n\n", " Post", "avel", "(:", "150", " needs", " known", "Fl", " exec", " seen", "51", "ume", " border", " live", "temp", "Per", " variable", "iet", " Def", " ge", "eme", "_back", "first", " provided", "////////////////////////////////", " filename", " hope", "uly", "auto", "find", "_string", "btn", "itude", "Attribute", " young", ".txt", " website", " Prop", " ey", ">();\n", "ional", "ARR", "ictionary", "urther", ".", "tx", " pur", "uel", "ymbol", "uation", "anger", " background", "ecess", "efined", "........", " description", " represent", '"));\n', "pression", "rowser", " series", "wards", "52", "($_", "aise", " hot", "acity", "ries", "actions", "Create", "adio", "amples", " original", "ensive", "font", "stream", [239, 187, 191, 117, 115, 105, 110, 103], ".springframework", "001", "server", " bill", "ACK", "ilename", " frame", " =\n", "Edit", "adius", " draw", "anks", " deter", " comes", "_int", " foreach", "angle", " elect", "pected", "Header", "istration", "False", " Game", " filter", "Activity", " larg", "inition", ' "<', "256", "ised", " remove", " Trans", "met", "see", "Format", "Command", " EX", "None", " front", "ASE", " Rec", "oundation", " vo", "96", '=\\"', "(*", "Change", ".Write", "group", "ients", "uy", "****************************************************************", " dig", "hr", "(-", " gen", "number", "vec", "urope", "entry", "LL", " ste", "Valid", "'],", "_param", " selected", " according", " Dis", " util", "Buffer", "_error", " associ", "_SIZE", " wor", " printf", "rag", "\xA0", "DD", " Val", " activ", "Eng", "etime", " virtual", "aign", "aur", " Pres", " Exception", " anything", " Off", " hours", " war", "Args", "aging", " models", " Time", "Ob", "ams", "joy", " early", ".read", "86", " center", " Initial", " language", "length", "xy", " sn", " inf", "Post", " ago", " easy", "_code", " ANY", "_ch", " download", "(T", "aved", "\u2013", " students", " fig", "light", "xx", " buffer", " Dep", " Math", "ITH", " vari", " due", "Factory", " por", " ep", "otype", " cannot", " white", "\r\n', ".annot", " collection", "'.", " similar", " taken", '("%', "Order", "']\n", "-md", " TH", "aced", " isn", "/j", " son", "graph", " Integer", " necess", "reen", " um", " \\<", " moment", " bring", " indic", "ysis", "Level", "verse", "urrenc", "_test", " entire", "Down", " }\n\n\n", "(result", " Read", "\xE8", "Mod", " trying", '"),\n', " member", " Cor", "ODO", "-control", "untime", " Sim", "Dialog", "plot", "_on", " phys", "}/", " namespace", " \r\n", "acc", "Player", "ARE", "89", " foot", " board", "part", " sus", "wise", " Mc", " push", "ATA", " please", "ried", "weet", "bit", "ided", "VE", " Sw", "UB", " types", "edia", " clos", "acebook", "When", " edit", "igger", " energ", "Container", " phot", " Count", " Europe", ".Is", " Russ", "peed", " Str", " py", " cult", " defined", "ccount", " obt", ".Location", " thread", "ille", " instead", "strong", " Sec", "URE", " idea", ".se", "emy", "selected", "Connection", "acing", "thread", ".next", " coll", " film", "istic", " compet", " conn", "though", " compan", "ocket", " teach", "=(", " phone", " active", "79", "delete", "101", "tries", " mo", " death", "});\n\n", "ocol", "Widget", " article", "rodu", "andid", "\u044B", " Cr", "ka", "():", "lood", " \n", " almost", " sell", "ervlet", "rip", "Unit", " applic", " connect", " feature", " via", "'),", " lim", " ", " Gu", "Engine", " ens", " environment", "block", "HERE", "NULL", "gy", "tag", ")).", "exp", " compl", " install", " complete", "queue", "atural", " general", "thon", " asked", "ores", "(res", " reserved", "SP", " \u2026", "\u0142", " signific", "Off", " ", " Ag", " Just", " Error", " infl", "adata", " icon", "asks", "''", "_LO", "?.", "account", " (*", "')\n\n", "rap", "_var", " FOR", " party", " Your", "cat", "stry", ".new", "boot", " Nov", " vector", " normal", " further", "Repository", "800", " database", "attle", " music", " speed", " doc", "process", "IGHT", ".parse", " taking", " viol", "ceed", " After", " forward", " crit", '"/>\n', "rot", " failed", "efore", " concern", "oe", "ba", " sender", " term", "has", '="#', " potential", "Num", " published", ".close", " Image", "straint", "UD", " Ob", " probably", "lim", '":\n', "olume", " consum", "76", "ague", "ensions", " investig", "-year", "');", "-sm", " enjoy", "orig", "ering", "cp", "leased", "plements", " returns", "pat", "BO", " House", ".Label", " weight", "ighb", " conditions", " exception", "description", " trad", "-to", " {}", " module", "END", ".ap", ".props", " constructor", "aves", " favor", " Now", ";i", " Main", "_k", "eries", "\u2019ll", "transform", "imestamp", "Pre", " mer", ".res", "stant", "Location", "_NAME", " loss", " \n\n", "net", " engine", "Block", " issues", " parse", " Bar", " stay", " JSON", " dom", "airs", "wner", " lower", '",\r\n', " Dem", "ufact", " ps", " perfect", "RL", " educ", "ls", "emory", "ARRANT", "uge", " exact", ".key", "alled", "ech", "ief", "\\/", "oke", " former", "alloc", " six", "ida", " margin", " heart", "ald", "pack", ".getElementById", " WARRANT", " rather", " building", "erman", "lice", " questions", "izes", "lege", "irectory", " je", " cas", "props", "utf", " security", " however", "weight", " inside", " president", "Char", " WITH", ".map", " graph", " tag", "_status", " attempt", "opp", "uses", " const", " round", ",$", " friends", "Email", "?>", "Resource", "KEY", "osp", ".query", " North", "ables", "istrib", "_class", "ello", "That", "\u043A", "pecially", " President", " campaign", " alt", "area", " chall", " opport", ".Con", " energy", "like", ".string", "ington", ")*", "yy", " profession", "irth", " seg", [230, 156], " hor", "iers", "can", " behind", "Product", "fg", " Sk", ".jpg", "?:", "];\n\n", " callback", " Http", "\u044C", "long", "MS", "ATH", " raise", " wanted", "rown", "utor", "lt", "]=", "eline", "MA", " separ", "cs", "semb", "Dis", "bserv", " Will", " policy", " third", "phone", " bed", "/g", ".__", " Inc", "izing", ".remove", "instance", ".type", " serv", "Each", " har", " Message", "(key", "SELECT", "Pos", "));\r\n", " recomm", " training", " Ent", " Char", "icht", "(file", " prior", "Game", " exit", "Params", ".core", "PC", "nes", "anced", "(request", "Password", "}>\n", " mag", " release", " shall", "udent", " South", "ando", ":'", ".TabIndex", "sk", "anner", "isset", " outside", "ledge", [32, 229], " Rob", " imm", "!\n", " Web", "Des", "BC", "ancial", "Route", "Dec", "ferences", " purch", " Model", "ctor", "gn", "_start", "_un", ".*", "ises", " ground", " unique", " beaut", '{"', " pour", " Oct", " tree", "sets", "_res", "')->", "_reg", '("\\', " byte", "Bl", " dating", " matter", " Rem", " '../", " Aug", " La", " $(", "ournal", "111", "iam", " shows", "write", " ball", " simply", " fast", " memory", "ASS", " Of", "oved", "ante", "aul", "istry", ")));\n", " fit", "_", '")\n\n', "ox", "application", " ]\n", "\n\n\n\n\n\n", "180", " soon", "ctions", "inger", " join", " Pe", [32, 235], " las", ".E", "css", "/or", " Start", " TO", " subs", "conn", "components", "DEBUG", "quare", "Function", "endar", ".index", " fill", "\u0119", " choose", "how", " America", "assets", "------------", " Value", " office", " veh", " transform", " Art", " inde", " fn", " implements", "ango", "plete", '+"', "tmp", "amily", " hash", "missions", "EST", "gt", "Provider", " ", " flag", " particip", "den", " Returns", " note", "\xFCr", "pm", "ideos", " specified", " EN", "ester", "olid", " upon", "(std", " v", " '\\", "uz", " vert", " vict", " self", ' "$', "85", ".k", " groups", "github", "lang", " mut", "TO", " ve", " Please", ";\n\n\n", "access", ' {"', "rea", " risk", "icker", "oggle", " while", "ANG", ".send", "72", " woman", " gets", " ign", " Id", "_log", "ONE", " evid", " Har", "_sub", " endl", " included", "());\n\n", " Ap", "igr", " sem", " Black", "doc", "_table", " ", "-up", " cause", " ..", " van", "_dict", " focus", "IND", "CESS", ".Log", " multiple", "ido", " regard", "-M", "andler", "ourse", " deg", ".U", " addition", " various", " receive", "\u0435\u043D", " HT", "Obj", "DF", " increase", " Open", "];", " commit", "?\n", "ategories", "atory", "ship", " Mich", " html", "romise", " leave", " strateg", "aven", " Console", "known", "-n", "_LE", ".component", " bre", "Session", "iance", " align", "typedef", "_result", " WHERE", ".split", " reading", "FAULT", " clo", " notice", "_pr", "arter", " lock", " standard", "etic", "ellow", " padding", " His", " states", "_cast", "(P", "aa", " internal", "ean", " PRO", " Key", " especially", "ming", " cross", " national", "_object", "filter", " script", ".update", "_i", " Assert", "/core", "%%%%", " problems", "istor", " .=", " arch", " written", " milit", "MENT", ".ch", "cape", " Mus", "_config", " API", "foot", " images", "endl", ".In", "First", " platform", ".prot", "Option", "ste", " TODO", " force", ".cont", " echo", " Dav", "Ptr", "(B", "RT", " Base", "]['", " announc", "console", " Py", "ds", ".as", " prevent", "apan", " {'", "}'", " dead", "VAL", "QUE", "************************************************************************", " charg", "Return", " ful", "dom", " rules", " modify", " eval", "ham", "atement", "\\<", "ula", "=False", "RA", " contains", "74", " stack", "mar", " {}\n", " undefined", "Ass", " China", "vey", "*\n", " playing", ")/", "actor", " bottom", "lier", " Number", " couple", "DC", " SO", "gor", ".setText", "success", "command", "Filter", " Our", "_item", " ctx", " road", "Version", "case", "urt", "avior", "ych", "sembly", " Product", " held", "afe", " includes", "&", "CON", " repl", " regular", "Storage", "ramework", " goal", " touch", ".widget", " built", "des", "Part", "(re", " worth", "hib", "game", "91", "192", " \u0432", "acion", " White", "(type", "(`", "81", " natural", " inj", " calcul", " April", ".List", " associated", " System", "~~", "=[", " storage", " bytes", " travel", " sou", " passed", "!=", "ascript", ".open", " grid", " bus", " recogn", "Ab", " hon", " Center", " prec", "build", "73", "HTML", " San", " countries", "aled", "token", "kt", " qual", "Last", "adow", " manufact", "idad", "jango", "Next", "xf", ".a", " porno", " PM", "erve", "iting", "_th", "ci", "=None", "gs", " login", "atives", "']);\n", "\u0105", " ill", "IA", "children", "DO", " levels", " {{", " looks", ' "#', "ToString", " necessary", " \n", "cell", "Entry", " '#", " extrem", "Selector", " placeholder", "Load", " released", "ORE", "Enumer", " TV", "SET", "inq", "Press", " Department", " properties", " respond", "Search", "ael", " requ", " Book", "/\n", "(st", " financial", "icket", "_input", " threat", "(in", "Strip", [236, 157], "\xE7\xE3o", "71", " evidence", "));", " Bro", " [];\n", " ou", "buf", "Script", "dat", " rule", "#import", '="/', "Serial", " starting", "[index", "ae", " contrib", "session", "_new", "utable", "ober", ' "./', " logger", " recently", " returned", "\r\r\n", ")))\n", "itions", " seek", " communic", ' ".', " username", "ECT", "DS", " otherwise", " German", ".aw", "Adapter", "ixel", " systems", " drop", "83", " structure", ' $("#', "encies", "anning", " Link", " Response", " stri", "\u017C", " DB", [230, 151], "android", "submit", "otion", "92", "(@", ".test", "82", "\n\n\n\n\n\n\n\n", "];\r\n", " directly", ' "%', "ris", "elta", "AIL", "){\r\n", "mine", " ", "(k", "bon", "asic", "pite", "___", "Max", " errors", " While", " arguments", " ensure", "Right", "-based", "Web", " -=", " introdu", " Inst", " Wash", "ordin", "join", "Database", " grad", " usually", "ITE", "Props", "?>\n", " Go", "@Override", "REF", " ip", " Austral", " ist", "ViewById", " serious", " customer", ".prototype", "odo", "cor", " door", " WITHOUT", " plant", " began", " distance", "()).", " chance", " ord", "came", "pragma", " protect", "ragment", " Node", "ening", "\u0447", " route", " School", "hi", " neighb", "After", "licit", " contr", " primary", "AA", ".WriteLine", "utils", " bi", "Red", ".Linq", ".object", " leaders", "unities", " gun", "onth", " Dev", "FILE", " comments", "_len", "arrow", "amount", "Range", "sert", "GridView", " updated", " Mo", " inform", "ociety", "ala", "Access", " hab", " creat", "_arg", " January", " Day", '")\r\n', "uple", "document", "gorith", "menu", " Over", "bb", ".title", "_out", " led", "uri", " ?>\n", "run", " scene", "(array", "device", "_title", "agon", "]\r\n", "aby", " became", "boolean", " park", " Code", "upload", "riday", " September", "Fe", " sen", "cing", "FL", "Col", "uts", "_page", "inn", " implied", "aling", " yourself", ".Count", "conf", " aud", "_init", ".)", " wrote", "003", "NG", ".Error", [228, 187], ".for", " equal", " Request", " serial", " allows", "XX", " middle", "chor", "195", "94", "\xF8", "erval", ".Column", "reading", " escort", " August", " quickly", " weap", " CG", "ropri", "ho", " cop", "(struct", " Big", " vs", " frequ", ".Value", " actions", " proper", " inn", " objects", " matrix", "avascript", " ones", ".group", " green", " paint", "ools", "ycl", "encode", "olt", "comment", ".api", "Dir", " une", "izont", ".position", " designed", "_val", "avi", "iring", "tab", " layer", " views", " reve", "rael", " ON", "rics", "160", "np", " core", "());\r\n", "Main", " expert", " \r\n", "_en", " />", "utter", "IAL", "ails", " King", "*/\n\n", " Met", "_end", "addr", "ora", " ir", "Min", " surpr", " repe", " directory", "PUT", "-S", " election", "haps", ".pre", "cm", "Values", ' "\n', "column", "ivil", "Login", "inue", "93", " beautiful", " secret", "(event", " chat", "ums", " origin", " effects", " management", "illa", "tk", " setting", " Cour", " massage", " end", " happy", " finish", " camera", " Ver", " Democr", " Her", "(Q", "cons", "ita", " '.", "{}", " C", " stuff", "194", " :\n", " AR", "Task", "hidden", "eros", "IGN", "atio", " Health", "olute", "Enter", "'>", " Twitter", " County", "scribe", " =>\n", " hy", "fit", " military", " sale", "required", "non", "bootstrap", "hold", "rim", "-old", " Down", " mention", "contact", "_group", "oday", " town", " solution", "uate", "elling", "]->", "otes", "ental", "omen", "ospital", " Sup", "_EN", " slow", "SESSION", " blue", "ago", " lives", " ^", ".un", "inst", "enge", " customers", " cast", "udget", "\uFF01", "icens", " determin", "Selected", "_pl", "ueue", " dark", "//\n\n", "si", "thern", " Japan", "/w", "PU", " East", "ovie", " package", " nor", " api", "bot", '"];\n', "_post", "ulate", " club", "'));\n", " loop", "PIO", "ione", "shot", "Initial", " played", "register", "rought", "_max", "acement", "match", "raphics", "AST", " existing", " complex", "DA", ".Ch", ".common", "mo", " '../../", "ito", " analysis", " deliver", " \n", "idx", "\xE0", "ongo", " English", "\n", "_default", " Database", "rep", "ESS", "nergy", ".Find", "_mask", " rise", " kernel", "::$", ".Q", " offering", "decl", " CS", " listed", " mostly", "enger", " blocks", "olo", " governing", "\\F", " concent", ".getText", " mb", " occurred", " changing", "Scene", "_CODE", "Beh", '"The', " tile", " Association", " P", "alty", "_ad", "odies", "iated", " prepared", "possible", " mort", "TEST", "142", " ignore", " calc", " rs", " assertEquals", " sz", " THIS", '."\n', " canvas", "java", " dut", "VALID", ".sql", ".input", " aux", "Sup", " artist", "Vec", "_TIME", ".stringify", "etween", " Category", " [-", " DevExpress", " Jul", " ring", ".ed", "YY", "Let", "TextField", " flat", "_print", " OTHER", "adian", " checked", "ele", "Align", "standing", " [],", " lab", "ucky", " Christmas", "(image", ".module", " lots", " slightly", "(final", "erge", [232, 191], "147", " Police", "143", " Right", " award", " OS", " {}\n\n", " ptr", "oves", "icated", "\u0435\u043C", " manage", "oliday", "Amount", "oolStrip", "tbody", "Nav", "wrap", "BB", " watching", "arios", " optional", "_K", " Licensed", ".Map", "Timer", " AP", " Rev", "(o", ",c", "umin", "etailed", " Hy", " blank", "agger", " Self", "()[", ".make", "earn", "channel", ";\n", "World", " python", " lif", " trav", " conven", "company", " Club", "138", "Ver", "Btn", " zone", "products", " Educ", " verify", " Mil", "ono", "]);\n\n", "ENCE", " packet", " cer", " enumer", " pars", "formed", " occup", "tre", " exercise", "Day", "_sum", " asking", "aption", " orders", " spending", " ERR", ".Dis", " Util", "\u201CI", "\\'", "?)", "/>\n", " emot", " influence", " Africa", "atters", "\u0645", ".session", " chief", " ", " tom", "cluded", "serial", "_handler", ".Type", "aped", " policies", "-ex", "-tr", "blank", "merce", " coverage", " rc", "_matrix", "_box", " charges", " Boston", "Pe", " circum", " filled", "148", " north", "ictureBox", " res", [232, 174], " termin", " [\u2026", "IRECT", " ber", ' "../../', "retch", ".code", "_col", " Government", " argv", " Lord", "asi", "Exec", " let", "vertis", " discussion", "enance", "outube", "typeof", " served", " Put", " x", " sweet", "Before", "ategy", ".of", " Material", "Sort", "ONT", "igital", "Why", " sust", [32, 231], "abet", " segment", " [],\n", " Muslim", " findViewById", "cut", "_TEXT", " Mary", " loved", " lie", " JO", " isset", "month", " prime", "ti", " Carol", "Use", "146", " Pop", " Save", "Interval", "execute", "dy", " Iran", "_cont", " T", " phase", "checkbox", "week", " hide", " til", " ju", "Custom", "burg", "/M", "TON", " quant", " rub", "ixels", " installed", " dump", " properly", "(List", " decide", "apply", "Has", " keeping", " citizens", " joint", "pool", "Socket", "_op", " weapon", "gnore", " Exec", "otten", " MS", " (-", " Review", " examples", " tight", "!(", "DP", " MessageBox", " photograph", "164", "URI", "\xE9t", "low", " Grand", ".persistence", " maintain", " nums", " zip", "ials", " Gets", "peg", " Buffer", "~~~~", "rastructure", " PL", "uen", "obby", "sizeof", " pic", " seed", " experienced", " odd", " kick", " procedure", "avigator", "-on", ",j", " Although", " userId", "accept", "Blue", "IColor", "layer", "available", " ends", ".table", " dataset", "bus", " explain", "(pro", " Committee", " noted", "]:\n", "Dim", "stdio", "154", '.",\n', "_source", "181", " Week", " Edge", " operating", " este", "ipl", "330", "agination", " proceed", " animation", ".Models", " Watch", "iat", " oppon", "/A", "Report", " sounds", "_buf", "IELD", " bund", " get", ".pr", "(tmp", " kid", ">\n\n\n", " yang", "NotFound", "\u0446", "math", "@gmail", " LIMIT", "redients", " vent", "avigate", "Look", " religious", " rand", "rio", "(GL", "_ip", "uan", "iciency", " Change", ">\r\n\r\n", " Entity", " rencontre", " Ret", "plan", "\xE9n", "BOOL", "uries", "train", "Definition", "============", "zz", "450", "Animation", " OK", "_menu", ".bl", "_score", " acad", "(System", " refresh", "'=>$", ".Graphics", "amento", "pid", "tc", " tips", " homes", " fuel", [226, 150], "_helper", " \r\n", " Room", ".Close", "_attr", " Mount", " Ev", "arser", "_top", "eah", " Delete", "\u300D", "uke", " usage", "aria", "_dev", " texture", " conversation", "eper", "Bean", "done", "nonatomic", " Second", " shooting", "_pre", "Components", " ]\n\n", "__,", "stitution", ".Char", ">();\n\n", " presented", " wa", "oker", "-\n\n", "iner", " becoming", " incident", "Att", "162", " revealed", "forc", " boot", ".page", "Enumerator", "165", "_->", "Photo", " spring", '.",', " Dictionary", "BJECT", " locations", " samples", "InputStream", " Brown", " stats", "quality", "\u0445", "-dis", " helping", " ped", "224", "(se", " Who", "alian", "internal", " ft", ">().", "->{", " mine", " sector", " gro", " opportunities", " \xFC", " mp", " alleged", " doubt", "Mouse", "About", "_part", " chair", " stopped", "161", "loop", "entities", " apps", "ansion", " mental", " ", "FR", " defend", "care", " ideal", "/api", "urface", "011", " ele", "ulator", " Rights", "anguages", " funds", " adapt", "Attributes", " deploy", "opts", " validation", " concerns", "uce", ".num", "ulture", "ila", " cup", " pure", ".Fore", "183", " HashMap", ".valueOf", "asm", "MO", " cs", " stores", " ************************************************************************", " communication", "mem", ".EventHandler", ".Status", "_right", ".setOn", "Sheet", " identify", "enerated", "ordered", ' "[', " swe", "Condition", " According", " prepare", " rob", "Pool", " sport", "rv", " Router", " alternative", "([]", " Chicago", "ipher", "ische", " Director", "kl", " Wil", "keys", " mysql", " welcome", "king", " Manager", " caught", ")}\n", "Score", "_PR", " survey", "hab", "Headers", "ADER", " decor", " turns", " radius", "errupt", "Cor", " mel", " intr", "(q", " AC", "amos", "MAX", " Grid", " Jesus", " ", ".DE", " ts", " linked", "free", " Qt", " /**\r\n", " faster", "ctr", "_J", "DT", ".Check", " combination", " intended", "-the", "-type", "182", "ectors", "ami", "uting", " uma", "XML", "UCT", "Ap", " Random", " ran", ".sort", " sorted", ".Un", "401", "_PER", "itory", " priority", " Gal", " Old", "hot", " Display", "(sub", "_TH", "_Y", " Care", "loading", "Kind", "_handle", ",,", "rase", "_replace", ".addEventListener", " RT", "172", " entered", "gers", " ich", "(start", "205", "/app", " brother", "Memory", "Outlet", " utf", "prec", " navigation", "ORK", " dst", "Detail", " audience", " dur", " cluster", "unched", " ],", " comfortable", ".values", " Total", " snap", " standards", " performed", "hand", '("@', [229, 173], " phil", "ibr", "trim", " forget", "157", " doctor", ".TextBox", "377", "icons", ",s", " Op", "Sm", "Stop", " List", " u", "Comment", "_VERSION", ".Xtra", "Person", "rb", "LOB", " \n", " Central", "270", "ICK", "raq", " putting", " md", " Love", "Program", "Border", "oor", " allowing", "after", " entries", " Maybe", "]).", " Short", ")\\", ".now", "friend", " prefer", " GPIO", "osis", " GameObject", " skip", " competition", "_match", "lications", "_CONT", ".groupBox", " als", "666", '"We', "_eq", "lan", "_search", " Music", "asis", " bind", " Island", "rum", "(E", " seat", "Video", " ack", "reek", "={()", " rating", " restaurant", "456", "DEX", "(buf", "pping", "uality", " league", "176", " focused", "apon", "$data", "CLUD", "CLUDING", " absolute", "(query", " tells", "Ang", " communities", " honest", "oking", " apart", "arity", "/$", "_module", " Enc", ".an", ".Config", "Cre", " shock", " Arab", "IENT", "/re", " retrie", "ycler", "isa", " Organ", ".graph", [32, 237], " BAS", "Enum", " possibly", [209, 128, 208, 176, 208], " Japanese", " craft", " Place", " talent", " funding", " confirmed", " cycle", "/x", "GE", " hearing", " plants", " mouth", "pages", "oria", " Remove", "_total", " od", "ollapse", "door", " bought", " addr", "ARCH", "_dim", "dden", " decades", "REQUEST", " versions", "fire", "006", " moves", "fb", " coffee", ".connect", " Row", " schema", "Scope", "-Type", " fighting", " retail", " modified", "TF", "Files", "nie", "_command", "stone", " \u0442", "_thread", " bond", " Development", " pt", "FORM", "plet", " identified", "cpp", "206", "225", " coding", "oked", " Master", "IDTH", " residents", "redit", " Photo", "=-", "unte", "ateur", "159", "_STATE", " Sing", " sheet", ".val", "orse", " hers", " determined", "Common", " wed", "_queue", "PH", " Atl", "cred", "/LICENSE", " mes", " advanced", ".java", ".Sh", "Go", "kill", "fp", "_settings", " pal", " truck", " combined", ' "${', " Corpor", " joined", " Jose", " Cup", "uns", "estival", "levision", " broken", " marriage", " Western", " represents", " Title", " ss", ".Ass", "ongoose", "iento", "<>();\n", " absolutely", " smooth", "TERN", " Unless", "Word", " merge", "igan", " Vol", " nn", ".getId", " \u0437", "171", " sexy", " seeking", "Single", ".this", "179", " kom", "bound", ';"', " fontSize", "_df", " injury", "(H", " issued", "_END", ":self", "020", " patch", " leaves", " adopt", "FileName", "\u3010", " executive", " Byte", "]))\n", " nu", "outing", "cluding", "-R", ".options", " substant", "avax", " BUT", " technical", " twice", " m\xE1s", " univers", "yr", " drag", " DC", " sed", " bot", " Pal", " Hall", "forcement", " auch", ".mod", "notation", "_files", ".line", "_flag", "[name", " resolution", " bott", '("[', "ende", "(arr", "Free", '(@"', " District", "PEC", ":-", "Picker", " Jo", " \n", " River", "_rows", " helpful", " massive", "---\n", " measures", "007", " Runtime", " worry", " Spec", " D", "\u3011", " ){\n", " worse", "(filename", " lay", " magic", " Their", "oul", "stroy", " Where", "280", " sudden", " defe", " binding", " flight", " OnInit", " Women", " Policy", " drugs", "ishing", "('../", " Mel", "peat", "tor", " proposed", " stated", "_RES", " east", "212", " CONDITION", "_desc", " winning", "folio", "Mapper", " Pan", " Ange", ".servlet", " copies", "LM", " vm", [229, 141], " dictionary", "Seg", "177", "elines", " Send", " iron", " Fort", "166", ".domain", " debate", "NotNull", "eq", "acher", "lf", " fmt", " lawy", "178", "\u011F", " Men", " trim", "(NULL", " !!", " pad", " follows", '"]["', "requ", " Ep", ".github", "(img", "eto", "('\\", "Services", "umbnail", "_main", "pleted", "fortunately", " windows", " plane", " Connection", ".local", "uard", "}\\", '=="', "andon", " Roy", "west", "158", "iginal", "emies", "itz", "'):\n", " Peter", " tough", " reduced", " calculate", " rapid", "customer", " efficient", " medium", " fell", ".ref", " Cas", " feedback", "Speed", "(output", "aje", " categories", " fee", "};", " deleted", "reh", " proof", "Desc", "Build", " sides", ".ArrayList", "-%", " ", "\u0631", ".match", "\u043B\u0438", " feels", " achieve", " clim", "_ON", " CD", " teacher", "_current", "bn", "_PL", "isting", "Enable", "GEN", " tv", " sock", " plays", " discount", " KE", " Debug", "Fore", " Iraq", " appearance", "Mon", " styled", " Human", "iot", " History", " sac", " Collection", " recommended", ".Selected", " organizations", " discovered", "cohol", "adas", " Thomas", "May", " conserv", " domin", " Follow", " Section", " Thanks", "Username", " recipe", " wonderful", ".sleep", "_if", " \n \n", "orno", " ru", "_target", '.""', [224, 166], "EventArgs", " inputs", " fif", " vision", "cy", " Series", ")(((", " trading", " marker", "Begin", " typically", " causes", "dropdown", "_DEBUG", "260", " detect", "country", '!");\n', " R", "appy", " cref", "('<", '"=>', " LE", "reader", " administr", "\xF5", "ucket", " fashion", ".char", "izar", " disable", " suc", " Live", "issue", " metadata", "flags", [32, 240, 159], " committed", " va", " rough", " '''\n", " highlight", "_vars", "VO", " encoding", "-Z", "_sign", '$("#', " rain", "reatest", " END", "Selection", " candidates", " sav", ".Empty", " decisions", " collabor", "ridge", "feed", "ression", " persons", "VM", "008", "ega", "_BIT", "According", "acked", " dollars", "_loss", " Cost", '}"\n', "Notification", " prostit", " authority", ".rec", " spokes", " Today", "istant", " Head", "\u201D.", "ertainment", "cean", "culate", " ven", "However", "_arr", " tokens", "Graph", " Jud", " Virgin", " Serial", "unning", "Mutable", "agers", ".csv", " developing", " instructions", " promise", " requested", "_encode", '/"', " Icon", "uilt", "-day", " intelligence", ".IS", " Observable", " Hard", "Bool", "211", "idential", ".Anchor", " selling", "CI", "AGES", "tle", "bur", "UFFER", "RY", " bigger", " rat", " famous", " typename", " explained", "}}\n", " nuclear", "-N", " crisis", " Enter", " answers", "/${", "/pl", " sequ", "_next", "mask", " standing", " plenty", " Cross", " ret", "dro", " Cast", "167", "=true", " Chris", "icio", " Mike", "Decimal", "addComponent", "Len", " cock", " #{", "URN", "', " *=", " PS", " dangerous", "[p", "OME", "Other", " StringBuilder", "Points", "heading", " currency", " percentage", "_API", " classic", "thead", " MO", "FE", "Idx", "await", " \xE8", " accident", " variant", " myst", " Land", " Bre", " harm", " Acc", " charged", "iones", "Visibility", "arry", " Language", " walking", '".\n\n', "ifer", " leadership", ".From", "ynam", " timestamp", "ipt", " Has", "REFER", " Its", " listener", "UTE", "213", "_description", " experiences", " creates", "RS", "cart", "black", " choices", "war", "750", " '''", " ordered", " evening", " pil", " tun", " Bad", "(app", "random", " explicit", " arrived", " fly", " econom", "-mail", " lists", " architect", "234", " Pay", " ds", " Sol", " vehicles", "Hz", "-com", " king", "_equal", " Help", " abuse", "480", "169", "--;\n", " extr", " chemical", [228, 191], " orient", " breath", " Space", "(element", "wait", "DED", "igma", " entr", " sob", "-name", " affected", "ika", " coal", "_work", " hundreds", " politics", "subject", " consumer", "ANGE", " repeated", "Send", " #[", " protocol", " leads", "useum", "Every", "808", "174", "Import", "(count", " challenges", " novel", " depart", "bits", ".Current", " `${", "oting", "(\\", " creative", " buff", " introduced", "usic", "modules", "Are", "-doc", "language", "_cache", " tod", "?>{{", " Resource", " Standard", " Prem", "updated", "ivalent", " assets", "_temp", " interests", " hardware", " Rom", " Share", " ''\n", " *,", " Take", " Images", "_CHECK", "(typeof", " Jun", "\\<^", " liqu", " worst", "ymbols", " ", " drivers", " Document", "eno", " Technology", " approved", "umps", " snow", "formance", "_ASSERT", "uits", "207", "\u0646", " differences", ".Visible", " \r\n", " Ps", "_fetch", " todo", ".',\n", " sel", "urers", "invalid", " tweet", "VEL", " researchers", " sprintf", " RO", " pel", ".Trans", " illegal", "dialog", "smarty", "lg", "_MIN", " hero", "final", " pp", ".Le", " ci", " RT", " suggested", "pdf", "aching", " Ro", " Properties", " Si", " buying", " mu", " lands", "ifiers", " FILE", "ROUP", " holder", " Son", " sympt", ".route", ")?", " argc", " fort", " casino", "_category", " forum", "215", "prefix", "apture", "Tube", "ems", "imize", " nue", "aus", "course", "ATOR", "()),", "Advertis", "INGS", " acknow", " Korea", "pling", " worker", "PLIED", "hal", " Richard", "Elements", " ", "star", " relationships", " cheap", "ACH", " XML", ",&", " Louis", " ride", "_FAIL", " chunk", "[s", "_OUT", " chosen", "_[", "/(", " Jeff", "_sl", "priv", " Canadian", " unable", "_FLAG", " nos", "high", " lift", "fun", "(){", "elly", "yclerView", "_as", "_LIST", " radi", ".getValue", "304", " Angeles", " Span", "_instance", "itors", "208", " migration", "AK", "Oh", "\xAE", ".selected", " GT", " advance", " Style", ".DataGridView", "ection", "\u044E", "pio", "rog", " shopping", " Rect", "Illuminate", "OU", " array", " substantial", " pregn", " promote", "IEW", ".Layout", " signs", "/.", " letters", "Board", "ctrl", '"\\', " Jones", " vertex", " ja", " affili", " wealth", " default", " significantly", " ec", " xs", "actual", ".per", "_step", "anvas", "mac", " transl", " ", "Iterator", " och", "agnostic", " During", " DEFAULT", " till", " signature", " bird", " Ol", "310", " Ir", "HS", "avatar", "ESSAGE", " elev", " mt", " Nav", " relax", " plate", "ITEM", "(date", ".not", " grade", " }),\n", '?"\n\n', "iences", "High", " DIS", "231", "disabled", "QUI", " noise", "aux", " UP", "888", "osa", " voc", " ))", "ocom", "_OFF", " Db", "Lock", ".eclipse", ",d", " Draw", ' "(', " visited", [32, 226, 136], " succeed", " impossible", "aire", " Turn", " dish", "FG", " sensor", "ANN", "aba", " surg", "]);\r\n", " fp", "_an", "-J", "-G", " Job", "Convert", " KEY", " authors", "_server", "\\r", " -*-", "flex", " soc", "Ret", " salt", " \u2026\n\n", " Clear", "(page", "-danger", " rooms", "conv", "#{", ".op", " Area", "_SC", "hen", " begins", "-y", " excited", " ignored", " bonus", "student", " Member", " relatively", " Low", " Produ", "ateway", "posure", " thick", "aniel", "(view", " Crush", "Extension", "Il", "eed", "LOC", ".im", ".Items", " conflict", ".prevent", "252", " onCreate", "uv", "iser", " wave", "Mar", " Community", "iche", " Nothing", "[m", " Lee", "riends", "232", "\xE8re", "!!!", "anz", ".result", " SK", "_PARAM", " democr", "BackColor", ".exists", '"It', "(options", "razy", "aser", "\\Database", "alendar", "_ass", ";}\n", "vertex", "inecraft", "Warning", "argo", " actor", " Instead", " Using", "Self", "@interface", " speaking", " Paris", " LICENSE", ".node", " Food", "EIF", " Bi", ".Start", " IB", " university", "254", " Header", ".product", "409", "Copy", "etc", "rical", " >>>", "books", " algorithm", " '__", "(javax", " numerous", "Share", "Have", " recru", " prove", ".substring", "health", "\u0435\u043B", " decimal", " commission", "scription", "xC", " summary", "atted", " closer", "finished", "()){\n", " Wood", "301", "_fields", "ku", "_items", "Flag", " confidence", " Federal", "dux", " compat", " vertical", "\u0439", "\xE8s", ';">\n', "_manager", "()))\n", "IDE", ':",', "235", "__\n", " Way", "221", "\u0448", "Temp", " STR", "ritten", "Sync", " AV", " CEO", " Guid", " environmental", " corresponding", " console", " justice", " JS", " lived", "gar", " Graph", " Stat", " iPhone", ".al", " HD", " occur", " threshold", "509", " onclick", "REG", ".GraphicsUnit", "Meta", "\u017E", " cum", ".gnu", "\xEB", " obtained", " complaint", " eating", " tar", "_task", " opts", "216", "(to", "Pass", " plastic", "tility", " Win", ".preventDefault", "pile", " Gar", " quantity", "_last", " greatest", "Dao", "_DIS", " Used", " HP", "riting", "SION", "blue", "domain", " scores", "Normal", "_admin", " ASSERT", "Then", "***", "dist", "lon", " hate", "shal", "ImageView", "database", " pand", " logic", "=false", "bg", " Configuration", " nur", "OG", " married", ":+", " dropped", "040", " registration", "\u043E\u043C", "ultiple", "izers", "shape", ".copy", " wearing", " Cath", " dedicated", " ...\n", " advoc", " Family", " statements", "ematic", "ampionship", " motiv", " Have", " blow", "Job", "cert", "_vector", "install", " COPY", "embed", "DIR", " Spring", " exhib", "223", "cdn", " Comment", " Optional", ".player", " Dark", "(pos", " Should", " centre", " Guard", "\xF3w", " trouble", "ENER", "(unsigned", "_service", " ns", "uling", " Mexico", " NY", "mysql", " lic", [229, 156], "Mr", "-fl", " Customer", "idi", " ?>\n\n", "rible", " \u043F\u0440", " sizes", "_STRING", "validation", " Jon", "(Http", "addClass", "Nodes", " fragment", " spoke", " waste", "Join", " illustr", "eli", "cient", " aid", " prosec", "'){\n", " passing", " faces", "Shape", "_Z", "iti", " alle", " robot", " \n", " Spe", " receiving", " Details", ' ")', "mg", "_REF", " comparison", "*,", " Found", "_session", "(U", "/F", " xxx", "Network", "ders", " capture", " corre", " Ltd", " Adv", "[@", " clip", "Mill", " Profile", " endif", " oblig", "describe", ".element", "riterion", "LD", "ered", " favour", "score", " Filter", "attributes", " checks", "Inflater", " Plus", " scientific", " privacy", "Head", " feat", " degrees", " Pale", ';">', " films", " Audio", " Tag", " Energy", "itar", "parator", " fellow", " evt", " Tri", " DAM", "cloud", " Password", " Democrats", " Acad", "$lang", " reb", "())\n\n", "\u043D\u044B", " Bur", "readcr", " hex", "209", "Console", "ctl", "ousel", " William", " az", "_PORT", " practices", " anywhere", " Position", " ->\n", "iams", ".username", "placeholder", " oder", " Secretary", " iT", "mond", "events", "?\u201D", ".Sub", " attached", " n\xE3o", " estate", "365", ".action", " figures", " });\r\n", " subscri", ".tag", "nam", ".plot", "noon", "liament", "Character", ".tab", " winter", " Variable", " trees", " proud", "(V", "_load", " hier", " Econ", " fd", " victims", "Rest", "iana", " fake", ".Println", " strlen", " sad", " ble", "Prot", " buttons", " television", " logo", "extension", " j", "stein", "aciones", ' """\n\n', " simp", " recorded", " brings", " principal", " fees", "(source", "kdir", " utils", " correctly", "fil", " wel", "Pair", "-button", "scale", "verify", "[c", " ---", " escape", "ikes", "LowerCase", "ician", " chapter", " TYPE", " shadow", " awesome", "WE", "elif", " lambda", " distinct", " bare", "-off", " colour", ".appendChild", "olec", "aga", ".fill", " super", " adj", "(position", ".getItem", "242", "Short", " totally", "VD", " Tre", "_ep", "vements", " Solution", " fundament", "Follow", " facility", " happening", "OF", ".textBox", "Span", " \xAB", "iden", " exceed", "(parent", " cp", [231, 187], " hasn", " pri", " consequ", "nen", " INTO", "Ignore", " Future", " carbon", " Steel", "fmt", "okie", " spl", "(title", "-info", " deals", " fixture", "ea", "Div", " tested", "_return", ")\n\n\n\n", "upported", " Cook", " paying", " Ill", " arrested", " Prime", "_callback", ">,\n", "driver", "Once", "abb", "_bytes", " Sets", "(Object", " cc", " shell", "alo", ");//", "(log", "264", "ctors", ")", "218", ' $(".', ".pos", " boys", " wedding", " agents", '="_', " Army", " hint", "vision", " tech", " Connect", " legend", " Bet", ".Base", "Subject", " lit", "Remove", ' ":', " Final", "pearance", " iTunes", " participants", " Python", " busy", "iel", "vertices", " templateUrl", " Close", "Img", " Corporation", "timestamp", " extend", " websites", " possibility", "\u043E\u0442", " k\xF6", " meat", " representation", "241", " ", "_START", ".apply", " Valley", " Success", "Hi", " nob", " IEnumerable", "_select", "geo", '.")\n', " turning", " fabric", '("");\n', " perspective", [233, 151], " Sn", "Thank", ";j", ".Parameters", " ", " facts", "305", " unt", ".instance", "################################################################", "-end", " JOIN", " Hen", " uri", "\u540D", " \u043D\u0430", " Info", " conducted", " \xE5", "OURCE", " wine", "John", ".Errorf", " Age", "ounded", " realize", "312", " ];", " subsequ", ",m", "(User", "iano", " accompl", "isp", ".std", [233, 135], " Bed", ".setAttribute", "BR", "keep", " ALL", " isol", "amma", "Package", " occasion", "-success", "\u0435\u0434", " LIMITED", "strip", "()\n\n\n", "istribution", "Colors", " +:+", "DidLoad", "aler", " tid", " LED", " Linked", " Cart", "())\r\n", "_READ", " killing", " PHP", "fection", " instances", "cv", '"/>', " sf", " taxes", "_location", " Bitcoin", "uable", "rank", "ignore", "track", "\u043A\u0430", " shouldn", " OP", "=>{\n", " km", " helper", "_head", " Whether", "oco", "_bl", " statistics", " beauty", " tog", "tip", "\uB2E4", " csv", "(sql", "stdlib", "weak", " likes", "\u010D", " repeat", " apartment", " emph", "_edit", " vit", " type", "217", "Even", "uten", " circumstances", "bian", " sugar", "Windows", [236, 158], " observed", "/data", " calendar", " strike", " RES", "_sc", "fony", "orem", "(z", "power", "etect", " Sat", ".description", " gang", " Sports", "ongs", " Bundle", ".sum", "once", " accused", " explore", " approximately", " losing", "thesis", " Fund", " diagn", "Autowired", "properties", " _.", " cnt", "cedure", " yy", " grant", "sock", ".innerHTML", " ]);\n", " CONFIG", "='$", "550", "]];\n", "UND", " glob", " dire", "uffle", "_MEM", " authentic", '>("', " decade", " Import", " originally", " jQuery", " indicate", " ourselves", "Sw", ".lbl", "enerate", " basically", " Hom", " +#+", " Britain", " Kar", "toEqual", ".stop", " modal", "isi", " suggests", " dtype", " tur", "bf", " connections", " Before", "isted", "mouse", " pulled", ".build", " legislation", " forth", "pad", "ego", ".Now", " exciting", "}\n\n\n\n", " compr", " shares", " rig", "green", "_vec", " enumerate", "Auto", "icator", " Ray", "asse", " holiday", " nullable", "gun", "_details", " wrapper", "seq", " Young", "juana", ' "__', "license", "serve", "^(", "iders", ".Remove", "ropdown", "'S", "pin", "(token", ".Default", " reasonable", "ampion", " Society", " bei", "erves", "rad", " Fox", "_images", " wheel", "')[", " cfg", "(By", "Constructor", " vary", ".swift", " proxy", " H", " Another", " Pen", " checking", " jest", "manager", "Origin", "ugs", "oir", ">\r\n", " relief", "lap", "quer", "_parent", "heap", "LOSE", " combine", " Rose", "owers", " procedures", " Sort", "anim", "variant", "ehicle", " signing", "Primary", "currency", " sexe", "oen", "theta", "eman", " impressive", "('_", " U", " TextStyle", "_cnt", " slice", "(':", " understood", "His", "277", "013", " informed", " nick", "429", "(TAG", "hd", " elections", "esture", " Santa", " Coast", ".pdf", "inciple", ".clone", "born", "uta", " licensed", "Cr", " bread", " Houston", " nod", " hopes", " CGRect", " guilty", ".gif", " rose", ".Common", "Tip", "ANK", " FC", "During", " Symfony", " defensive", "km", ")>", "archive", " URI", "ycling", "-o", " Website", "AMP", "405", "ishment", " doctors", "Direct", "ARI", " Redirect", "ieren", "960", "_dist", "yo", " Progress", " zum", " memor", " ED", " jur", "\u636E", "_TABLE", " uuid", "Expr", ".head", "('%", "pointer", " estimate", " Greg", " loader", " iOS", " mens", "[y", " refused", " precision", "isch", " ACTION", "Cloud", "sWith", "(ret", "292", "_ADDR", "_conf", "(df", " locked", " rising", "\u30FB\u30FB", " Ms", " scenes", "_EXT", "_raw", "_the", "people", " recon", " Fun", " bless", " Updated", "422", "\xFCn", " \r\n", "pection", "Release", ".logger", " SY", " counsel", "urd", "_true", " everybody", "ivot", " hence", " NAS", "789", " opposed", "unknown", " DESC", " Chair", "failed", " INCLUDING", "386", "352", " writers", "{}\n", "\xEDt", "_copy", "}:", " Bat", " converted", "eding", "placement", " Host", "Sound", "\u0438\u043C", " sought", "402", "mid", " salary", "ogg", "\u2122", "bul", " wir", "validator", "_STAT", ".store", " Battle", "\u0131n", " -->\n\n", "Trump", "dot", " CONT", ".fetch", " continu", "was", " fraud", "_tmp", "mitter", ".pictureBox", "GA", " tournament", ".Input", "343", "[r", "exion", "centage", " Korean", "undef", " Available", "reshape", " kit", " Struct", " SUB", "Answer", "_lib", ".twitter", " ore", " Dragon", ".Ext", ",k", " explanation", "refs", " Drive", " Training", "282", ".Has", "341", "intage", "big", "ologist", "ennis", "460", "\u0647", " chicken", " \n", [231, 155], "\u3067", " peak", " drinking", " encode", " NEW", "malloc", " fprintf", " =================================================================", "including", " principles", " Mah", "267", "storage", "-key", " keyword", "%;", " trained", ".contrib", " kv", "__':\n", " Boy", "parameter", " suite", " thousand", " coordinate", "-generated", "\uD558", "generated", " admitted", " pussy", "#w", " swim", "union", "Na", "274", " Royal", ".channel", "Updated", "_ROOT", " vital", "335", "raction", " Crusher", " preced", " horizontal", "Blueprint", " attrs", " smoke", "\u0412", ".Equals", "FB", " Resources", "rolling", " passes", " Num", "rotate", "etype", '\\",', " sensitive", " tall", "?\u201D\n\n", "Proxy", "iy", "_section", "\u2014\u2014\u2014\u2014", "brid", " circuit", "atan", "ENC", " driven", " voted", " educational", " interaction", "abetes", " tone", " InitializeComponent", " merely", [32, 236, 158], "cookie", "_div", " UILabel", "vely", "});\r\n", "_ENT", "#+#+", "articles", " Southern", " stronger", " Given", " Eric", " IR", "abstract", "Under", "nable", " increment", "oven", " coin", "_timer", " suffered", " FREE", `']."`, " Queen", "stats", " meetings", "276", " entering", " alongside", "(session", "itals", " foundation", " Credit", ".div", "_ALL", "pcion", "_stat", "icking", "Defaults", "_src", " outputs", "/B", " enthus", "-bl", ".ForeColor", " temp", "Face", " interact", " weird", "Mount", "rell", "udents", " requirement", " Sus", "IER", " elected", "reference", " ME", " servers", ".wait", " snapshot", "ilton", " tries", " tipo", ".Time", ">w", " mountain", " pounds", " [...", "exists", " ngOn", "_MAP", " flying", "331", "xiety", " value", "_DB", "uno", " seats", "TURN", ".author", "!)", "orce", " indicated", "317", ".sin", " assignment", "imiento", " Frame", "324", "_gen", "inery", "_)", "messages", ".settings", " Mean", " Museum", "irq", "attach", " Palestin", "_QU", "_tags", " casual", "emen", "ASSWORD", "432", "$s", " Circ", "\u043E\u0439", "etric", "/P", "018", " epoch", "The", " Ak", " grass", "/*\r\n", "(dis", " guns", " tb", " Kevin", ".args", " Ah", "oped", "(J", "columns", "arguments", " WithEvents", "_full", " Defense", "Simple", " deaths", "295", " extensive", " Still", " Expression", " Agency", " performing", "FX", " usuario", "UAL", "Side", "odos", "aptop", " credentials", "_cap", "atient", " Disney", " ai", " chip", " volt", ".makeText", "%%%%%%%%%%%%%%%%", " belief", "_LOC", " Civil", "Navigation", " reveal", " violent", " Fil", " catalog", "emed", "scan", ".control", " constitution", "Country", "Separator", "_APP", "topic", "uetooth", "MIN", " descriptor", "yt", "ETHER", " distribute", "'}\n", ".trim", ".Line", " lbl", "assertEquals", " Det", "ombok", "(width", " tort", " EXPRESS", "aco", "Using", " Brand", "wall", "EMENT", " Communic", "(\n", '?>"', " ///\n", " einer", " weekly", " logger", "_pop", "_man", " migrations", " asks", " bs", " falls", ".Where", "-height", "_feature", ".Min", " hyper", " volatile", " twenty", "Typography", "Unable", "Det", ",f", "-mod", " settlement", " contracts", "nome", "Bad", " Brian", "768", "(username", "!!!!", " hack", ".Field", "HR", " Jordan", "iza", " \xA0", " Sher", ".header", "(other", " Dub", "(op", " Round", " vie", " appl", " J", " Insert", " LP", "regon", " MPI", " anchor", "aca", "\xF8r", " ade", "anchor", "quee", " TreeNode", " targeted", " laid", "ABEL", "vet", " Origin", "Ant", ".');\n", "expect", "edReader", " Major", " inch", "Compar", " preview", " illness", " CONTRACT", " Independ", "uuid", " nome", " tc", " Avenue", "isan", " phrase", "_move", '")[', "412", " provision", " concentr", "_IR", " Ut", "()+", " nas", "!,", " Robin", "iations", "atitude", " px", " Without", "/bash", "ekt", "reement", "342", "Observer", "318", " Region", "UBLIC", " {//", "KN", [229, 183], "GameObject", [229, 190], "encoding", " ***", "projects", " tk", " cheese", "EMPL", "aro", " \u0627\u0644", "610", "337", " consists", "refresh", "ureau", " Scanner", " soil", " flavor", "DataSource", "Execute", "\u0435\u043D\u0438\u0435", " shit", "\u5206", "\n', " subsequent", "posable", "-fluid", " thorough", " publicly", "apters", " Wilson", "_PRE", "yard", [228, 188], " in", "339", " revers", " bullet", "cribed", "nesota", " ($_", "annon", "cursor", " clothing", " Multi", "287", ":',", " vess", "ordinator", " einem", "Cannot", " armed", " V", "\u4E0A", ".Flat", " Sep", " Subject", "_font", " characteristics", "Done", "eln", "############", "POS", " density", " Platform", "-items", " overs", " pushing", [231, 164], ".Connection", "_term", " initialization", "________________________________", [231, 172], ".document", "lesh", " document", " Pin", "\xE7a", " definitions", ".Path", "_WRITE", " \n", "?>\n\n", " terrible", "bean", "ickets", " SV", "Buy", "(task", " regime", "google", " crack", ".visit", "NUM", "energy", " struck", "_sample", ".payload", " revis", " Scene", " pg", " breakfast", "URRENT", ".charAt", "_exception", " Anton", " guidelines", " exhaust", " Financial", " indent", " desktop", "Hidden", "Failure", " principle", " iv", " seks", "network", " numberOf", " Albert", " long", "801", ",.", " zeros", "fade", " Typ", " Term", " Arts", ".Application", " behalf", "\u6237", " mere", "(`${", " awareness", "elpers", "flix", " weigh", " estimates", ".child", "/O", " Bitmap", ".bottom", " **************************************************************************", "Expect", "ento", " Forum", "veral", " jail", " abilities", " HOLD", " Cit", " dynam", " gray", " ", ".nextInt", "antly", " ARISING", "(private", " rejected", " Nic", " leather", "={\n", "alytics", "thetic", ".Top", "373", ".Page", "={`", " ;\r\n", "depth", "mann", "WD", " Som", ".Right", " )}\n", " trait", "\xD7", "iac", " rv", "Sample", ".Xml", "opped", " \u0444", "lists", " tear", "iversary", ".collection", " Constitution", " HttpResponse", " brill", " Prom", "hover", "366", " Miami", " argue", "_float", "504", [32, 227, 130], " nat", " Tal", " integration", "(cur", " removing", " coeff", " Though", " forecast", "408", " Vegas", "Site", "346", " trab", " Henry", "-i", " involves", "BT", " slo", "Invoke", " lucky", "025", "rat", " ?\n", " handled", "(fd", "contents", " OFF", "RF", " sty", " Motor", "tery", "tax", "MAP", " Mrs", " phones", " UIView", '")));\n', "(dev", " Irish", "019", " ws", "DI", "_OFFSET", " Events", " stages", " }//", " haben", "STANCE", " Sin", " Money", "(top", " appointment", "VERSION", "metadata", "_comment", " colleagues", "maps", [226, 152], "\n \n", "(al", "_req", " fut", " architecture", "351", " WHETHER", " ", "_screen", " styleUrls", " monster", ".up", "phia", " processor", " Terr", "=',", " Manufact", " NT", "kel", "ibern", " file", "Ali", "rientation", " //!", "apore", "aneous", " Creat", "folder", "415", " hay", "Suppress", "(left", " euro", " disclaimer", "ustry", "ships", "_fd", " Fa", "_insert", " rol", "ifting", " Comments", "_br", " losses", " Added", "charg", " \u043F\u043E", "_system", " Sometimes", " Spain", "(group", "ialis", " dollar", " Args", "499", "297", "quires", " Ten", ".scss", " survive", "usage", " jun", "imiter", "\uFF01\n\n", " fifth", "toggle", " decline", '($"', "(Long", "inge", " pilot", "-light", "-radius", " podcast", " naturally", "Pages", "\u4E3A", " Despite", " lighting", " crate", " Binary", " reducing", " eleg", " Mouse", " TestBed", " beforeEach", "_ARRAY", "Redirect", "329", " flood", " ships", "363", " electricity", ")*(", [234, 184], " Viet", "hero", " dia", " Kent", "heart", " threats", "_acc", " symbols", "ischen", "_inst", "Criterion", " TIM", ".Height", "580", " \u2019", "();\n\n\n", "Products", "_SP", " Cy", " dependent", "este", " datos", "dit", "\u0430\u0432", "IGNAL", " lesson", `">'`, " Cover", " Hope", " Timer", " dad", "viders", " Phot", "/?", "ropy", "oming", "asion", " \\(", " ET", " Reading", " episodes", "lm", "421", "echa", " neuro", "820", " harmon", " liberal", "-ind", "393", "DATA", " everyday", " divided", " ActiveRecord", "figure", "UA", [228, 185], "riendly", "tech", "601", ".gameObject", "\u0438\u0442\u044C", "374", " moon", "ftime", " noch", " TORT", " VM", ".initial", "(child", " musical", " oc", "bas", " Hay", "361", "_long", " memset", "iley", "adelphia", "SV", "roat", "_tx", " lon", " ngOnInit", "bp", " Golden", "ACHE", " worried", "azi", "Ear", "Take", "(fp", "burgh", "_Data", "gres", " Ont", "pus", " transparent", " pocket", " ram", "igrations", ".\r\n\r\n", " [(", " adopted", " reportedly", " Dream", " }));\n", "losing", " teeth", " Books", '",&', "enny", "LEMENT", " gel", " Plant", "437", "!\u201D", ".host", " Reply", "376", "rength", " recognition", " }}>\n", "LA", " mirror", " assistant", "(device", " spiritual", "builder", "\xA7", " outr", " tt", " PER", " radical", "Methods", " pace", "udy", " gut", " Greek", " nonatomic", " Paper", "_GPIO", " obst", ".Ad", "vironments", " Sov", "356", "(con", " Transaction", ".assign", " catch", "elter", " bitcoin", "_GR", " \r\n", "metic", " transformation", "\u53F7", " rgb", "istributions", " implicit", "/in", "destination", "\u0430\u0442\u044C", "Zero", " unset", "920", ".where", ".go", " formation", " declaration", "()\r\n\r\n", " Expl", " ", "/pro", ".JSON", "441", " desk", ".substr", "//----------------------------------------------------------------------------", "lyn", "pson", "407", "disable", " Func", " Assert", " MARK", " defeat", " blind", " constants", "362", ".headers", "UILD", " expenses", "Pixel", " hr", " fel", " Eastern", "424", "490", "_del", "357", " Cub", " sq", " count", " Directory", " exclus", " historic", " ------------------------------------------------", " composition", " dataGridView", " Burn", " BC", "Master", " spawn", " bearing", ".SetActive", "ilo", " gallery", " founded", " availability", ".sqrt", " pes", " DOM", "mate", "Oct", " matched", "itivity", " anxiety", ".price", " Instant", [236, 138], " tut", "ICollection", ".shared", "_sql", "tbl", "library", "_destroy", "ermal", " Notes", " Ein", " southern", " OTHERWISE", " macro", ".lower", "cls", "ContentView", ".link", "constant", " Bes", " somebody", "nb", "399", '">{', "(local", ".....", " Null", "mx", " \xE7", " pause", "-----------", "_MO", " CM", " forKey", " DVD", " closest", "_DEVICE", " Stephen", " BBC", " Travel", "Paint", " Results", " Rule", " tp", " ratings", "cin", "csv", ">/", " GOP", "lad", " \u0440", " indexPath", "matrix", "=f", "arsed", " });", " Cos", " Score", " tak", " ESP", " INC", "_NULL", "-flex", '"][', "into", "eland", "Authorization", "_FALSE", " gate", " vid", "istent", "TIME", " rewrite", " tie", " archive", "511", ".events", ".getParameter", " Permission", " programme", [32, 233], "jud", " cameras", "338", "349", "(sys", " Syrian", " improvements", " hip", " suicide", " scholar", " compatible", "022", "remote", ".down", "FUNCTION", " managing", " UIKit", ".raw", ">>>>", "371", " demands", "ellite", " dent", " Micro", "\u53D6", "'][$", " IE", "imension", " trem", "630", " gained", ".with", ".ok", "hou", " bom", "ampaign", " joining", "fish", " addSubview", "860", " northern", ".cor", "oret", "Die", "inish", "_comp", " attended", " collapse", " SS", "acent", "_EQUAL", " Deep", "RGB", " test", "olves", "uset", "UnityEngine", "writer", "Resolver", ",%", "ifference", "_remove", "onda", " femme", "385", "decode", "Branch", " flush", " innovative", "Tests", " ['./", " covering", ".admin", "ultipart", "(lambda", [239, 187, 191, 110, 97, 109, 101, 115, 112, 97, 99, 101], " Sport", " !(", "acles", " depression", " Kong", "570", " pert", " Conn", " Otherwise", "/home", "supported", " pink", " invited", "\xF1os", "_enabled", " -\n", "FW", "eners", " MY", " suggestions", "Canvas", " fer", " Marketing", "@Test", "untu", " Ven", " Cou", "ivals", "Donald", "limited", " \n", " analyst", "(entry", " representative", "_attributes", " fur", ".hide", "resp", "adores", "rides", " Josh", "robot", " NAT", " sesso", " integrated", ":true", "parts", " stupid", ":event", "@endsection", " pu", ".Table", " Yii", "`;\n\n", " clang", '="">', "engan", "_parameters", ".internal", " Modern", " metric", " semi", "={{\n", "707", ".amazon", " BB", "ainty", "viewport", "367", " startActivity", "dispatch", "*****", " flav", "ifferent", "382", "[this", " stake", " argued", "viously", ".work", " Oak", "Old", "(async", "notes", " flip", " disag", " TE", " error", "<'", " \xBB\n\n", " filtered", " Mach", " hung", "_dump", "_samples", "-dismiss", " ray", "Implemented", "DK", " jed", "090", " breaks", " fits", ".gr", " Zero", "oro", " equally", " '[", " concerning", "<", " promot", " incl", "_only", "\uB97C", " Attorney", "-date", " landscape", " fu", "SY", ".prop", " Arr", "pag", "ParallelGroup", "':\r\n", " logs", "aunch", "unci", "nama", "TableCell", "issues", ".{", "ecurity", "_exec", "olds", " hosts", " proto", "_import", "_sort", " Bow", " Normal", " Farm", ".createParallelGroup", "Rotation", ".err", " pleased", "itage", ".Wh", " ", "MR", " MORE", " Natural", "_transform", "BASE", "eneral", "utdown", ".commons", "WT", " aan", ".Result", "dog", " clicking", "),\n\n", "#line", "Operator", " civ", " merg", "obuf", "ngthen", " [{", " cancell", "trigger", ".:", "WORK", "declare", " decrease", "\u015Bci", "loom", ".None", " MI", " Jason", " healthcare", "iamond", "sylvania", "*x", " Ra", "[b", " printing", "phabet", " Labour", "opper", " zijn", "-target", "_FUNCTION", " oct", "\u0435\u043D\u0438\u044F", "\u5728", " western", " computers", " RET", "HashMap", "[String", "getValue", "_DATE", ".Next", " Fif", "\xE9l", "icked", [230, 142], "-MM", " {\n\n\n", " contacts", " digits", "Produ", " unusual", " rapidly", "tures", " angry", "cancel", "xxxx", "_parser", "idity", "_PREFIX", "710", " mehr", " rarely", "ethe", "opes", " %.", "works", " theta", " contribution", " Tony", " squad", "537", "\u0430\u0439", " \xEEn", "there", "outed", " q", [153, 130], "good", "LI", "\u9875", " Living", "izabeth", " kt", " Dallas", "]],\n", " />\n\n", " raising", "/router", "_game", "368", " CUR", "zens", ".es", " fontWeight", "(func", "notification", " '../../../", " blame", "\u3002\n\n\n\n", "anco", "980", "Identity", "follow", " arts", "xs", " officially", " Studio", " recommendations", " locale", " amateur", " Enable", " caps", ".End", "388", "-add", "_gshared", " CT", "Force", "\n \n", " orange", " lp", " answered", ".Grid", " dual", " strategic", " nobody", " fatal", "_est", "(el", [32, 236, 160], " Budd", "AIT", "_factor", "-one", " HAVE", '"\r\n\r\n', "760", "Prof", " \xE4r", "strings", " dirty", " Face", " Begin", " Bus", " wis", "\u5B57", " speaker", " carrier", " Om", " hadn", "Allow", "::__", " verb", " Complete", " Easy", " bills", " \n\n", "Vertical", " pron", " Define", " lookup", "variables", " pandas", "umes", " innoc", " setUp", " Championship", "artist", " CType", "Foundation", "\u0E48", " Setup", "428", " recipes", " UIColor", " Fight", " authorized", "_click", "990", "_success", "angan", " Mountain", " Doctor", " egg", " Medicine", "cles", "`.\n", "[int", "dashboard", " Appro", "-dr", " produces", " rental", " reload", "381", " arrival", "spot", " undert", "378", " equipped", " proved", " centers", " defines", "also", " opacity", " Unfortunately", " Illinois", " \u043D\u0435", " Temple", " Trail", " Kelly", " measurement", " separated", "-circle", "Hey", " READ", "igits", " ib", " MOD", "attery", "\u0430\u0437", " vend", "\u0435\u043D\u0442", " HttpClient", "359", "safe", "_ASS", "icit", " Construct", " Clo", " Six", "_TOKEN", "(block", " warned", "/*!", "!\n", " innovation", '_"', " );\r\n\r\n", " spots", " choosing", ".cs", " flexible", "UInt", "435", "930", " scratch", "-al", " festival", " outstanding", "================================================", "Mean", " Oregon", "symbol", ".account", "dney", "'''", '!",', "901", " particle", "\xC3", "[MAX", "IVER", "ERENCE", "NSMutable", " Columbia", "_\n\n", ".fr", " cogn", "VR", " Methods", " Made", " BR", " Else", " eggs", " swing", " Inv", " diseases", " firms", " lemma", "}`);\n", "lings", " gym", "uminum", ".Trim", "Mem", " criticism", "ibernate", "_TX", "ioni", " guidance", " repeatedly", " supplier", " painting", "864", ".Fragment", "edException", " wiring", " courts", "WEB", "\u6709", "\\.", "illance", " brows", " Pattern", "PLICATION", " Summer", "Chain", " cute", "mercial", " dil", " Franklin", " global", "INCLUDING", "history", " lst", "Qt", "SDL", "alia", "iere", "(...", " cin", "iffs", "velope", " Root", "cluster", "UserName", "igne", "()\n", " applying", " promised", " ox", "ncia", " Validation", "orts", "_cur", "elect", "eye", "(Data", " reporter", " Buff", "395", " sr", ' ";', "icky", " tempor", "SN", " resident", "pires", "ysical", " endorse", " Song", "isEmpty", "leet", "_util", " distingu", " Talk", " Mot", "(default", ".Arg", "gorithms", "_words", "immer", "_reset", "family", "WW", " savings", " \u201D", "_enable", "sidebar", "Running", " ali", " testim", " warnings", " Chem", " Exit", " founder", "pector", " rm", "_dataset", " Das", " han", "Getty", "\xE1l", " ny", " poverty", " resulted", ".by", " Visit", " obtaining", "/'.$", " \n", "shall", "_LEFT", "UIImage", "_Name", "have", " Nob", "lr", "-footer", " naked", " Garden", "\\Facades", " graduate", "417", " franchise", "plane", " contributions", " stringWith", " crypto", " movements", "athers", " lifetime", " communicate", "jar", " Fragment", "_IF", " Navy", " Figure", " simulation", "_stop", " reporters", " versus", "aja", " \u03B1", " governor", "ListItem", " sealed", ".Background", "edi", "ashing", " lip", " Ih", "merge", " nec", "024", "elocity", "ATEG", " seeds", " floating", "701", "_FA", "walk", " user", "_depth", " wage", "@app", "Nil", '(["', "(vector", " secretary", "461", " jPanel", "vez", "\xA0\xA0\xA0\xA0", "direction", " EP", " hunt", "396", "JsonProperty", " PORT", ']",', "\u0430\u043F", " Foreign", "panic", " trials", " Ale", " rural", "-value", "authorized", " Scotland", ".drop", " MT", [231, 177], "391", "rowth", "515", "FilePath", " recall", "ifle", " cel", " SELECT", "kn", "_case", " crop", "543", "sure", "pot", "ICS", " stem", " industries", "Put", " aber", "roadcast", "Icons", ')")\n', "\u6210\u529F", "gui", " assumed", " rx", "EA", [232, 167], "ELL", " dose", " ine", " deeper", "lider", " ordinary", " golf", "605", "_IMAGE", " NAME", "(module", " atom", " belt", " offices", "506", "beta", " philosophy", "(JSON", "-field", " introduce", " convenience", "optim", '>"\n', "athy", " employer", "quate", " edited", "Arguments", " Nations", "__)", " nose", " Sample", "')\n\n\n", " cake", ".getAttribute", "HD", "392", "Modified", "445", " predicted", "\u0144", "anie", "Sorry", "(doc", "wind", "ieve", " provisions", "ATER", "OTE", "MY", ".Autowired", " Bath", "423", ".Boolean", " backend", ".Mouse", "ateral", "paper", "Const", " VR", "_entity", "_CTRL", " Protection", " GM", " Study", " soup", "otime", "'use", ']"', "/users", "aug", " Hong", "_norm", "\u3068", " secre", "(Build", " Contract", "olas", " sauce", " aggressive", " racial", "character", "@@", " compile", " Void", "_rem", "_memory", "348", "kk", " mic", "Same", "Utility", " Html", " Xml", "Ready", " gall", " allegedly", " ", " Metal", " Personal", " borderRadius", "rxjs", "objects", " wanting", " bowl", "vendor", "offsetof", " Rs", " Rating", " rally", "_NODE", "418", " Mix", " advertis", "485", "667", " narrative", "sal", " mc", "SError", " fingers", " accompany", " tired", " stride", " gui", "elist", "Locale", " releases", "iking", " anger", ")))\n\n", "allest", "Summary", "(O", "(for", " basketball", " roads", " Install", " Fab", "itmap", "475", " ))\n", " intersection", "ighbor", " Bry", " HERE", "Software", "elfare", "acs", "622", " trailer", ".getClass", "chars", " regulation", " refers", " destruction", " continuous", " Austin", [233, 162], "akan", ".window", " Templates", " absence", ":n", " disorder", "flash", " delet", "boards", " ", "ROP", " ", " acqu", " lawsuit", " Reviews", " garage", "timer", " ej", " Rectangle", " flowers", "398", "ilst", " Instance", "Super", "det", "disposing", " ES", " IC", "vere", "Sk", "_channels", "puted", "/null", "nnen", "431", " Gallery", "_global", "Authentication", " Rank", " blocked", " calm", "market", " val", " aug", "period", " Constant", ' ?>">\n', " lobby", "pal", "379", " sink", "508", "iah", "\u0421", "urname", " conver", " investigate", "Christ", "Hub", " IND", " Ped", "uras", " url", " Tro", " preferences", " guaranteed", "`\n\n", " portions", " evalu", "'>;\n\n", ".AutoScaleMode", " cats", "465", " registry", "ulus", "FI", "payload", "-search", " staying", "acious", "Decoration", "Review", "Inf", "Keep", "itis", ",String", "Coord", " pero", "Sex", " Atlanta", "uesta", "Argb", ">*", "}_", "Footer", " employed", "_bound", "vide", ".func", "$scope", " spo", " Anal", "ounced", "around", " restriction", " shops", [229, 128], " Latin", "-col", " barely", " Euro", "Er", " faire", "_distance", "_unlock", "Quote", "IVATE", [32, 229, 136], " aimed", " Retrie", ".iter", " wrapped", " agreements", "strument", "(product", " studied", ".setValue", " ye", " Cache", "MBOL", " quarterback", " syntax", ".getElementsBy", ".version", "website", "Runner", "_single", "ativ", " Altern", " Beautiful", "rightarrow", " diversity", "plash", "(co", ".Fill", " typing", "387", "023", " clar", "Hit", "OO", "acco", "507", "worth", " scripts", " Muslims", " LL", "erving", "(boolean", " baseball", " CAN", "394", "044", "MAIL", "depend", " respective", " constexpr", ".*;\n\n", "']))\n", " yard", " identical", "ifecycle", "USH", "upiter", ".validate", "cli", "ISTER", "Indicator", "Fail", " democracy", ".var", " satisfied", "-------------", "encer", "hor", " rounds", "DAO", "oa", " flask", "=c", "[]\n", "/dist", " parte", " confirmation", "eron", "aware", "", " dependencies", " Videos", "-row", " **/\n", " nou", " hover", [230, 158], " nin", " USD", "Mac", "_Load", " outcomes", "_socket", " queries", "wm", "592", " hitting", "inux", "Mich", "udge", "ATAB", " vulnerable", [228, 190], " portfolio", ":YES", " map", "Bound", " iteration", "incess", " actors", " Qual", "_clean", "\u3011\u3010", "MSG", "Green", " Officer", " smoking", ">',", " Flo", "++;", "433", "olygon", " bulk", " drama", " exceptions", "osed", " +\r\n", " legacy", "CV", " contributed", " Terms", " bt", "434", " untuk", " alien", "===\n", " Vector", " ls", "Online", ".facebook", "numeric", "ockets", "Aut", "bury", "-redux", " Redistributions", "GLOBALS", "urrencies", " tons", "\u2019,", " \xEA", "(col", " Symbol", " stayed", " ML", " municip", " sexo", "Sen", "nr", " gains", " shortly", ".Menu", "\xFD", "KNOWN", " operators", "-V", " Patrick", "/add", "_CO", "iration", "(post", "Posts", "/_", " plug", " intellectual", " metab", " pregnancy", " Premier", "nm", " prediction", "606", " Ministry", "Three", "valuate", " Mini", "bu", "\u043E\u0437", "";\r\n', " Sav", ".Bold", " enables", " tmp", " manually", " Squ", "userid", ".function", ".cache", "LOPT", ".Services", "588", "ddit", "tim", ">>", "station", "lore", "atype", "ishop", "/****************************************************************", "521", "ComboBox", " vacation", " initiative", " defaultValue", "770", "concat", " Kh", "632", " Welcome", "izedName", "Migration", " gradient", "Hot", " hardly", "elo", " Students", " loose", "730", "atz", ".Send", "'/", " universal", " enterprise", " regex", " visitor", " Fly", "Seq", "\u0E19", " Visual", " libraries", "atoes", "Payment", "447", " pent", " gathered", "VRTX", " DM", "Split", " letting", "\u041D", "_errors", "epoch", "PARAM", "cu", "\u0441\u0442\u0432", "olutions", "Editing", "fonts", " allocated", " Based", "(Y", " Judge", " brothers", "FILES", "\xE7o", "531", "wb", "_PI", "'^", " sword", ".services", " nl", "Tim", "igg", " Moore", " cryptoc", "\u51FA", "_posts", "otate", "?'", "....\n\n", " kl", '="$', " decoration", "\u1EA1", " DIRECT", "GUI", ")=>{\n", " newsletter", " precis", "(point", " Equipment", "uty", " Dave", " participation", "uarios", "xit", ".As", "ETER", "orous", " shield", "[]>", "ilitary", ".origin", " promotion", "Unt", " ct", "TRA", "556", "ViewHolder", " sigma", "delta", "arehouse", "contract", "(Vector", "721", " compete", "/form", "/components", " nr", " Indones", " \u043E\u0442", " Volume", ".files", "(resp", "/models", " surf", "standard", "/o", " XCTAssert", "VICES", ".Code", "SED", " activate", "Delta", " limitation", "rij", " pregnant", ":^(", " sour", "pie", "803", " expense", "ication", " Large", " \xB1", " Bowl", "(models", "/N", "857", "Pa", ".reload", " wondering", "462", "Execution", " ", " Graphics", " Contin", "_job", " getName", " Magn", " DWORD", "mad", " nh", "features", '}");\n', "heets", "(train", "zn", " recruit", ".connection", " barrel", " steam", "_setting", " angular", "aneously", " bil", " Norm", "522", "(!$", "ibt", "%(", " posit", " Father", "intendo", "565", "Live", "041", " ports", " mej", " landing", "ponder", " cod", "_HEADER", ".Margin", " balls", " discussions", " blend", "Hex", " farmers", " maintaining", " \r\n", "syn", "[T", "rus", "439", "uffers", " contributors", "_sys", ".Debug", " constructed", "omes", "?id", "slider", " suppliers", "611", "scriber", "pes", "\u041E", '":\r\n', "\\Controller", "))\n\n\n", " lua", "Multi", "ENS", "Src", " petition", " slave", "looking", "VERT", " vector", "Special", "hh", "anne", " Niger", "/views", "zing", "endant", "(", "544", ".Product", "Forms", "NEW", "Pay", " boolean", "_contact", " Electric", "skip", " wur", " chronic", "_driver", "940", " Sab", " Ult", " Rad", "STATUS", " Lewis", "OB", " gifts", ".Rec", "TRUE", " intensity", "Marker", ".compare", "ffic", "Cookie", " Baby", " BigDecimal", "ilet", " HOLDERS", " Lady", " lung", " Alabama", " dess", "`);\n", " Builder", "_region", " neutral", "909", "Both", " hp", " horn", " segments", " EC", '"=>"', "(rec", " Pi", "GM", " laptop", "Scalar", "463", "isd", "-dialog", " Anderson", " mistakes", "708", " Han", "jes", "estination", "436", " promises", "bid", " Scient", "GIN", " Performance", "bage", ".users", "leading", " oral", "Graphics", "488", "_PTR", "518", "hang", " inev", "processing", "Factor", " NA", "$string", " grounds", ".SaveChanges", "clock", "941", "cripcion", " Newton", "gc", ".includes", " blast", " '-'", " puede", "469", ".Session", " grep", "_final", " Gay", " Give", "iri", "-star", " UIImage", "_epoch", "ubb", "enth", " elite", " campaigns", " Porno", "_assign", "Protocol", " Being", " Airport", " conventional", " Wat", " CI", "ETA", " Anthony", " tablet", "(format", " consistently", " Iowa", "474", " avatar", "027", ".cursor", "![", " hanging", "Her", "Such", "';\n\n\n", "orgeous", "()==", " viewModel", [32, 227, 131], " els", " Agent", "Fetch", "apor", " cx", "pread", " Pier", "oeff", "616", "Sn", "890", " Virtual", "Apr", ".White", "615", "_MOD", " Points", "\u5931", " genes", " vendor", " mainstream", "\n", "Filename", " sne", " Football", " rival", " disaster", "ionic", " Damage", ".Resource", "-en", " Types", "getString", "(board", " bol", "plain", "zym", "\u0E32", " scanner", "ilder", "_msgs", [230, 143], "(intent", " destruct", " bust", " Employ", "oni", " UIViewController", " odds", "earer", "Geometry", " yii", "_EXPORT", " Attack", " niet", " impression", " Gil", "_prob", "528", " CF", " Experience", "/plugins", ".Method", " beliefs", "Native", "_build", " vig", " ranks", "covered", "705", "such", "Guard", ".pack", "adder", "809", "ivia", "lng", " \u0432\u044B", "552", "Timestamp", "_now", " poker", " unc", " shapes", "-types", "_period", "pk", " veteran", " sono", " appointed", "overflow", ".driver", "_cat", "utt", "plant", "imb", " Accept", " concert", " node", " z", "?>\r\n", " banned", " ", " toxic", " disappe", "473", "\u021B", " grace", "ateful", "Reply", " Cruz", "486", " scrap", " keywords", "simp", " mortgage", " cyber", " Execute", " latitude", "ifu", ".COM", "dbo", " sorts", " Gas", "omial", ".Local", "Cells", ".Replace", "Strings", ".fit", " Third", '%",\n', ' {}".', " Sony", " [:", "585", " fallen", ".')\n", "inh", " MC", " redis", "Codes", " profiles", "hook", "Reducer", "_FUNC", " navigate", "strlen", " horm", [225, 158], " SR", ".boot", " digest", " header", ".findOne", [230, 129], "DbType", "nia", "_merge", " donne", "/Getty", "_CHAR", " bands", ".URL", "artial", " freq", " sist", "Ng", " rendering", "\\Core", "Widgets", " VA", " activists", "Ste", "=_", "alla", "Stamp", " loads", " xx", " Learning", ".Mvc", "uir", '("$', " connecting", "ReadOnly", "uru", " Eag", "BIT", "_DEL", [229, 167], "arrass", "external", " YOUR", " Brew", " Five", " resize", "igid", "eration", "653", " \u044D", "536", "\u52A0", "039", " Catch", "\u0641", " Leon", "amil", ".Body", "Clip", "/list", ".br", "EditText", " db", ".Game", "(BuildContext", "backend", ".Red", "facebook", "529", ".urls", "mr", "rolled", "-------", " intervention", " retirement", " Kit", " PRE", "UpperCase", " Socket", " :-", " studying", " Metro", "arded", " conversations", "Called", " examine", "ertificate", ".gz", "-responsive", " refund", "_network", "026", "allowed", "empt", " meals", "Categories", " traveling", " kg", " shame", " ", " explicitly", " mathematic", " Suite", " RGB", "******/", " mixture", "learning", ".template", "atts", "wx", " ctx", ".properties", " drinks", " Either", "setText", ".getData", ".zip", " reveals", ".\n", " ranked", "_impl", " Handles", " hosted", " updating", "album", [233, 157], " shader", "Editors", "-round", "[]{", " sep", " Hi", "TEM", "lookup", ".man", "_INPUT", " threatened", "_IMPORT", " drops", "ruit", "sid", "both", " Excel", " jer", "ordinary", "\u0435\u0439", "VIEW", "reply", " ):\n", "colors", "verified", "_Tr", "_parse", " congress", "617", "Promise", "ints", " Mother", ".Api", " Duration", " firstName", "inheritdoc", " Mars", " apr", "ODY", " visits", "631", " healing", "letters", ")));\r\n", "future", ".Framework", " kiss", " involve", " silent", "adows", " anybody", "sch", "690", " solely", "-img", " propri", " instruct", " licenses", " meth", " condem", " Domain", " Harris", " s\xE5", "CEPT", "Batch", "@extends", " CONTRIBUT", ".DataFrame", "472", "_packet", "recision", " focusing", ".ht", '__":\n', ":Get", " KC", " passage", "Segment", "_center", "-zA", "_BL", " convin", " classified", " NSMutable", "_ap", "tile", "Rectangle", "492", "(nums", "vens", " UIButton", " Feder", "amo", " outline", " Parser", [32, 226, 137], " Works", ".Schema", " engines", "637", "563", "_common", "542", "_old", " setContentView", " ///<", " BT", "fm", " divers", "_weights", "emark", " ACT", " proportion", "overlay", ".dirname", " Git", "_REFERENCE", "<>", "lb", "_rule", "\u8D25", " Putin", " sleeping", "():\r\n", " preserve", " parliament", " Looking", " picking", " Dispatch", " slip", [235, 147], " Lyn", "_signal", "configuration", " Pitt", "491", "aden", "procedure", " enthusi", "fight", " Consider", " torn", "Connected", ".cos", "_groups", " Think", " deliber", " resid", "working", ".columns", " Called", " eslint", '>",', "_DOWN", "hist", " Advanced", " rewards", "actors", " silence", "479", " myth", " neur", "519", " auction", ".GetString", "eks", "(project", "598", " msg", " output", " complaints", "551", ",S", " tbl", " ,\n\n", "riors", "ahren", " lawyers", "redux", "_symbol", "offee", "_RESULT", "(Name", "UTC", ".currentTime", " organis", ".arg", "533", " minim", "wick", " receives", "Balance", " speaks", " Days", " Below", "483", "tipo", "Present", " reserv", "hp", " rit", "_RIGHT", "--)", " chairman", "781", "DIS", " BOOST", " experiments", "687", "__);\n", " stamp", " fert", " fond", "Ter", "elve", "uren", "+i", "endency", " virtually", '..."', "\uFF5E", "925", "-cent", "_unique", " pricing", "mic", "RESH", " :::", " annotation", " Circle", "ongodb", "itas", " %(", "(component", " \u043E\u0431", "(port", "-hour", ".obj", "LBL", " jury", "GBT", " spy", " Professional", ' "";\n\n', " striking", " discrimination", " pays", "937", "lict", "entes", " throwing", " Plugin", "(def", " RuntimeException", " Migration", "599", " dic", "bag", "onia", " corruption", "704", "(Map", " prz", ".dto", " acquire", "StateToProps", " loving", "\u043E\u0436", "_pattern", " emotions", " publisher", "_be", " couples", "498", "oj", " Chart", " trop", ".tool", " establishment", " dol", "654", " tower", " lane", " Sydney", " filling", "claimed", "644", " dialogue", " convention", "booking", "parency", [230, 177], " Generic", "718", "\\Schema", "482", "618", " ranges", "/ch", " panels", " ruled", "\u751F", ".ts", "_sets", " cleanup", "Previous", " Animal", "607", "($(", " Ave", "ollar", "028", "_eval", " Name", "(tree", ' "]', "571", " duties", "='/", "Clicked", " differently", " Clark", " dit", "ologists", " synd", " sends", "-known", "kb", " Modal", "itative", " racing", " highlights", " Simon", " Captain", "\u4FE1", " CB", "contin", "aran", " physics", "retty", "etal", ".md", "axios", " speakers", " prep", " awarded", "\uC9C0", " Corn", " Nature", "UDIO", "737", " proj", "-pre", "[u", "Features", " isEqual", "Binary", "sig", " confusion", "546", "568", " Hat", " kt\xF3", ".configure", "MON", "494", "/edit", "_Add", ",true", "541", " cli", "ErrorMessage", "-loader", "Dimensions", "ultiply", " {!!", " SqlCommand", " spoken", " pics", " toy", "(Key", " Loop", "\u0628", "EATURE", "inction", "_setup", "wrapper", " tong", "cular", "Opt", ".Pl", '=",', "(length", "umn", " chrom", " sevent", " IllegalArgumentException", "478", " start", " begun", "CEPTION", "dataset", "825", " Failed", "cols", "459", " knee", "imore", ".splice", "shell", "iggers", " themes", "995", " DJ", " Assistant", "-$", "Maybe", " ordering", " Intelligence", " Massachusetts", " failing", "elson", "Great", "=i", ".rest", " invite", "-disable", ".GroupBox", "\u2019est", " tackle", "gv", "etter", " ),\r\n", "_rules", ".warn", "functions", " Christians", " backed", " slider", " enjoying", "nest", " hij", "_ms", "//*", "Annotations", " Variables", "", "cycle", " Bull", "paths", " unp", " viewDidLoad", "_Model", " assertTrue", " rated", "Decl", "verted", " Dat", "brew", " pointing", "Ms", " Pointer", ")'", "_non", "527", " SEC", " yeah", "gency", "initialize", "fly", "711", "[pos", ",g", "Tele", "034", " joke", " clause", ".findById", "enes", "(instance", "626", "\xA3", "915", " slic", "_home", " */}\n", "_pages", "(service", "905", "RP", " Among", ".getCurrent", "806", "\u30B9", " slee", "=[\n", "oler", " libert", " `\n", " wenn", "lated", " immune", "(Node", " Problem", " Abs", "logs", " ../", " ADC", ' }}">\n', ">');\n", "=b", " Wind", "lahoma", " allocate", "orian", " prescription", "-quality", " Mayor", "855", "inely", "endforeach", " Complex", "kom", "709", "TY", "790", "]].", ".Style", "_many", "','$", " barrier", " Fetch", " Marvel", " resist", "\u043E\u0433\u043E", "bidden", " Runnable", ":false", "899", " builds", " Stage", " dub", "empo", ".site", "558", ";\n\n\n\n", "994", " Denver", " revel", " triggered", " dice", "_fail", " gc", "833", "589", " X", " Throwable", "775", ".router", " Revolution", "\u0440\u0430", "_NON", "055", [159, 165], "578", " elder", " abroad", " \u0435", " Adult", "blr", "glyphicon", "613", " promoting", " iz", " Solid", "645", "_loader", "early", ".enabled", "-edit", " UL", "_play", " Interrupt", " advantages", "ucle", " mechanical", ".tableLayoutPanel", " Working", " anonymous", "Rating", "igious", "_phone", ".addActionListener", " fran", "unden", " *)&", "_bool", "ulative", " cone", " Mult", " m\xF6", " Forward", "]):\n", " convinced", "acted", "643", "\u3053", " Configure", " ceiling", "Der", " passengers", "Groups", " soccer", "/W", "aviors", "swith", " Zone", ".Options", " Mom", "ieder", "Arrays", " treatments", " protecting", "fac", " pickle", "ButtonItem", "713", " blocking", "strar", "\xF2", " Export", " threw", "otta", " BASE", ".ws", ".LEADING", "orderBy", "_delay", " Pu", ".dll", " Choose", "992", "Police", " BEGIN", "boxes", " diamond", ",l", " ", " curious", "624", "tv", " erotische", "ackages", " Set", "Tick", ".border", "staticmethod", " cher", "invoice", " cru", " defect", "_metadata", "relation", "ikan", "[N", "(Qt", "(Base", "\u606F", "beat", " Empty", " o", "_shift", " regret", "722", "Those", "Cent", " Portug", " Islands", " TIME", "Management", "996", "-sp", "539", "\xEAme", " notion", "unifu", "PK", "826", "\u884C", " CURLOPT", '\\"\\', "UV", [231, 186], "dra", "cou", "=`", " Destroy", "rp", ".cancel", "GG", "runtime", " Vue", " progressive", "/services", " runner", "_FRAME", ".ToolStripMenuItem", " ','", "delay", "=utf", " screening", " pulling", "omas", " anth", "-new", "/local", " iPad", " twitter", " dying", " heaven", " UInt", " Senator", " presum", " Walker", " overcome", "etection", " embarrass", "China", "639", "Include", "ROLL", " dataType", "David", "\u0E23", "lop", "-month", " scar", " Safe", " ****************************************************************", " accessories", " ramp", "_USE", " contrad", "))]\n", " prest", " HR", " Rap", " usize", " capability", " cort", "-next", "077", "627", " burden", "822", "_reader", " @@", "regular", " Ka", "036", "MAN", " astr", " '')\n", " fed", " parsing", " Years", " broker", '":{"', " akt", "Inventory", "abeled", " argparse", "*******\n", "versation", " cord", " Ti", " hopefully", " ah", "verb", " stolen", ".Entry", " expecting", "Orientation", " powered", " persist", " ", "']);", "')),\n", " Cash", " item", "818", "grades", "ropol", "basic", ' ");\r\n', " awards", "(range", "-all", " IBOutlet", " Indeed", "----------------------------------------------------------------------------", " stomach", " flower", " sew", "_times", "avis", "QString", " Routes", "_prot", " comedy", " logout", " wooden", " poster", "piece", ".Join", " Pok", "celona", "mutex", ";\r\n\r\n\r\n", " strikes", "787", "Loaded", ")arg", "esa", "United", "Ep", "PELL", "807", " Atlantic", "ullet", "652", "apple", " settled", "acon", " printer", " GC", "\u5B9A", " rendered", ",\u2019", "heit", "social", ".ge", "714", " Rick", " Utah", "got", "onical", " Scroll", " Sciences", " jug", " ampl", "enti", "LEFT", " tabs", " enormous", ".getKey", "locate", ".EX", ".storage", ".We", " toast", " Additionally", "882", " NOW", "547", "_UPDATE", " transferred", "tha", ".Display", "_ui", "IDEO", " meaningful", " Moscow", ",this", " Victoria", "\u6539", " \u041F", ".stack", " Barn", "paredStatement", ":string", " bij", " STATE", " employers", " input", "(|", " lex", "invoke", " num", "++,", "atial", "orses", " fork", "_txt", " Antonio", " (<", "averse", " devast", "\u3000", ".Dec", " Gard", "/ui", ".%", "tri", " rolled", "ValuePair", "itten", " Ther", " vrou", " Flow", " Finance", " Comb", "HC", ".setVisible", "isl", " pk", "773", " upset", "(raw", " Vice", "eatures", " Lang", "029", "Looking", "767", " AST", " trips", " Justin", "browser", `="'.$`, ".vertices", "821", "-co", "}/{", " ?,", " Domin", " Belg", '"<', " suppose", "addy", " walks", "688", "ERRU", "_filters", "Preferred", "scene", "\u0435\u0441", " Affairs", ' "#{', " onSubmit", " stocks", "/view", "gree", "-get", "903", "hit", "Jo", ".getC", "725", "Initialized", "\u0442\u0438", "cuts", "(Type", " Agreement", " Vietnam", " /*!", " pizza", "-view", "_em", " lhs", " muy", " Ident", " Friends", "061", " abund", "_AD", ".timestamp", "-'", " duplicate", " hunting", " regulatory", "iao", "amous", " Entertainment", "[A", "iatric", "_CLIENT", " Kids", "/pkg", "Break", ")));\n\n", " Shape", " relating", "Interrupt", "ableOpacity", "embre", " mystery", " journalists", "ritable", ".Link", " stopping", "CRET", ".DB", " popularity", " gew", " impr", "setValue", "FLAG", " max", " bake", "wy", " Economic", " encontr", " fname", "/de", "Rank", " bugs", ".sm", " median", "DOWN", " Sure", "AtIndex", " Dick", " (__", ".delta", "Fr", " suggesting", " RecyclerView", ",e", "START", "/****************************************************************************", "xford", " receipt", "CLAIM", "readonly", "968", " engaging", "619", "Ca", "asma", " ensuring", "English", " Vancouver", "hyth", " purchasing", " PI", ".word", "(sp", ".home", ":def", " gig", "574", "671", " Ve", "forum", " Mitch", "Bay", "_FL", "651", " soll", "577", "_columns", " minority", "bird", " handed", "SSL", "STAT", " nervous", [131, 189], " filePath", "CREATE", "Aw", " pens", "835", "seed", " Compute", "olk", "594", " Asset", "reach", "'),\r\n", "navigation", "LF", "/util", " Pub", [32, 226, 148], "cion", "##\n", "072", "III", "TagName", " amid", "permission", "ifiable", "xFFFFFFFF", "\u043D\u0438", ".Buffer", "_irq", "dark", " retval", ".fire", "production", ".listen", " Weather", " buyers", ".ne", "erp", " Pent", "699", " welfare", " pageSize", " Stadium", "erta", " lev", "ampa", "Pager", "665", " charging", " Netflix", "|null", "_random", ".xpath", " stere", " ISIS", "ponses", "(loc", "566", "eyond", " Official", "657", " Maryland", "DataType", "_par", "{},", " Enjoy", "727", "_SHIFT", " Awards", "_ENTRY", " seemingly", "enticate", " hearts", "583", "_;\n\n", " HIV", " individ", " Flag", "_ctrl", " Callback", ",z", " GPU", " obj", " Phoenix", " BUS", "907", " rubber", "_AUTH", " Solutions", "(location", "Variables", ".setEnabled", "_high", "WO", "Gesture", " retry", " objectForKey", "alloween", " mos", " Cele", " ikke", "(cell", " MODE", "rena", " describing", "641", " phi", " rd", " deserve", " wheels", "\u5E02", " critics", "755", "Namespace", " Fra", " \n\n\n\n", " alla", " requiring", "\u671F", "utation", " delayed", " administrative", " bay", ".hidden", "Tex", "051", " boundaries", " ]);\n\n", " Following", "~/", "Fi", "_conv", "_TITLE", " desde", "ICollectionView", "Alias", " bite", "patient", "_COMMAND", "Completed", " elif", "(<", "Business", " Pool", " pursue", " Ban", "_steps", "_DECL", "umble", " combo", " Layer", ".xr", " dup", "---------", "628", " modifier", "rob", "rez", "696", " athletes", "Used", "wear", "815", " legitimate", ' "\n\n', " hv", "Std", "037", " Hold", " surviv", " Alliance", " Early", "778", "Behavior", "(font", "/libs", " rectangle", " singer", " amp", "EqualTo", ' "."', " girlfriend", [229, 177], "linear", "observ", " pi\xF9", " complement", "WithValue", "(password", "take", "Blank", " Compar", `'",`, "_policy", "mongoose", "_FAILED", ".report", "Ratio", ".PerformLayout", "747", "usable", "mers", "_render", "PEED", "772", " lesb", " E", "_tool", " ladies", "908", "\u043E\u0441", "))))\n", ";;;;", ".dot", " nest", "peak", "ukkit", "eca", "_SW", " &(", " Oklahoma", " banking", "569", " Nintendo", "752", " reproduce", "_elements", "_mac", "proxy", " remarkable", "}/${", " outs", ".hasNext", "MODE", "658", " anime", ".conn", "Unique", "Dom", " importantly", "itty", " juice", "Tw", " Partners", " attacking", " portable", "amiento", ".PictureBox", ".gen", " optimal", "582", " recre", " journalist", " Extract", " Moreover", " marginTop", ".Ap", " firing", "NaN", " template", "\u0430\u0434", ".En", " defence", " Tel", "ilen", "jan", "=data", " Url", " Reuters", "(total", " Fifth", " essays", " interpretation", " charity", " Rules", " subsection", "styled", "azer", "lags", "LIST", " uploaded", " trash", " registr", " seller", ">';\r\n", " startTime", [231, 153], "sy", "(HttpServletRequest", " trap", "GC", " embedded", " surrounded", "816", "imits", "TX", "ylinder", "685", " Fal", " sentences", " Ja", "IFICATION", "weapon", "ovation", " coat", " interpol", " lips", " Ky", " vectors", "_am", " intake", ".world", " inbox", " MAC", "_ab", "(nameof", "633", " entert", " gathering", " SIM", "++.", "nya", "'}}", " UPDATE", " pac", "(html", " Sant", "iating", " Ideas", " spray", " Hart", " verification", "adesh", "/modules", " Mind", " SizedBox", " shelter", " heroes", "atty", " certified", "sj", " \xEAtre", "\u0142o", " publishing", " Malays", ".getUser", " Provider", " LinkedList", " Bor", "ROUND", "did", "tain", "pire", " Jenn", "tel", "ande", "757", "_front", " McG", "TestMethod", "\u0E2D", " occasionally", " Wales", " exercises", " \u0412", "045", "-plus", " validator", " prayer", "LATED", "_author", " labour", "++\n", "-equiv", " GPL", " facebook", "simple", "gly", "Processor", "ipy", "744", " *>", "648", " cleared", " Push", "858", " penis", "Structure", "lij", " Morgan", " handful", '".\n', "984", "|\\", " ********************************", " Aqu", "584", "_IC", ".loads", " meter", " Marine", "::{", " TS", "776", " Arrays", ".Title", "GRAM", "termin", " coinc", "Else", "_states", "-run", "members", "782", "astro", "066", " onPress", " beings", " abandoned", " taxp", "owners", ".mode", " diagnosis", " _\n", " Knight", " A", " observe", "),'", "823", '!")\n', " Para", " variation", "(False", " Anti", " gri", " homeless", "?v", " bez", ".Server", "release", " Patri", " chars", " ranking", "activation", "581", " wides", "qr", ".Sql", "acular", " Bot", "_sync", " happiness", " volunteers", "877", " sits", "/<", "[e", "(fileName", " capac", "832", " Maria", "father", " gram", "*i", " caso", "_draw", " Raw", " Iterator", "664", " Padding", "924", "PD", "BOX", " SPECIAL", " fecha", " vide", " Leader", "\u4EE5", '$(".', " diameter", " mild", "745", " rocks", "appings", "048", "directory", "557", ".flush", " Jess", "UNIT", " Pear", " mandatory", "Sur", "qt", " streams", " cooperation", " Sac", " cheaper", " ch", "animation", "fare", "(height", "(True", "NY", " wrest", " polls", " encountered", " Marketable", "_PASSWORD", "716", "_SELECT", " Arabia", "_clock", " voy", " \u0438\u0437", " stir", "isible", "-effect", ".created", " toys", " Tradable", " rust", " strcpy", "_timestamp", " talented", ",null", " Jobs", " Portland", " weakness", "Throw", " Angel", "\u4FEE", "754", " uncert", "\uFF09\n", " \uC774", "Which", " [-]:", "Something", " convicted", "kle", "edium", " branches", " bases", [231, 174], " complexity", " Fig", ".reshape", "$db", "736", "_CONST", " Tes", ".runtime", " deny", " BSD", " kr", "hatt", " Static", " universities", "Replace", " drove", " adoles", "_plugin", " LGBT", " tex", "duction", "751", "799", "EDI", " Ted", "_URI", " reception", "arten", ".Single", "rice", "scious", "843", "_bg", " wages", " Servlet", "UILayout", " formatted", ".Mod", "'\n", "-fold", [230, 138], " Better", ' "\\<', "spacing", " furnished", "913", "oser", "]}\n", ' $"', "pull", ".Post", "919", "(ip", [151, 143], ".front", "nte", " FM", "guid", "844", " negotiations", "agonal", "934", " tremend", "ungeon", "Adv", "carousel", "\xDFe", "_DESC", " hammer", "\u1EAD", " \n\n", "-core", "-service", " corners", " SF", "pred", ">A", " JLabel", " romantic", " testimony", "osc", " Generation", "asures", "_internal", " prints", " ])\n", " Cleveland", "repo", "Disc", "677", "762", ' ">\n', "\uFFFD\uFFFD\uFFFD\uFFFD", " nearest", "591", "_tb", "(require", "EOF", "-child", " budd", ".XtraEditors", "alties", "723", '\\":\\"', "Words", "917", " locally", " purchases", "695", "Drawer", "extract", " execut", "}'.", "userdata", " focuses", "-minute", "764", " Publish", "ogo", " mountains", "Bot", "}>{", " tension", "rod", "mesh", " transformed", ",R", "()}\n", ".long", " gorgeous", " Schedule", " oldest", " subprocess", "(IN", "yect", " Cooper", "arness", " Monitor", ".part", "972", " NBC", "668", " cotton", " hol", "726", " rgba", " Bio", "Continue", "Pod", " participating", "clusions", "(ByVal", "734", "\xEC", " HOW", "_setopt", " accompanying", "091", "aton", " /\\", " Authentication", "i\xE9n", " Barack", "/*.", " eager", " Cancel", "$", "OLEAN", "OKIE", "IBILITY", "UAGE", " Survey", "071", " resign", "wing", " secrets", " chips", "JSONObject", "Desktop", "596", "_SYMBOL", "(resource", " \n", " newest", "uli", " desert", " dip", " Pow", " equation", " possibilities", " Fed", "osph", " [%", " bubble", "etherlands", "793", " cement", ".auto", "_AN", "\u2019.", "selection", " Bond", "988", "Den", "-O", ".getType", "896", ".Window", "pres", " swinger", '"})\n', " pip", " mice", " compound", "-plugin", "iko", " centuries", "icular", "-inline", " key", ">\\<", "ENSION", " [\r\n", " precisely", " \xE9t\xE9", " Past", " Cambridge", "-full", " analyze", " Steven", " nem", "due", "oren", " muscles", "ijing", "852", "/-", " Kennedy", "597", "RM", "ossible", " actress", " dolor", "914", "\u5F55", "Need", ".toggle", " Race", "wers", ".material", " Due", " Pel", "#print", " independence", "exus", "Shadow", " encoder", "(level", " Swift", ".doc", "_selection", "952", " serialVersionUID", "945", "Labels", " performances", ".Tag", " NHL", "izen", "/UIKit", "991", "_CONTROL", " earnings", "975", " Alt", "_HANDLE", "Ctx", " persu", " tran", [231, 168], "_CHANNEL", " satisfaction", " GP", "769", "iox", "mitt", "lando", " pig", "inals", "\xEAncia", "731", "Surface", " UUID", " beneficial", " sequences", " memset", " magical", "\xAB", " worn", "ASC", "popup", "COMP", "_before", "eness", "Ui", "Les", ".require", ".Serializable", "addGap", " authorization", "085", ".pyplot", "urray", "latitude", "845", "frames", "ajs", " compass", " observations", "_sup", ".environ", " triple", " Ruby", " drain", "_FILTER", "San", "UMP", "NullException", " Gab", "owe", " Turkish", "_sequence", " Grant", "uela", " wo", " cube", "iq", " disorders", " extraordinary", " ctrl", " Seq", "entr", "865", " sanctions", "949", "utsch", "Reports", " inherit", "Period", " photography", " Framework", " specialist", " ?\n\n", "_selected", ".Player", " allocation", "(account", " structural", "vable", "-offset", ".AppCompatActivity", "\u0430\u043C", ".AddWithValue", " icons", " shutdown", "_low", " Compare", " Ce", "=head", "lam", ".predict", "_DEC", " Sleep", " Gratis", " suggestion", " DEL", "caff", "avirus", "Nothing", [158, 139], " widespread", " mechanisms", " textAlign", "occup", " Rail", ":NS", " fiber", " mk", " vintage", "-long", ".reduce", ".Entities", "(record", " pleasant", "FRING", ".Cells", "OTT", " elseif", "649", "724", "_confirm", " ViewGroup", "sym", " pray", " suspected", "Contains", "983", " borders", " componentDid", "ASSERT", " infinite", "-order", " hello", " Grade", ".currentTimeMillis", "apolis", "zh", " Object", ":\\\\", "HO", "valuation", " vocab", "719", " coupon", "atabases", ".GetType", "Learn", "792", ']="', " Gary", "otive", " ash", " bib", "XXXX", " balanced", "VALUE", " Nat", "_Ad", "<", " fool", " esk", ".Null", " Dies", "_OUTPUT", "_TYPED", " painted", "673", "735", " sophistic", " Bear", "*n", "_PACK", " delivering", " COUNT", "\u5355", " jeg", "-car", "fname", " ranging", "848", " Neg", "/******/", " CHAR", " ultra", "Grad", "=t", " judges", " Dise", "anners", "985", "891", "861", " scal", "_cal", " CONNECTION", "_embed", "(fn", " Craft", "047", " Pas", '")->', ".convert", ".resource", " STATUS", "\xF4ng", " Tit", " classroom", " Architect", " Kings", " steady", "/*!\n", " Gene", ')";\n', "icia", "stan", " Construction", "umper", "951", "wc", " CBS", "inging", "-party", "(driver", "MARK", "082", " nested", "eward", " dependency", " males", "928", " ONE", " Production", "][$", [227, 131, 188, 227, 131], "_LOAD", " Bol", "elry", "831", [160, 233, 153, 164], " Require", " placing", "xxx", "CALE", " thumb", "824", "Choose", " prototype", "VOID", " lesbian", "741", " traits", "Sharp", " consume", "Truth", " actionPerformed", " Environmental", " Dean", " estado", "same", " numeric", " transit", ".Email", "-side", "_RUN", " Village", "_OPEN", [232, 166], ".rem", "-warning", "anya", "PropertyChanged", " (!_", "(check", "ilia", " Soft", "steps", " Madrid", "MemoryWarning", " handlers", " experiencing", " inspect", "buttons", "ReceiveMemoryWarning", "chemy", "Links", " urllib", ".SystemColors", " Eigen", " punishment", ":UIControl", "bara", "-set", " }\r\n\r\n\r\n", " tolerance", " interfaces", ".redirect", "ighbors", "csrf", "_background", ".Utils", "_HT", "692", " Interest", "imos", " grants", "083", " examined", "\u0414", " cf", "forge", "backs", " Objects", "_sent", ".entry", " THEN", "ellido", "cia", ",res", "659", "681", "/stdc", ".nd", "(Int", " Authors", " AppCompatActivity", "'{", " medi", "Music", "igm", "ceipt", " auss", " targeting", " Keys", "hn", ":]\n", " mineral", "\xEE", ".ca", "761", "omed", " sheets", " camb", " deadly", ".inject", "(unit", " Selection", ".gms", "(connection", ' $("', "\xE9mon", " Currently", "pte", "_paths", "847", "leaf", " implications", "posal", "\u4F4D", "[/", "ancia", [233, 155], "mul", "cie", " geile", "679", "imals", "UIView", " surre", "serialize", "ISO", " arbitrary", " sockaddr", ".fn", " Merc", " casting", "KeyDown", " newValue", "opens", "717", "Todo", " flexibility", " ", "Velocity", "\xFAn", "rowing", " computed", "`)\n", "statement", " ri", "_cart", "Low", "transfer", ".nav", " grave", " Door", " alert", "691", "698", ".subscribe", "-profile", " base", " \u2212", "__\n\n", " engineers", " explosion", " dari", "682", " Log", "onal", " isolated", "{i", " Msg", "Future", " racist", "-wrap", " Vers", "borg", "ISION", [32, 209, 128, 208, 176, 208], " Yan", "836", "initWith", " nomin", "(empty", "\xEDn", "\u30A4", " width", " chamber", "/ajax", "EMP", "093", " neces", "ivos", "logic", "*)&", "cripts", "976", "RowAt", "053", "iblings", " ears", " computing", " maker", " Neither", "breadcrumb", " serialize", " Within", " dell", "_TRACE", "092", "=a", " wishes", "-inch", " Dor", " innocent", " Dol", " intens", "forced", "054", " BIT", " photographs", " casa", " Len", "\\Framework", ".Simple", " dear", "895", ")/(", "ippi", " owns", "Players", " proposals", ".pi", "usalem", "Damage", " calories", " Creative", " [$", " //\r\n", "786", "AndView", "\xE8me", ".custom", "_factory", "commands", "_look", " strcmp", "YN", "aired", " audit", "\u043E\u0441\u0442", " Reverse", "ropriate", "etics", "'; @@ -58759,14 +58788,352 @@ var cl100k_base_default = bpe2; var api2 = GptEncoding.getEncodingApi("cl100k_base", () => cl100k_base_default); var { decode: decode2, decodeAsyncGenerator: decodeAsyncGenerator2, decodeGenerator: decodeGenerator2, encode: encode3, encodeGenerator: encodeGenerator2, isWithinTokenLimit: isWithinTokenLimit2, countTokens: countTokens2, encodeChat: encodeChat2, encodeChatGenerator: encodeChatGenerator2, vocabularySize: vocabularySize2, setMergeCacheSize: setMergeCacheSize2, clearMergeCache: clearMergeCache2, estimateCost: estimateCost3 } = api2; +// ../../node_modules/mistral-tokenizer-js/mistral-tokenizer.js +var mistralTokenizer = {}; +if (typeof window !== "undefined") { + window.mistralTokenizer = mistralTokenizer; +} +var base64decode = function(encodedString) { + return atob(encodedString); +}; +var getMergeIdentifierString = function(firstTokenId, secondTokenId) { + return mistralTokenizer.vocabById[firstTokenId] + " " + mistralTokenizer.vocabById[secondTokenId]; +}; +var decompressMerges = function(merges_binary2) { + const byteArrayString = base64decode(merges_binary2); + const byteArray = new Uint8Array(byteArrayString.length); + for (let i = 0; i < byteArrayString.length; i++) { + byteArray[i] = byteArrayString.charCodeAt(i); + } + const tokenIds = []; + for (let i = 0; i < byteArray.length; i += 2) { + const byte1 = byteArray[i]; + const byte2 = byteArray[i + 1]; + const tokenId = byte1 + (byte2 << 8); + tokenIds.push(tokenId); + } + const merges = /* @__PURE__ */ new Map(); + for (let i = 0; i < tokenIds.length; i += 2) { + const id1 = tokenIds[i]; + const id2 = tokenIds[i + 1]; + const mergeIdentifierString = getMergeIdentifierString(id1, id2); + merges.set(mergeIdentifierString, i + 1); + } + return merges; +}; +var decodeVocabulary = function(vocab_base642) { + const byteArray = Uint8Array.from(base64decode(vocab_base642), (c) => c.charCodeAt(0)); + const textDecoder2 = new TextDecoder("utf-8"); + return textDecoder2.decode(byteArray).split("\n"); +}; +var utf8ByteToHex = (c) => { + const hexValue = c.toString(16).toUpperCase().padStart(2, "0"); + return `<0x${hexValue}>`; +}; +var hexToUtf8Byte = (hex) => { + const strippedHex = hex.replace(/<0x|>/g, ""); + return parseInt(strippedHex, 16); +}; +var utf8Encoder = new TextEncoder(); +var utf8Decoder = new TextDecoder("utf-8"); +var PriorityQueue = class { + // PriorityQueue implementation is copied from https://stackoverflow.com/a/42919752 with minor refactoring + constructor(comparator = (a, b) => a > b) { + this._heap = []; + this._comparator = comparator; + } + size() { + return this._heap.length; + } + isEmpty() { + return this.size() == 0; + } + peek() { + return this._heap[0]; + } + push(...values) { + values.forEach((value) => { + this._heap.push(value); + this._siftUp(); + }); + return this.size(); + } + pop() { + const poppedValue = this.peek(); + const bottom = this.size() - 1; + if (bottom > 0) { + this._swap(0, bottom); + } + this._heap.pop(); + this._siftDown(); + return poppedValue; + } + replace(value) { + const replacedValue = this.peek(); + this._heap[0] = value; + this._siftDown(); + return replacedValue; + } + _parent(i) { + return (i + 1 >>> 1) - 1; + } + _left(i) { + return (i << 1) + 1; + } + _right(i) { + return i + 1 << 1; + } + _greater(i, j) { + return this._comparator(this._heap[i], this._heap[j]); + } + _swap(i, j) { + [this._heap[i], this._heap[j]] = [this._heap[j], this._heap[i]]; + } + _siftUp() { + let node = this.size() - 1; + while (node > 0 && this._greater(node, this._parent(node))) { + this._swap(node, this._parent(node)); + node = this._parent(node); + } + } + _siftDown() { + let node = 0; + while (this._left(node) < this.size() && this._greater(this._left(node), node) || this._right(node) < this.size() && this._greater(this._right(node), node)) { + let maxChild = this._right(node) < this.size() && this._greater(this._right(node), this._left(node)) ? this._right(node) : this._left(node); + this._swap(node, maxChild); + node = maxChild; + } + } +}; +var mapCharactersToTokenIds = (prompt, add_bos_token, add_preceding_space) => { + const tokenIds = []; + if (add_bos_token) { + tokenIds.push(1); + } + if (add_preceding_space) { + prompt = " " + prompt; + } + const promptAltered = prompt.replaceAll(" ", mistralTokenizer.vocabById[28705]); + const charArray = Array.from(promptAltered); + for (let i = 0; i < charArray.length; i++) { + const c = charArray[i]; + if (mistralTokenizer.vocabByString.has(c)) { + tokenIds.push(mistralTokenizer.vocabByString.get(c)); + } else { + const bytes = utf8Encoder.encode(c); + for (let j = 0; j < bytes.length; j++) { + const hex = mistralTokenizer.vocabByString.get(utf8ByteToHex(bytes[j])); + tokenIds.push(hex); + if (!(hex >= 0)) { + console.log("Encountered unknown character " + c + " (partial UTF-8 byte " + bytes[j] + " + hex + " + utf8ByteToHex(bytes[j]) + ")"); + tokenIds[tokenIds.length - 1] = 0; + } + } + } + } + return tokenIds; +}; +var encode4 = (prompt, add_bos_token = true, add_preceding_space = true, log_performance = false) => { + let startTime = null; + if (log_performance) { + startTime = performance.now(); + } + if (!mistralTokenizer.vocabById || !mistralTokenizer.vocabByString || !mistralTokenizer.merges) { + console.log("Tokenizer not initialized properly!"); + return; + } + if (prompt.length === 0) { + return []; + } + const tokenIds = mapCharactersToTokenIds(prompt, add_bos_token, add_preceding_space); + const mergeQueue = new PriorityQueue((a, b) => { + return a.mergePrio < b.mergePrio; + }); + const addToMergeQueue = function(leftNode) { + const mergeIdentifierString = getMergeIdentifierString(leftNode.tokenId, leftNode.next.tokenId); + const mergePrio = mistralTokenizer.merges.get(mergeIdentifierString) + leftNode.origPos / prompt.length; + if (mergePrio) { + leftNode.mergePrio = mergePrio; + leftNode.mergeToString = mergeIdentifierString.replace(" ", ""); + mergeQueue.push(leftNode); + } + }; + let firstTokenNode = { + origPos: 0, + tokenId: tokenIds[0], + prev: null, + next: null + }; + let prevTokenNode = firstTokenNode; + for (let i = 1; i < tokenIds.length; i++) { + const currTokenNode = { + origPos: i, + tokenId: tokenIds[i], + prev: prevTokenNode, + next: null + }; + prevTokenNode.next = currTokenNode; + addToMergeQueue(prevTokenNode); + prevTokenNode = currTokenNode; + } + while (!mergeQueue.isEmpty()) { + const leftOfMerge = mergeQueue.pop(); + if (leftOfMerge.deleted) continue; + if (!leftOfMerge.next) continue; + if (leftOfMerge.next.deleted) continue; + leftOfMerge.deleted = true; + leftOfMerge.next.deleted = true; + if (leftOfMerge.prev) { + const oldPrev = leftOfMerge.prev; + oldPrev.deleted = true; + const newPrev = { + origPos: oldPrev.origPos, + tokenId: oldPrev.tokenId, + prev: oldPrev.prev, + next: oldPrev.next + }; + leftOfMerge.prev = newPrev; + if (newPrev.prev) { + newPrev.prev.next = newPrev; + } else { + firstTokenNode = newPrev; + } + } + const resultOfMerge = { + origPos: leftOfMerge.origPos, + tokenId: mistralTokenizer.vocabByString.get(leftOfMerge.mergeToString), + prev: leftOfMerge.prev, + next: leftOfMerge.next.next + }; + if (resultOfMerge.prev) { + resultOfMerge.prev.next = resultOfMerge; + resultOfMerge.prev; + addToMergeQueue(resultOfMerge.prev); + } else { + firstTokenNode = resultOfMerge; + } + if (resultOfMerge.next) { + resultOfMerge.next.prev = resultOfMerge; + addToMergeQueue(resultOfMerge); + } + } + const mergedTokenIds = []; + for (let currTokenNode = firstTokenNode; currTokenNode !== null; currTokenNode = currTokenNode.next) { + mergedTokenIds.push(currTokenNode.tokenId); + } + if (log_performance) { + const endTime = performance.now(); + console.log("Tokenizer running time: " + (endTime - startTime) + " milliseconds"); + } + return mergedTokenIds; +}; +var decode3 = function(tokenIds, add_bos_token = true, add_preceding_space = true) { + const utf8byteVals = []; + const startIndex = add_bos_token ? 1 : 0; + for (let i = startIndex; i < tokenIds.length; i++) { + const tokenId = tokenIds[i]; + const tokenString = mistralTokenizer.vocabById[tokenId]; + if (tokenString.startsWith("<0x") && tokenString.endsWith(">")) { + const utf8byte = hexToUtf8Byte(tokenString); + utf8byteVals.push(utf8byte); + } else { + const utf8bytes = utf8Encoder.encode(tokenString); + utf8bytes.forEach((utf8Byte) => utf8byteVals.push(utf8Byte)); + } + } + const uint8Array = new Uint8Array(utf8byteVals); + const decodedString = utf8Decoder.decode(uint8Array); + const spacesFixed = decodedString.replaceAll(mistralTokenizer.vocabById[28705], " "); + return add_preceding_space ? spacesFixed.slice(1) : spacesFixed; +}; +function runTests() { + function isEqual(arr1, arr2) { + return arr1.length === arr2.length && arr1.every(function(value, index) { + return value === arr2[index]; + }); + } + function testCase(inputString, expectedTokenIds) { + const actualTokens = encode4(inputString, true, true, true); + if (!isEqual(actualTokens, expectedTokenIds)) { + throw `Test failed. mistral Tokenizer Encoder returned unexpected result: expected tokenize(${inputString}) === ${expectedTokenIds}, actual was: ${actualTokens}`; + } + if (inputString !== decode3(actualTokens)) { + throw `Test failed. mistral Tokenizer Decoder returned unexpected result: expected decode(${actualTokens}) === ${inputString}, actual was: ${decode3(actualTokens)}`; + } + } + testCase("grabbed", [1, 13300]); + testCase(" grabbed", [1, 28705, 13300]); + testCase(" grabbed", [1, 17422, 13300]); + testCase("\n", [1, 28705, 13]); + testCase(" \n", [1, 259, 13]); + testCase(" tabs out here", [1, 28705, 12, 24856, 12, 12, 12, 12, 406, 1236]); + testCase("ax\n####\nboo", [1, 6056, 13, 2e3, 13, 1798, 28709]); + testCase("\u9547", [1, 28705, 29780]); + testCase("\u{1F999}", [1, 28705, 243, 162, 169, 156]); + testCase("\u{1F999}\uA64A", [1, 28705, 243, 162, 169, 156, 237, 156, 141]); + testCase("\uA64A\u{1F999}", [1, 28705, 237, 156, 141, 243, 162, 169, 156]); + testCase( + 'The llama (/\u02C8l\u0251\u02D0m\u0259/; \u{1F999}Spanish pronunciation: [\u02C8\u028Eama]) (Lama glama) is a domesticated South American camelid, widely used as a meat and pack animal by Andean cultures since the Pre-Columbian era. Llamas are social animals and live with others as a herd. Their wool is soft and contains only a small amount of lanolin.[2] Llamas can learn simple tasks after a few repetitions. When using a pack, they can carry about 25 to 30% of their body weight for 8 to 13 km (5\u20138 miles).[3] The name llama (in the past also spelled "lama" or "glama") was adopted by European settlers from native Peruvians.[4] The ancestors of llamas are thought to have originated from the Great Plains of North America about 40 million years ago, and subsequently migrated to South America about three million years ago during the Great American Interchange. By the end of the last ice age (10,000\u201312,000 years ago), camelids were extinct in North America.[3] As of 2007, there were over seven million llamas and alpacas in South America and over 158,000 llamas and 100,000\uA64A\u{1F999} alpacas, descended from progenitors imported late in the 20th century, in the United States and Canada.[5] In Aymara mythology, llamas are important beings. The Heavenly Llama is said to drink water from the ocean and urinates as it rains.[6] According to Aymara eschatology, llamas will return to the water springs and lagoons where they come from at the end of time.[6]', + [1, 415, 8814, 2786, 325, 28748, 29097, 28714, 29813, 29240, 28719, 29108, 28748, 28745, 28705, 243, 162, 169, 156, 13116, 789, 12704, 14281, 352, 28747, 733, 29097, 205, 145, 2786, 2803, 325, 28758, 2786, 1272, 2786, 28731, 349, 264, 2853, 374, 6899, 3658, 2556, 3730, 301, 313, 28725, 12575, 1307, 390, 264, 10228, 304, 2163, 8527, 486, 1015, 28706, 276, 19826, 1854, 272, 4258, 28733, 1577, 2915, 753, 4204, 28723, 393, 5989, 293, 460, 2809, 8222, 304, 2943, 395, 2663, 390, 264, 559, 28715, 28723, 6723, 25943, 349, 2664, 304, 5876, 865, 264, 1741, 3558, 302, 26573, 27545, 20011, 28750, 28793, 393, 5989, 293, 541, 2822, 3588, 9796, 1024, 264, 1664, 21435, 2065, 28723, 1684, 1413, 264, 2163, 28725, 590, 541, 7096, 684, 28705, 28750, 28782, 298, 28705, 28770, 28734, 28823, 302, 652, 2187, 4336, 354, 28705, 28783, 298, 28705, 28740, 28770, 3535, 325, 28782, 28816, 28783, 6052, 609, 28792, 28770, 28793, 415, 1141, 8814, 2786, 325, 262, 272, 2609, 835, 668, 6099, 345, 28714, 2786, 28739, 442, 345, 1727, 2786, 1243, 403, 13424, 486, 6392, 4641, 8531, 477, 8271, 2744, 5388, 3693, 20011, 28781, 28793, 415, 25427, 302, 17620, 293, 460, 1654, 298, 506, 5016, 601, 477, 272, 6043, 1641, 1606, 302, 3964, 4352, 684, 28705, 28781, 28734, 3841, 1267, 3584, 28725, 304, 18410, 11205, 601, 298, 3658, 4352, 684, 1712, 3841, 1267, 3584, 1938, 272, 6043, 2556, 4287, 4078, 28723, 2463, 272, 948, 302, 272, 1432, 7515, 3595, 325, 28740, 28734, 28725, 28734, 28734, 28734, 28816, 28740, 28750, 28725, 28734, 28734, 28734, 1267, 3584, 557, 3730, 301, 2298, 654, 1568, 5654, 297, 3964, 4352, 20011, 28770, 28793, 1136, 302, 28705, 28750, 28734, 28734, 28787, 28725, 736, 654, 754, 6671, 3841, 17620, 293, 304, 389, 28720, 323, 293, 297, 3658, 4352, 304, 754, 28705, 28740, 28782, 28783, 28725, 28734, 28734, 28734, 17620, 293, 304, 28705, 28740, 28734, 28734, 28725, 28734, 28734, 28734, 237, 156, 141, 243, 162, 169, 156, 389, 28720, 323, 293, 28725, 2283, 2508, 477, 430, 2383, 9058, 26659, 3909, 297, 272, 28705, 28750, 28734, 362, 5445, 28725, 297, 272, 2969, 3543, 304, 6082, 20011, 28782, 28793, 560, 330, 1082, 2923, 13345, 2161, 28725, 17620, 293, 460, 2278, 16905, 28723, 415, 22830, 346, 393, 28714, 2786, 349, 773, 298, 4663, 2130, 477, 272, 13993, 304, 4273, 10218, 390, 378, 408, 1606, 20011, 28784, 28793, 6586, 298, 330, 1082, 2923, 1037, 12932, 2161, 28725, 17620, 293, 622, 604, 298, 272, 2130, 7474, 28713, 304, 305, 4567, 1053, 970, 590, 1567, 477, 438, 272, 948, 302, 727, 20011, 28784, 28793] + ); + console.log("Mistral Tokenizer tests passed successfully."); + return true; +} +function initializemistralTokenizer() { + mistralTokenizer.encode = encode4; + mistralTokenizer.decode = decode3; + mistralTokenizer.runTests = runTests; + mistralTokenizer.vocabById = decodeVocabulary(vocab_base64); + mistralTokenizer.vocabByString = /* @__PURE__ */ new Map(); + mistralTokenizer.vocabById.forEach((tokenString, tokenId) => { + mistralTokenizer.vocabByString.set(tokenString, tokenId); + }); + mistralTokenizer.merges = decompressMerges(merges_binary); +} +var vocab_base64 = "PHVuaz4KPHM+Cjwvcz4KPDB4MDA+CjwweDAxPgo8MHgwMj4KPDB4MDM+CjwweDA0Pgo8MHgwNT4KPDB4MDY+CjwweDA3Pgo8MHgwOD4KPDB4MDk+CjwweDBBPgo8MHgwQj4KPDB4MEM+CjwweDBEPgo8MHgwRT4KPDB4MEY+CjwweDEwPgo8MHgxMT4KPDB4MTI+CjwweDEzPgo8MHgxND4KPDB4MTU+CjwweDE2Pgo8MHgxNz4KPDB4MTg+CjwweDE5Pgo8MHgxQT4KPDB4MUI+CjwweDFDPgo8MHgxRD4KPDB4MUU+CjwweDFGPgo8MHgyMD4KPDB4MjE+CjwweDIyPgo8MHgyMz4KPDB4MjQ+CjwweDI1Pgo8MHgyNj4KPDB4Mjc+CjwweDI4Pgo8MHgyOT4KPDB4MkE+CjwweDJCPgo8MHgyQz4KPDB4MkQ+CjwweDJFPgo8MHgyRj4KPDB4MzA+CjwweDMxPgo8MHgzMj4KPDB4MzM+CjwweDM0Pgo8MHgzNT4KPDB4MzY+CjwweDM3Pgo8MHgzOD4KPDB4Mzk+CjwweDNBPgo8MHgzQj4KPDB4M0M+CjwweDNEPgo8MHgzRT4KPDB4M0Y+CjwweDQwPgo8MHg0MT4KPDB4NDI+CjwweDQzPgo8MHg0ND4KPDB4NDU+CjwweDQ2Pgo8MHg0Nz4KPDB4NDg+CjwweDQ5Pgo8MHg0QT4KPDB4NEI+CjwweDRDPgo8MHg0RD4KPDB4NEU+CjwweDRGPgo8MHg1MD4KPDB4NTE+CjwweDUyPgo8MHg1Mz4KPDB4NTQ+CjwweDU1Pgo8MHg1Nj4KPDB4NTc+CjwweDU4Pgo8MHg1OT4KPDB4NUE+CjwweDVCPgo8MHg1Qz4KPDB4NUQ+CjwweDVFPgo8MHg1Rj4KPDB4NjA+CjwweDYxPgo8MHg2Mj4KPDB4NjM+CjwweDY0Pgo8MHg2NT4KPDB4NjY+CjwweDY3Pgo8MHg2OD4KPDB4Njk+CjwweDZBPgo8MHg2Qj4KPDB4NkM+CjwweDZEPgo8MHg2RT4KPDB4NkY+CjwweDcwPgo8MHg3MT4KPDB4NzI+CjwweDczPgo8MHg3ND4KPDB4NzU+CjwweDc2Pgo8MHg3Nz4KPDB4Nzg+CjwweDc5Pgo8MHg3QT4KPDB4N0I+CjwweDdDPgo8MHg3RD4KPDB4N0U+CjwweDdGPgo8MHg4MD4KPDB4ODE+CjwweDgyPgo8MHg4Mz4KPDB4ODQ+CjwweDg1Pgo8MHg4Nj4KPDB4ODc+CjwweDg4Pgo8MHg4OT4KPDB4OEE+CjwweDhCPgo8MHg4Qz4KPDB4OEQ+CjwweDhFPgo8MHg4Rj4KPDB4OTA+CjwweDkxPgo8MHg5Mj4KPDB4OTM+CjwweDk0Pgo8MHg5NT4KPDB4OTY+CjwweDk3Pgo8MHg5OD4KPDB4OTk+CjwweDlBPgo8MHg5Qj4KPDB4OUM+CjwweDlEPgo8MHg5RT4KPDB4OUY+CjwweEEwPgo8MHhBMT4KPDB4QTI+CjwweEEzPgo8MHhBND4KPDB4QTU+CjwweEE2Pgo8MHhBNz4KPDB4QTg+CjwweEE5Pgo8MHhBQT4KPDB4QUI+CjwweEFDPgo8MHhBRD4KPDB4QUU+CjwweEFGPgo8MHhCMD4KPDB4QjE+CjwweEIyPgo8MHhCMz4KPDB4QjQ+CjwweEI1Pgo8MHhCNj4KPDB4Qjc+CjwweEI4Pgo8MHhCOT4KPDB4QkE+CjwweEJCPgo8MHhCQz4KPDB4QkQ+CjwweEJFPgo8MHhCRj4KPDB4QzA+CjwweEMxPgo8MHhDMj4KPDB4QzM+CjwweEM0Pgo8MHhDNT4KPDB4QzY+CjwweEM3Pgo8MHhDOD4KPDB4Qzk+CjwweENBPgo8MHhDQj4KPDB4Q0M+CjwweENEPgo8MHhDRT4KPDB4Q0Y+CjwweEQwPgo8MHhEMT4KPDB4RDI+CjwweEQzPgo8MHhEND4KPDB4RDU+CjwweEQ2Pgo8MHhENz4KPDB4RDg+CjwweEQ5Pgo8MHhEQT4KPDB4REI+CjwweERDPgo8MHhERD4KPDB4REU+CjwweERGPgo8MHhFMD4KPDB4RTE+CjwweEUyPgo8MHhFMz4KPDB4RTQ+CjwweEU1Pgo8MHhFNj4KPDB4RTc+CjwweEU4Pgo8MHhFOT4KPDB4RUE+CjwweEVCPgo8MHhFQz4KPDB4RUQ+CjwweEVFPgo8MHhFRj4KPDB4RjA+CjwweEYxPgo8MHhGMj4KPDB4RjM+CjwweEY0Pgo8MHhGNT4KPDB4RjY+CjwweEY3Pgo8MHhGOD4KPDB4Rjk+CjwweEZBPgo8MHhGQj4KPDB4RkM+CjwweEZEPgo8MHhGRT4KPDB4RkY+CuKWgeKWgQriloHiloHiloHiloEK4paBdAppbgplcgriloFhCmhlCm9uCnJlCuKWgXMKZW4KYXQKb3IK4paBdGhlCuKWgeKWgeKWgeKWgeKWgeKWgeKWgeKWgQplcwriloF3CmFuCuKWgWMKaXMKaXQKb3UK4paBZAphbAphcgriloFwCuKWgWYKZWQK4paBYgppbmcK4paBbwriloFtCmxlCm5kCmFzCmljCuKWgWgKaW9uCuKWgWluCuKWgXRvCmV0Cm9tCmVsCuKWgW9mCnN0CuKWgWFuZAriloFsCuKWgXRoCuKWgW4KZW50CmlsCmN0CnJvCuKWgXJlCmlkCmFtCuKWgUkKYWQK4paBZQriloFTCuKWgWcK4paBVAppbQpvdAphYwp1cgriloEoCmlnCuKWgT0Kb2wKdXQK4paBQQpzZQriloF1CnZlCuKWgUMKaWYKb3cK4paBeQpjaApheQriloFkZQriloFzdAriloF8CnZlcgopOwriloEiCmx5CuKWgWJlCioqCuKWgWlzCm9kCuKWgU0KYXRpb24KdWwK4paBZm9yCuKWgeKWgeKWgeKWgeKWgQriloFvbgphZwpjZQriloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloEKdGVyCmlyCnRoCuKWgXYKcXUK4paBQgplbQriloFQCuKWgXlvdQriloF0aGF0CnVuCuKWgXsKaXRoCnJpCmVzdAphYgotLQphcAriloFpdAriloFjb24KYXRlCnVzCuKWgUgKdW0K4paBRApvcwpwZQriloEtCuKWgXdoCuKWgWFsCuKWgWFzCmFuZAppc3QK4paBTAriloFXCuKWgXdpdGgK4paBYW4KZXJlCuKWgSoK4paBUgriloFoZQriloFGCm9jCuKWgXdhcwplcnMKa2UKb3V0Cmh0CuKWgXIKZXNzCm9wCnJlcwppZQriloFFCuKWgVwK4paBVGhlCmVuZApsZAriloFOCm9ydAriloFHCi8vCuKWgSMKb3VyCnRlCmlsbAphaW4K4paBc2UK4paB4paB4paB4paB4paB4paBCuKWgSQK4paBcHJvCm9yZQriloFjb20KYW1lCnRyCuKWgW5lCnJvbQp1YgriloFhdAriloFleAphbnQKdWUK4paBb3IK4paBfQphcnQKY3Rpb24K4paBawpwdApudAppdgpkZQriloFPCnBsCnVybgppZ2h0CmFsbAriloF0aGlzCnNlcgphdmUK4paBbm90CuKWgWFyZQriloFqCuKWgWxlCml6CuKWgScKYWdlCm1lbnQK4paBdHIKYWNrCnVzdAooKQotPgppdHkKaW5lCm91bGQK4paBSgpvZwriloFmcm9tCuKWgXdlCmVsbAriloFzaAriloFlbgp1cmUKcG9ydAriloFjaApuZQriloFieQpwZXIKYXJkCmFzcwpnZQphawphcmUKb2sKYXYKaXZlCmZmCmllcwphdGgKdHVybgriloFVCmludAotLS0tCuKWgWltCm9zdAppYWwK4paBaGF2ZQppbmQKaXAKYW5zCnh0CuKWgWRvCmNsCuKWgWlmCmNvbgppYQriloFoaXMKdWx0CnJvdQriloFzdQpyYQriloF1bgphYmxlCuKWgTwK4paBSwpvbWUK4paBcXUKZ2V0CuKWgW1lCmFzdAplY3QK4paBIyMKdG8K4paBY2wK4paBYWIKaWNlCmlyZQpiZXIKb25lCmljaApoZW4K4paBY2FuCuKWgVRoCuKWgWxhCuKWgWFsbAppbWUKaWxlCmlkZQoiLAriloFwbAriloFWCnJ1Cm9ybQriloFoYWQKdWQKYXNlCm9yZAopLAriloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloEK4paBaGVyCuKWgUluCmFjZQriloFidXQKYXRhCjo6CioqKioKb25nCuKWgSYKLi4K4paB4paB4paB4paB4paB4paB4paB4paB4paB4paB4paB4paB4paBCml0ZQp5cGUKYWN0Cm9kZQriloF5b3VyCuKWgW91dAriloFnbwpsaWMKYWxseQriloFzbwpvcmsKYXUK4paBdXAK4paBXwpsbAo9PQriloFteQpwcApjYwriloEvLwriloF0aGV5CmdoCuKWgXVzCmliCmlvbnMKYWNoCmVucwriloFhcgpvYgplbGYKb29rCmF0ZWQKYW5nCmlnbgriloFyZXR1cm4K4paBcmVzCmNrCm91cwrRgdGCCikuCuKWgdC/Ci4iCtC90LAK4paBaQphaWwKZXAK4paBYWQKYW5jZQooIgriloEqKgp0aGVyCmFrZQriloF3aWxsCuKWgWNvbXAK4paBb25lCuKWgWdldApvdgriloFZCmFyeQpvY2sK4paBc2hlCmNoZQpmdAriloFuZXcK4paBZGVzCuKWgWxpCmVuY2UK4paBc2EKcmVzcwriloFlbAriloF1bmQKZWcKZmVyCnJ5CmVhcgpvc2UKdmVyeQonLAriloErCuKWgdCyCuKWgUhlCnVibGljCuKWgXRoZWlyCml6ZQriloF3ZXJlCmluawpvd24KSW4Ke1wK4paBaGFzCuKWgXBlcgriloFJdAriloFTdApoZXIKamVjdArRgNCwCmlsZApzbwriloFzcArQvdC4CmR1CnJvdwphbHVlCnNldApmb3JtCmNvbQriloFtYW4Kb250CnVsbAriloFjb250CuKWgW1vcmUKaWNrCuKWgXdvdWxkCuKWgWV2CuKWgWFib3V0Cml0aW9uCuKWgXoKb3VuZApyZWUK4paBQ2gK4paBd2hpY2gKaW8KKCk7CuKWgXdobwplcnIKb3J5Cm91bnQKYXRpb25zCuKWgdGBCnJpbmcKPC8K4paBZmUK0LrQvgrQvdC+CuKWgWRpcwptYQriloF0aGVtCuKWgWFueQriloFubwotLS0tLS0tLQriloFwcmUK4paBdGUK4paBcm8K4paBaGltCuKWgToKdXAK4paBaW50CuKWgWFnClN0CmFyawpleApwaAppZW50CmVseQriloFwcgpFUgriloFpbXBvcnQK4paBdGltZQrRgNC+CnBybwpVc2VyCmxvCuKWgS8K4paBWwpvcnMKPSIK4paBdGhlcmUK4paBbGlrZQpvbGQK4paBd2hlbgp2ZXJzCuKWgXNvbWUKaW5ncwopKQriloFwYXJ0CmljYWwK4paBZnVuCuKWgWtuCmF5cwppZXIK4paBYmVlbgpvdmUK4paBc2MKaWFuCuKWgW92ZXIKaWVsCuKWgeKWgeKWgeKWgeKWgeKWgeKWgeKWgeKWgeKWgQriloFwZQpyaWIKcHV0CmVjCmV0aAphcmFtCmFwcAriloHigJMK4paBc3RhdApwb24K4paBd2hhdApwdGlvbgp3ZQphZGUK4paBd29yawp0ZXh0CuKWgXNhaWQK4paBIyMjCklOCuKWgWp1c3QKaXJzdAriloFpbnRvCuKWgWNvbnN0Cm91cmNlCnR0CnBzCnByCmVydgppdHQKdWcKX3sKZW50cwppc2gKZW5lcgriloFpbnRlcgpwbGUKb2xsCm1lcgphdGVyCm9vbAplZgriloFwdWJsaWMK4paBb3RoZXIK0YDQtQriloFkZWYK4paBQArQs9C+Cm9pbnQK4paBb2ZmCm9pZApyZXR1cm4K4paBc2V0CndvCmZ0ZXIKc2gKKioqKioqKioK4paBb3VyCnJpdgppc3MK4paBV2UKbmcK4paBb2IKc3MKZ3IK4paBdGhhbgpwZWN0CmllZApzYwppZXcKZGVyCnlzdApldgriloFjb3VsZAphbm4KZW5jCk9OCml4CmFuYwriloFhbHNvCnJlYXQK4paBYW0K4paBYmVjCuKWgdC4CnVhbApwZWMK4paBLgriloFibApsZWN0Cm9wbGUKeXMK4paBZ3IKaWN0CmlrCnRyaW5nCuKWgVRoaXMK4paBYmFjawriloHQvgriloFmaW4KYXRjaApDb24KKCcKZXJtCuKWgT09Cl9fCm5hbWUKLCIK4paBZGlkCmlzZQriloFvbmx5CnJ1Y3QKbGVzCuKWgXRoZW4KYXVzZQrQstCwCuKWgWl0cwpyaXQK4paBa25vdwppZWxkCuKWgWNsYXNzCuKWgT4K4paBZW0K4paBJFwK4paBeWVhcgp3bgp9LAriloFkZWwKYWxlCnR5CmZpZwpzcApoZWQKcm91bmQKZXcK4paBZGkK4paBZGVyCtGA0LgKcmVkCnRoaXMKbGV0ClJFCmF4CmZyCmVzc2FnZQpvdWdoCuKWgWNvbW0KZm8KdWNoCm95CuKWgXBlb3BsZQp5c3RlbQriloFmaXJzdAriloFmdW5jdGlvbgphbmdlCuKWgWhvdwriloFldAphaAriloFsb29rCtGC0L4KdW5kCuKWgXVuZGVyCtC60LAK4paBIQpyYXkKU1QKaWZpYwrQu9C4CnJlYWQK4paBYmV0CmlvdXMKYXJnCuKWgW5lZWQKbWF0aAriloHQvdCwCmVydAriloFvcAriloFhY2MKUHJvCuKWgWVzdAriloFVbgriloFlbnQK4paBcmVjCuKWgXVzZQrQtdC9CuKWgXBhcgphegriloHQtAriloFXaApzZWxmCuKWgWtlCtGC0LAK4paBd2FudAriloFlbmQK4paBZG9uCmVrCnJlbgpOYW1lCuKWgT0+CuKWgWFwcAriloFxdWUKaWdoCuKWgWJ1CmVxdQp2ZWwK4paBYWN0CmNyZQpBVAriloF2YXIKY2Vzcwo9PT09CkV4CuKWgWFkZAriloFtb2QKdW5nCuKWgXdoZXJlCm5pbmcK4paBZmwKYWxzCnRlcm4KfX0K4paBQWwK4paBcG9zCmFuawriloFhcAplbmcK4paB4oCcCmJsZQriloFyZWcKXnsK4paBU2hlCuKWgSovCnVkZQphZGQK4paBdHdvCuKWgWNvbAriloFzbQphaXIK4paBbWF5CmZvcmUK4paBWW91CnJvdWdoCuKWgWNoZQriloFhdHQKb3RoCtC70LAK4paBY28KYXRlcwriloFyZW0Kb29kClR5cGUKbGVkCmZ1bAriloFzZWxmCm9mCuKWgUFyCnF1ZQriloFldmVyeQpyZWYKVGhlCuKWgUFuZAriloFyZWwKT1IKSWQK4paBZXZlbgpFTgriloFoYW5kCmFpdAriloFzaG91bGQK4paBYWZ0ZXIK4paBZGlmCmdodAppZmUKYXRvcgphc2gKcmlidXQKdW1iZXIK4paBc2VlCm1zCuKWgWNhbGwKeW4KZGQK4paBZXMK4paBbWFrZQpvdGhlcgriloHigJQKIik7CnN0cgriloFsb25nCmxlbWVudAriloF3b3IKaXRzCuKWgUlmCmFsc2UK0LvRjAp3YXJkCuKWgdC/0L4KdmFsCm9ucwriloFaCuKWgW5vdwpkYXRhCmFtcAplbnNlCuKWgXRocm91Z2gK4paBZG93bgphdHQK4paBc3RhdGljCmljcwojIwpwb3MK4paBdm9pZAphdwpvdW4K4paBd2F5CmlibGUKdmVudApvd2VyCuKWgXRoaW5rCnRzCiovCuKWgWFnYWluCmF0aW5nCtGC0LUKbmVyCuKWgW1vc3QKbGluZQp5bQriloFzdWIKZXJzb24K4paBcmVxdQpBTApBUgphYmVsCm9uZAopKTsK4paBU2UK4paBQnV0CmFsawriloFBbgpuZXcK4paBYmVjYXVzZQpnZXIKdWxhcgpyb3VwCnRhCi4uLgriloFjb25zCuKWgXJpZ2h0CuKWgWZyCmJlCmlseQrQutC4CuKWgXBoCmVhZAo/IgriloFndQriloFlbHNlCuKWgXNvbQpyZW50CmNvCmVtZW50CuKWgXN0cgphdWx0CuKWgdC3CtC70L4Kc2VydAp2YXIKdHlwZQriloFDb20K0LvQtQppbnMKbWUKd2F5CmlkZW50CuKWgXByb3YK4paB0LwK4paBdHJ1ZQriloFQcm8KZmwK4paBc2wK4paBQXMKfVwKSUQKdWVzCuKWgWluc3QK4paBbmFtZQpveAriloEpCmxpCmFtZXMKUmVzCuKWgXN1cgpwYXJhbQriloFzdGFydAphagpTRQphc2sKSVQKU3RyaW5nCuKWgWFzcwriloFwbGF5CnRpbmcKdG9uCuKWgWJlZm9yZQriloFwb2wKYXJjaAriloF3ZWxsCkNvbQphbnkKb2xvZwriloFlcnIK4paBdGhlc2UKYXJzCmViCuKWgWJyCuKWgWluY2wK4paBaGVsCmVybgpvZHkK0LLQvgriloFpbmQKLS0tLS0tLS0tLS0tLS0tLQriloFkYXRhCuKWgWdvb2QKTEUKXSwK4paBYXYK4paBYWMKaWRlcgrQvdC1CuKWgVEK4paBbWluCuKWgW11Y2gKY2kKZWxzCuKWgWN1cgriloF2YWx1ZQplcnkKdWYK4paBbG9jCnJlYWsKYXRpdmUKaW1lcwpDbAriloEsCuKWgXNlcgriloFkaWUK4paBdHJhbnMK4paBcmVzdWx0CmV4dAriloFhdXQKbGFuZAriloEmJgpDaAp0ZW4KfSQK4paBdHlwZQpjb25kCmljZXMK4paBdmVyeQriloFvd24K4paBZmlsCml0aWVzCuKWgXByb2R1CuKWgXJlYWQK4paBZm9ybQriloFjYXNlCmF0aGVyCtGC0LgK0LTQsArQtdGAClRoCmF1dAriloFzcGVjCmlqCmJsCmlsaXR5CuKWgcOpCuKWgWVyCuKWgWRvZXMK4paBaGVyZQp0aGUKdXJlcwriloElCm1pbgriloFudWxsCnJhcAoiKQpycgpMaXN0CnJpZ2h0CuKWgVVzZXIKVUwKYXRpb25hbAriloFiZWluZwpBTgpzawriloFjYXIKb2xlCuKWgWRpc3QKcGxpYwpvbGxvdwriloFwcmVzCuKWgXN1Y2gKcmVhbQppbmNlCmdhbgriloFGb3IKIjoKc29uCnJpdmF0ZQriloF5ZWFycwriloFzZXJ2CuKWgW1hZGUKZGVmCjsNCuKWgWdsCuKWgWJlbAriloFsaXN0CuKWgWNvcgriloFkZXQKY2VwdGlvbgplZ2luCuKWgdCxCuKWgWNoYXIKdHJhbnMK4paBZmFtCuKWgSE9Cm91c2UK4paBZGVjCmljYQriloFtYW55CmFraW5nCuKWgcOgCuKWgXNpbQphZ2VzCnVmZgphc2VkCm1hbgriloFTaAppZXQKaXJlY3QK4paBUmUK4paBZGlmZmVyCuKWgWZpbmQKZXRob2QK4paBDQppbmVzCuKWgWludgriloFwb2ludAriloFUaGV5CuKWgXVzZWQKY3Rpb25zCuKWgXN0aWxsCmnDswppbmVkCuKWgXdoaWxlCkl0CmVtYmVyCuKWgXNheQriloFoZWxwCuKWgWNyZQriloF4CuKWgVRyCnVtZW50CuKWgXNrCm91Z2h0CnVhbGx5Cm1lc3NhZ2UK4paBQ29uCuKWgW1vbgphcmVkCndvcmsKKToKaXN0ZXIKYXJuCml6ZWQKRGF0YQpvcm4K4paBaGVhZApERQriloFMZQriloFwZXJzb24KbWVudHMKZW5ndGgK4paBZmFsc2UK4paBbWVkCuKWgURlCmFjaGUKaXRlZAriloFsZXQK4paBc2hvdwriloFzYW1lCnVzcwriloFnZW5lcgriloHRgwpjdXIK4paBcmVhbApjZWQKIj4Kc3RydWN0CmJlZ2luCmNlcHQK4paBYm8KaXJlZAriloFGcgriloFzdHVkCmRldgpBcgooXAriloFDbAp3ZWVuCuKWgXRvbwriloF0ZXN0CuKWgWRheQpvaAriloFmb2xsb3cKYXR1cmUKemUKaWVuCnJlZwpjZXMKdXJpbmcKYW1iCmluYQpjcmkK4paBZWQKU1MKdWNrCuKWgS8qCkNUCuKWgVRoZXJlCuKWgXRha2UKcGFyCnVsZQpjYWwKZm9yCioqKioqKioqKioqKioqKioKc291cmNlCuKWgXRob3NlCmNvbAriloFlZmYKbW9kCmNvbnQKfXsK4paBYXJvdW5kCnByZXNzCmJ5CuKWgWdvaW5nCnBvbnNlCuKWgdChCuKWgWxpbmUKZGF0ZQpjb2RlClsnCuKWgWxpZmUKYXNvbgriloF1c2luZwriloF2YWwK4paBZHUKeXAK4paB4paB4paB4paB4paB4paB4paB4paB4paB4paB4paB4paB4paB4paBCuKWgU9uCuKWgWZvdW5kCm9sdXQKJ10KYXJlbnQK4paBc3RyaW5nCuKWgW1ldAriloF3cgp1c2gKc3RyaW5nCnNpemUK4paBdmVyCuKWgWVhY2gKdmFsdWUK4paBbGFzdAriloFnb3QKdmVuCmJhY2sKU2V0CmV5CnJvbAriloFjcgp0aGluZwpyZXQKw6lzCmlzbQriloFiZXR3ZWVuCk9iCmV0aGluZwptcAriloFsbwphdHMK4paBTmV3CtCy0LgKYWRvCmRleArQtNC4CuKWgXBhc3MKd2gK4paBZGVuCkdldAphcHQK4paBYXNrCuKWgXN1cApWYWx1ZQrQvdGLCuKWgXRyeQpsYXRpb24KZGF5Cm5lc3MKZXRzCuKWgWV4cGVyClRyCuKWgU1hcgpzZXJ2CmJyCuKWgW51bWJlcgppbmFsCmNlbnQKLyoKbm90CmlvbmFsCuKWgWZpbmFsCicpCuKWgXJ1bgpvdmVyCuKWgW5ldmVyCnVjCuKWgWhpZ2gKeWxlCuKWgWlucwriloFiZXN0Cml0dGxlCnJpYwriloFzaWduCuKWgWRlbQppbmVzcwpneQriloF3YXIKaXNoZWQK4paBZ2l2CmtleQriloFYCigkCuKWgWNoaWxkCmxlc3MKd2F5cwppbmNsCnJvcApyYXcKOi8vCuKWgcKrCm5vCmluZG93CmZlCnJpZW5kCuKWgWxlcwriloFsb3MKZmlsZQpmb3JtYXRpb24KY2Nlc3MK4paB0JIKbmEK4paBaWwKaXNpb24KbGVyCuKWgWFydApDb250CuKWgXdvcmxkCuKWgXR1cm4K4paBcmVhbGx5CuKWgUV4CtC80LAK4paB0J8KdGVycwphcmdldApFcnIK4paBaGFwcAp0aW1lCuKWgVNvCmRpdgriloFkaWRuCmFkYQpvb3QKfSkK4paBc2NoCuKWgWNsZQriloFzb21ldGhpbmcKKCkuCuKWgWNvdXIKZXZlcgphbnRzCuKWgT8KVG8K4paBYAp0cnkKdXgKYWlzCnJvc3MKaGlwCuKWgXJlcApsYWJlbAriloFib3RoCiosCm90dArQvNC4CmFuZQriloFvcGVuCnd3CuKWgWNvbWUK4paBZXh0CnJlbQpfe1wK4paBb2xkCmNoZWQKLl8KTUUKaWZ5CmdnCkNvbAp2aWV3CuKWgWJ1cwriloFtdXN0CuKWgWRpZmZlcmVudApsb2cKaXN0cwpyb2xsCmFpCuKWgdC30LAK4paBc3lzdGVtCml2ZXJzCmF0dXMKb3RlCm1lZApdLgpha2VzClJPCuKWgWNlbnQKZ3JhbQriloFwcml2YXRlCuKWgWdyZWF0CiI7Cm9weQriloFmZWVsCuKWgUhvdwovLy8vCklDCuKWgWRyCmFpbnMKbG9jawpFbgriloFTY2gK4paBbWF0CuKWgWhvbWUKcGVydHkKdGVzdApsb2MK4paBd29tCnN3CmFybHkK4paBRW4K4paB0LrQvgpkZW4K0YHRgtCwCuKWgdCwCmV0ZXIK4paBaW5jbHVkClVMTAriloFtZW0K4paBcG8K4paBbGl0dGxlCuKWgWFyZwriloF9LAppbmNsdWRlCmV0YQriloFwbGFjZQppZHRoCnVzdG9tCuKWgXx8CuKWgXRlbQpyaWVkCuKWgWZhY3QKaWVuY2UK4paBUGwKb3B0CmVsZQpnbwpBQwppbnRlcgo9PT09PT09PQooKSwKb3RzCnJhbAppcXVlCmF2aW5nCm1sCuKWgXRob3VnaHQKZnJhYwriloFjYXJlCigpKTsK4paBcHV0CuKWgW1pZ2h0CuKWgUFtZXIK4paBKCEKYW1wbGUKYWx0aAriloFmZXcK4paBc3RhdGUKc3ViCuKWgU9yCl07CuKWgXNpemUK4paBU3AK4paBd2l0aG91dAriloFwb3NzCmVxCnBsYXkK4paBZXhwZWN0CuKWgXNlY29uZAriloFTdHJpbmcKdWlsZAriloFuZXh0CisrCnJlcXUK4paBQWxsCuKWgW1lbgriloFXaGVuCml0ZXIKYW1lbnQKbmV0CuKWgdCaCnJvbgphaW50CuKWgUlzCtCy0LUKcGVuZAp0cmFuc2xhdGlvbgriloHQs9C+CtGH0LUK4paBdmFuCuKWgWFub3RoZXIK4paBcmV0CuKWgUxhCk1vZApJT04KbGlzdAriloFwb3N0CmRhCndhcmUK4paBd29yZApFcnJvcgriloFzZWVtCuKWgWNvbnRpbgphdGljCuKWgXRocmVlCk9iamVjdAriloFwYXJ0aWMKJC4K4paBbWFyawriloF2aXMKcmMK4paBc3cKcHRpb25zCuKWgWJyZWFrCuKWgXRoaW5ncwp1dGUKdWkK4paBVGhhdAp1cnMKZ2wK0YDRgwriloFmaWxlCnVzZQppZ25lZApwYXJ0ClVuCuKWgWVxdQooJgriloFsZWFkCnJtCmFpbmVkCuKWgUJlCnBhdGgK4paBc21hbGwKYWdlcgriloFhbHdheXMK4paBRWwK4paBb3JkZXIK4paBZXkK4paBd29uCmFwZQriloFsZWZ0CmF2YQppdGVtCmhvcgriloFhd2F5CmJiCmZ1bgriloFJbmQKbWIK4paBc3RydWN0CuKWgXByb2Nlc3MK4paBc3VwcG9ydAopOw0KacOzbgpMTwriloFvcGVyClVUCuKWgcK3ClBFCmxvYWQKb2ZmCuKWgU5vCml2ZXMKaWNhbgriloF2ZQphY3Rpb24KJzsK4paBdm8KJCwK4paBR3IKcHJlCm55CmFpbmluZwppb3IKaW5pdApsZWN0aW9uCmFybQp1bW4KYWdzCtGG0LgK0YHQutC+CnZlcnNpb24K4paBVG8K4paBcmVmCnN0YW5kCuKWgUF0CmlmdAriloFlaW4KZmFjZQpibwppZmllZAp2ZWQKc3VtCnVuZQppdGFsCnVtcApjb21tCuKWgW1vdgplbHQK4paBdm9uCnZlbG9wCmN0b3IKaGVhZApjbGUK4paBYnVpbGQKaW5jCi4nCmJzCmluZm8KY2huCuKWgXdlZWsK4paBYm9vawpIRQpiYXIKaWNlbnNlCuKWgVdoYXQK4paBcXVlc3QKdXJjaAphdG8KbGVmdAriloFtYXIK4paBdG9wCkZGCuKWgWZyaWVuZAriloFiZWgK4paBZmllbGQK4paBYWdhaW5zdApyYWN0Cml6YXRpb24KdXNlcgpjaGVuCuKWgWtlZXAKQUQKaXRvcgriloFub24KaXJkCm9wZQriloFyZXN0CuKWgWRldgriloFfXwriloF1bmEK4paBdGVybQpJUwriloFwb3AKcmlzdAriloFzaW5jZQp2ZXMK4paBaGFyZApwaQp1dGlsCuKWgXNvYwplbmUKRXhjZXB0aW9uCuKWgWxvY2FsCuKWgWRpcmVjdAriloFzdXJlCuKWgWJybwriloFkYQriloE8LwriloFjdXJyZW50Cic6CldoCuKWgWluZm9ybWF0aW9uCuKWgWlkZQriloFiZXR0ZXIKVGV4dApyYXBoCuKWgXN0YW5kCuKWgWNoZWNrCuKWgdC6CuKWgW5hCigoCm91dGgKYXBzCuKWgXVudApiZgriloFjb25mCuKWgXNwZQppdGxlCuKWgUNvbApjbGFzcwp1cmFsCmJlcnMKTUEKZXNzaW9uCuKWgdCcCkluZm8K4paBQnIK4paBZWFzCmVydmljZQphdXMKYXJpCtC/0L4K4paBY291bgrQtNC1CigpKQpsaW5nCkVECmFibHkK4paBcGF0Cm9yZwriloFpZAriloHQswriloF0ZWxsCmxleAriloFhbGxvdwpyZWVuCm15CuKWgWNvbnNpZGVyCuKWgXRlYW0KbGVhc2UKaHR0CuKWgVByCi8qKgriloFzaW5nClJlcXUKUmUKaWRlcwpjaGVzCuKWgW9iamVjdAppYWxseQpCeQrRgdGPCmlkZWQK4paBZnJlZQriloFwcm9ibGUKY2l0ZQriloEpOwppc3Npb24K4paBZHVyaW5nCuKWgS0tCml0aGVyCtC70Y8K4paBbGVnCuKWgXNpdAppY2FsbHkK4paBa2V5CmxlZwp0cmEK4paBbW9tCuKWgWV4cGwK4paBZGV2ZWxvcAriloFldmVudAriloFOVUxMCm9obgriloEvLy8K4paBYnVzaW5lc3MK0YfQsAriloFwcm9mCmVycm9yCuKWgXBvcgriloFjb21tdW4KSW5kCml1bQpUZXN0CuKWgUFkCm91YmxlCuKWgXNvbgpyaXRlCnJlYWR5CuKWgXsNCuKWgXRoaW5nCtC90Y8K4paBUGgKcGVkCtGB0YwKaXZlZApZb3UKYXJsCmNvbnN0Ci4uLwpTZQpTaAriloFwb3dlcgpyaWJ1dGUK4paBTXkK4paBdGFsawppdGNoCuKWgWNhbGxlZAriloFjYW1lCuKWgWJlbGllClVSCkFkZAriloFSZXMKYXN0ZXIKZWxsYQpvYmFsCuKWgXVudGlsCuKWgWh1bQpDTwphdGVseQojIyMjCnB1YmxpYwpbXQriloFyb29tCmxlbgriloFmYW1pbHkKcG9yCuKWgXByb2dyYW0K4paBaGlzdAriloFtdXMKYXJnZQpvbmV5CkltCmVsc2UKYWlscwphZgriloFsb3ZlCsOkcgphc2VzCnBoYQpvdXJzCmRpcwptYXAKaXZlcgrDtnIK4paBQmwKYXRlZwpzdGF0ZQpTdGF0ZQplcnRhaW4K4paBZWZmZWN0CnByaW50CuKWgWJpZwppbmRleAriloFwdWIKdmVydAplcm8KbWQK4paBbWV0aG9kCuKWgWdhbWUKcmllcwpsZXRlCkl0ZW0KSU5HCnJlc2VudAphbGl0eQpwdHkKbGV5Cm9jdW1lbnQK4paBYmVnClRSCn0uCuKWgXNjaG9vbApoZXMK0LTQvgriloFsb3QK4paBdG9vawriloFhZHYK4paBY2FwCk1QCnVuawriloFsaWdodAriloFsYXRlcgouLApLZXkKaXRpb25zCuKWgWVub3VnaAriloEvKioK4paBd2VudArDo28K4paBdGhvdWdoCuKWgWdyb3VwCuKWgW1lYW4K0YHQutC4CkFQCuKWgW51bQriloFjb25kCtC90ZYK4paBZ2l2ZW4K4paBd2h5CuKWgXJlY2UK4paBc2lkZQriloFmYXIKQ29udGV4dArQvNC1CuKWgWxvZwpWaWV3CuKWgTw8CmZpbAphY2VzCmVuY3kKb2FkCmVyZWQK4paBcHJvZHVjdApFVAriloFwYXJhbQriloFwcm90ZQp0ZXMKVGltZQpqZQpvbHV0aW9uCuKWgdGA0LAK4paBbW9udGgKZmVyZW5jZQriloFhcHBlCuKWgWZhY2UKZW5lZAp0cmFjdAriloFsZXNzCkFTCsOpZQriloFnaXZlCuKWgWtpbmQK4paBY291bnQKY291bnQK4paBc3RvcAriloFnb3ZlcgprYQriloFlcnJvcgplbmNlcwriloFtaWwKYWxmCnluYwp2aW91cwpobwriloFuaWdodAplcmEK4paB0L/RgNC+CuKWgXNvbAptZW4K4paBd2F0ZXIKZXJpbmcK4paBbGltClBhcmFtCuKWgWhvdXNlCuKWgVN5c3RlbQriloFwYXkK4paBOj0KdXJvCm9jaQp6eQriloFhbHJlYWR5CixcCmxlbmd0aAriloFzaQriloFpbnRlcmVzdAphZmYKY3RlZAplbnRpb24K4paB0LTQvgp1bWUK4paBYXBwcm8KYnJlCklHCuKWgXRocm93Cm1hdGhjYWwKaXJsCuKWgXByb20Kb3NzCuKWgXJlcXVlc3QKZXF1YXRpb24Kb2xvZ3kKbWl0CuKWgXBhY2sKaW5vCmFycmF5CnphCnRpbApVTgriloFwcmVzZW50CuKWgW9yZ2FuCkZpbGUK4paBb3JpZwriloFmdWxsCmlzdHIK4paBZmxvCmhyCuKWgWFzc2VydAphcmRzCnVybAplbm4Kc2wK4paB0JAK4paBY2hvCuKWgWxldmVsCk9UCndvcmQK4paBYm9keQriloF1c2VyCsOtYQpRdQriloFtYWluCkFCCnBsb3kKRXZlbnQK4paBc3VwZXIKb2tlbgriloHQnQpBcwp0aGVycwrQvNC+CtC60YMK4paBZGF5cwriloFkb25lCuKWgXZpZXcKc2lkZQrRgdC4CicpOwriloF2b2wK4paBdG90CmNhc2UK4paBYWZmClJlcXVlc3QK4paBTWFuClxcCuKWgUpvaG4K4paB0JEKb3J0aAriloFqZQriloF1bmUKbGEKWyIKZmllbGQK4paBVVMKaWNvCuKWgXBlcmZvcm0KYWlsYWJsZQpDb25maWcKT3IK4paBbW9kZWwKYWxlcwriloFjcmVhdGUK4paBYW5uCmFuY2VzCklMCmluYXRpb24K4paBSW0KYW50ZQphbmEK0LDQvQriloF0b2xkCmNvbmZpZwoiXQptZXQKbHQK4paBdGV4dAriloFNYXkK4paBb3JnCuKWgXBvcnQKUGwKZW50bHkK4paBZG9vcgpVUwriloEoKgprdApFUwplbnRpYWwK4paBaXNzCuKWgWluYwpOb2RlCml2ZWx5CuKWgWFza2VkCmlydAriloFUZQriloFyZXBvcnQK4paBY2hhbmcK0YHRgtC4CuKWgWFsb25nCuKWgWNoYW5nZQpTaXplCuKWgWV2ZXIK4paBb2NjCnVyeQriloFtaW5kCm9yZGVyCnBvaW50CtGB0YLQvgriloF3aGUK4paBaW1wb3J0YW50CmRlcwriloFOb3QK4paBd3JpdAriloFleWVzCuKWgWRlc2MKbW9zdAprcwriloFiaXQK4paB4paB4paBCuKWgXN1Y2Nlc3MK0YLRjArQsdC+CmNvcmUKfSgK4paBYXJyYXkKbGluCmxpc2gK4paBZm9sbG93aW5nCkZpZWxkCmlkcwpoaW5nCuKWgWNhbApJcwphcmluZwpsZXYKYWx0CkNICuKWgWTDqQphbHBoYQriloFmb3VyCuKWgWxhdwriloHRgdC1Cmlyb24K4paBZGlzYwrRgdC1Cmtlbgpub2RlCuKWgVBhcgriloFFbmcK4paBbW92ZQriloFMaWNlbnNlCmN1bAppb25lCikkCuKWgXR3CldlCnNlbAriloFXaXRoCuKWgW9uY2UKU2VydmljZQpib2wKdXJlZAppZGEK4paBUXUK4paBZ3JvdwriloFjb25uZQpFWAriloFodHQK4paBfTsK4paBd2FsawriloFpbml0Cm5hbAplbmRlcgpjcmlwdGlvbgptYmVyCmxlY3RlZApwbwriloFuaWwK4paBcHJvYgrRh9C4CuKWgVN0ZQppc29uCmFuZHMKb3NlZArQttC1CuKWgUhpcwrDvHIKTWFuCkVsZW1lbnQK4paBYWJsZQpJbmRleApzZWFyY2gK4paBbWFnCtCw0YAK4paBY291cnNlCuKWgUNhcgriloFleHAKYXBoCuKWgW1pdAriloFkb2VzbgriloFkZWZhdWx0Ci8+CmFpbQriloFzZXJ2aWNlCuKWgXdpdGhpbgphbmd1CuKWgdCUCnVmZmVyCkFHCuKWgURvCuKWgWluY3JlCuKWgXVuZGVyc3RhbmQKfV4K4paBbG9va2VkCmdlbgphaWxlZAriloHQtQpheWVyCuKWgU9uZQriloFiYXMK4paBam9iCm11CmJ1dAplbHRhCuKWgUNocmlzdAp1cmF0aW9uCuKWgXJlY29yZAriloFVbml2ZXJzCml2aWQKdmFsaWQK4paB0KAK4paBaG9sZAriloF0YWJsZQpvbmVzCmxpbmsK4paBR2UK4paBb2ZmZXIKc3RlcgpGb3JtCj17CuKWgdC90LUKc3RhbmNlCuKWgWdvdmVybgriloF0ZWNobgriloFwcmltCiouCmNobwptYXgK4paBZm9yZQriloFDYW4K4paBcG9saXQKb3JpZXMK4paBdGltZXMK4paBZGFucwriloFhaXIK4paBYW55dGhpbmcK4paBc2V2ZXIKYWN5Cn1fCkhlCuKWgWxlYXN0CmlwcwpFTlQKZG8K4paB0L7RggriloFjb3N0Ci7igJ0K4paBY2hpbGRyZW4KYWJpbGl0eQpCdXQK4paBcGF0aApyZXN1bHQKYWN0ZXIK4paBZWxlbWVudAplZQriloF3YWl0CuKWgW1vbmV5Ck1hcAp0ZApvaW4KaXZpbmcKaWNodAppY3kKc2NoCnN0ZQrQtNGDCm9yZWQKb3VkCmlsbGUKaXNlZApwbGljYXRpb24K4paBY3VzdG9tCuKWgWhhdmluZwpwb25lbnQK4paBQnkKdWxlcwp1ZWQKYXR0ZXIKQW5kCml0aXZlCkRlZgriloFtb21lbnQKYXRlcmlhbApDbGFzcwpvZ3JhcGgKaWtlCuKWgWxhcmdlCuKWgSMjIyMK4paBZWl0aGVyCmR1Y3QK4paBVGhlbgriloFHdQpvbGVhbgpwZXJ0CuKWgUdldAriloFBYgriloFzaG9ydApPbgppbWVudAriloFwcm9qZWN0CmNyaXB0CuKWgWluY2x1ZGluZwrQvdC40Y8K4paBbWFraW5nCuKWgXNvbWVvbmUK4paBRmwK4paBc2F0CuKWgWNvbXBhbnkKb2N1cwpwdQriloFHb2QKaWZpY2F0aW9uCk5vCuKWgXNuCmFubwpnYQriloFhdQriloFjb3UKw6FzCmVuZGVkCtGC0YMKb2JlcgriloFub3RoaW5nCuKWgW5ldAriloFwb3QK4paBdHlwCuKWgWl0ZW0KcmV3CkF0dAriloF5b3VuZwp9DQpuZGVyCnN0YXJ0CuKWgVNjCiopCuKWgWVuYwriloF3b21lbgriloFsb29raW5nCuKWgdGA0L4K4paBaGVhbHRoClBhdGgK4paBQWZ0ZXIK4paBbXVsdAriloF7XAriloFsYW5kCm9ybGQK4paBRGVzCuKWgWVuZwppbnB1dAriloFQb2wKIiIKQ29kZQriloFzdXBwCmFpbmVyCmhlY2sK4paBbW9yCuKWgW1pbGwK4paBYXcKZnMK4paBZG9pbmcKdGluZ3MKYWRlcwriloF0b2dldAriloFjZXJ0YWluCuKWgXRvZ2V0aGVyCkNFCmlkZW8K4paBQW1lcmljYW4Kb255CmlkZApJSQpnZWQKYWJsZXMK4paBaWRlbnQKaW9kCuKWgXBhcmVudApGb3IKYW1iZGEKYW5kbwo9XAphZ2VkCmVuZGluZwpJbnQK4paBcG9zc2libGUK4paB0YHQvgppdml0eQpudW0KcnQKYWpvcgpjcmVhdGUKcmlkZQriloFrbmV3CmJpdAppdGlvbmFsCuKWgWxpawriloFIZXIKZW5zaW9uCiIuCm90bwriloFleGlzdApha2VuCuKWgWFjdHVhbGx5CmNhCuKWgdCTCtGF0L4KaW5uCkFsbApidWYK4paBTWUK4paBc2VlbgpvcHMK4paB4paB4paB4paB4paB4paB4paB4paB4paBCk5vdAriloFjb250cm9sCuKWgXJlc3Bvbgp9OwppbHQKaXNrCuKWgWJhZAriloFvZnRlbgriloFwYXN0CmFwZXIK4paBcmVhc29uCmV0ZXJzCuKWgXdhbnRlZAp1cmEKdGFibGUKb3JtYWwKd2lkdGgK0LPQsApwdHIK4paBZGVzdAriloFkZXNpZ24K4paBc291bmQK4paBcGxhbgriloFiYXNlCmhhbmQKZ3MK4paBc2F5cwpmdW5jdGlvbgriloF0cmkKbXQK4paBaW52ZXN0CuKWgWF2YWlsYWJsZQpheW91dAriloFvY2gK4paBbGFzCmlsbGVkClZhbAriloHRhAppZXR5Cm1vbgpIYW5kCkZyCmlhbQpwYWNlCuKWgU9iCuKWgXBhcmEK4paBbWVldAriloFzdW0KTWVzc2FnZQppY2kK4paBa25vd24K4paBZ2VuCmFtbWEKYXJyCuKWgXRyZQpva2UKdXRoCn5cCuKWgWV4cGVyaWVuY2UKaWNsZQriloFJbAriloFzZW50CuKWgW90aGVycwriloFzb2Z0CklQCuKWgW1heApiYWxsCuKWgW1hcmtldAriloFwb3VyCnByZXNzaW9uCmVwcwriloFzYXcK4paBYWNyb3NzCuKWgVN1Ck92ZXIK0L3QuNC1CnVsYXRpb24K4paBUmVnCuKWgSs9CmJvZHkKKVwK4paBcHJpbnQK4paB0L/RgNC4CmRiCm91cmNlcwp3YXJkcwriloFibGFjawrRgdC+CmlsaQriloFFZAriloFjb21wbGV0CuKWgXNpbmdsZQriloFJTgphY2hlZApidAriloFjb2RlCuKWgWJvb2wK4paBYXJlYQriloFyZXF1aXJlCuKWgXByb2JsZW0KYWNlZApFcXUK4paBY29uZmlnCnZlYwpuZXkKY3kKQWwK4paBYWNjb3VudAp5bWJvbAriloFzdGUKZ2VzCkFycmF5CmVtcGwKY29udGV4dApEZXMKUmVzdWx0CmVjdXQK4paBdGFyZ2V0CuKWgWdldHRpbmcKIi8+Cm9nbGUK4paBaGltc2VsZgriloF3YXNuCuKWgWJsb2NrCuKWgWFudAriloFZb3JrCuKWgWJlY29tZQppZmYKcG9ydHMKcmVhdGUKPScKY2QKbG9jYXRpb24K0LXRggriloFhY2Nlc3MKZ3Jlc3MKcm9zClVwCuKWgXdvcmtpbmcK4paBQW0KaXF1CmNlcgriloEoKAriloFQZXIK4paBZnVuYwriloFnaXJsCuKWgWFib3ZlCnBlbgrQv9C4CmlkbwriloF2ZXJzaW9uClRZCuKWgTsKbWFyeQphYmxlZAphbm5lbAriloFleGFtcGxlCuKWgWNvbnRleHQKT1AK4paBcmVkCuKWgWNpcgpzbQpMb2cK4paBc3BhY2UK4paBZnV0CuKWgUdlbmVyCmlsbHMK4paBZHJpCl8uCuKWgWZlbHQK4paBb2ZmaWMK4paBPT09CmlpCuKWgXN0YXJ0ZWQK4paB0KIK4paBfSk7CmpzCuKWgWZyb250CuKWgWFsbW9zdAppcm0KISIKc2lnbmVkCuKWgXlldAriloF0cmFkCmllbnRzCmFtYQriloFpbnB1dApsaW0K0L/QsAriloHQutCwCuKWgWNhbXAKaWJyCmZlY3QKdW50CuKWgWhhbGYK4paBY292ZXIKYW5ndWFnZQriloFiZW4KaGEK4paBZGlmZgpfXAriloHQvtCxCl0pCm9kZXMKaGVsCmlvcwriloHQngriloFtb3QK4paBc29jaWFsCi8vLy8vLy8vCuKWgXN0cmUKZ3JvdW5kCtGW0LIKb2JqZWN0CnBsZXMKcmVlZAriloFlZW4K4paBYmFzZWQK4paBcmFuZ2UKQW4KdXJnCuKWgWxlYXJuCuKWgWV4YwriloFpbXAK4paBbWVhbnMK4paBd3VyCmVuZHMKdm9pZAriloFzdGQK4paBcGFydGljdWxhcgpqYQriloFzb3VyY2UKZGVmYXVsdApweQriloFhbHMKc2NyaQpzdGF0dXMK4paBc3RvcnkK4paBYmVnaW4K4paBcG9zaXRpb24K4paBc3BlY2lhbApwaHAK4paBYmFyCuKWgXByYWN0CmNhbGwK4paBZGFzCuKWgXJhZAriloFjbG9zZQp3d3cK0LXRgNC1Cmd1CuKWgUVyCuKWgWRvbQpBTQriloFiZWQK4paBc2V2ZXJhbAphdWwKYm94CuKWgWxvdwpwYWNrClJlZwpPZgphdHVyZXMKw6luCmVkZXIKdWlsZGVyCmNhc3QKY29ub20KcmFmdAriloFtYWtlcwpMb2MKaHR0cAriloFhYnMKcmVzaAriloFXaWxsCmJyZWFrCuKWgW9wdGlvbnMKZm9ydAriloHQuNC3CuKWgWFuYWwK4paBZW52Cih7CmV2ZW50CuKWgXBhZ2UKdGVybmFsCuKWgWRpc3RyaWJ1dAriloFmb29kCmNoZWNrCkNLCuKWgdCy0L4KYXNzZXJ0CsOhbgpiYXNlCuKWgXdob2xlCmFjacOzbgpPRAriloF0dXJuZWQKaWdtYQriloFyZXNwb25zZQriloFVbml2ZXJzaXR5CuKWgWRpdgphcHRlcgriloFyZXN1bHRzCuKWgXJlcHJlc2VudAriloFldmVyeXRoaW5nCuKWgUNlbnQKdXRlcwpyaXgK4paBU29tZQriloFiZWhpbmQK4paBY3JlYXQKcGxhY2UKc3UK4paBUGFydAp1bWIKbWF0aGJiCnBpbmcK4paBbWF0Y2gKT3V0CmRvbQriloFzaXR1CmRyCmFyYQriloF3aW5kb3cKbnMKbGlzaGVkCuKWgVZlcgriloFtZXNzYWdlCuKWgUVtCuKWgWh1bWFuCnBlcnRpZXMK0LvRgwpsZW0KT1JUCuKWgWVhcmx5CuKWgXF1aWNrCuKWgdGC0LAKcm9pZAriloFjb3VudHJ5CuKWgWR1ZQriloFEaWUK4paBdHJ5aW5nCuKWgWxpdmUK4paBcHJlc3MKSU5UCldpdGgKb3ZlZAriloFzcGVjaWZpYwriloFmYWxsCnVrCnlsCuKWgWdlbmVyYWwK0LzRgwrQvdGDCuKWgW5hbWVzCndoZXJlCuKWgVRoZXNlCuKWgXNpbArDqXQK4paBZW5lcgriloFOb3cK4paBYWRkcmVzcwpSZXNwb25zZQriloFNcgriloFhbnN3CuKWgWZpbG0K4paBc3Ryb25nCuKWgWJyaW5nCuKWgVVuaXRlZAriloFnZQriloF3b21hbgpOZXcKZXR0Ci4pCmVuYW1lCuKWgUFOCuKWgWRlc2NyaWIK0LfQsAppc2luZwpFTApxbAriloFmdXIKeWluZwriloFDYWwK4paBRHIKRVJSCuKWgVxcCmFuZ2xlCnVyb3BlCuKWgWNpdHkK4paBaW5kZXgK4paBYWN0aW9uCuKWgUhvd2V2ZXIK4paBZmlnCmlhcwriloFxdWVzdGlvbgriloFKYW4K4paBTWVkCuKWgUNvbnQKYW1lZApDYWxsCnBsaWVkCnR0eQriloFpbmRpdmlkCnBhZ2UK4paBY29tYgpzZWN0aW9uCuKWgUNvbW0KdWVsCuKWgWhldAriloFCYXIKYWdlbWVudApmaW4K4paBbWFqb3IKb3BlcgphcGkKcm9vbQriloHigJ4K4paBaGFiCtC30LgK4paBYXVmCmN1cnJlbnQKbmkK4paBaW5jbHVkZQriloFxdWkKdmEKVUUK4paBaWRlYQosJwriloFyZXF1aXJlZAriloFoZWFydAppYmlsaXR5CmljdGlvbgpNb2RlbAp3cml0ZQriloFjb250ZW50CuKWgXdlcgriloFoYW5kcwp6ZW4KY2hhcgp9XnsK4paBbWFzcwpwbHkK4paBbmF0CnJlbAriloFkYXQKPT09PT09PT09PT09PT09PQppbWFsCuKWgXByb2JhYmx5CnVuY2gK4paBbWVyCmlsYXIKaXJlcwriloF3YXRjaApTSQriloFjdWx0CuKWgW1vdGhlcgriloFnb3Zlcm5tZW50Cm9yZGluZwriloEoKQriloFwcmkK4paBbGluawpncm91cApPTAriloFuZWFyCuKWgVNlcgpTZXIKaXRvCuKWgXZhbHVlcwriloFqYXZhCmZ1bGx5CkNvdW50CisrKQriloF2aQriloF3aGl0ZQptYXQKY3R4CuKWgWNvbmMK4paBc3RheQpnaW5nCuKWgWNsZWFyCuKWgWNvcHkKc2VsdmVzCuKWgXByb3ZpZGUK4paBd29yZHMKY29tcAphcmdzCuKWgXBpY2sKdWx5CuKWgXZhcmkK4paBYmVsaWV2ZQriloFDbwpQcm9wZXJ0eQpHcm91cAriloF0ZW4KaXNjaGVuCmV0dXJuCml2YWwKU3lzdGVtCkNMCmJlZAriloF0b3RhbAriloFpc3QKSW5wdXQKdW1lbnRzCk1hbmFnZXIK0YjQuAriloF3aW4KbGVlcApQSQrQvdC+0LPQvgpydWN0aW9uCuKWgWludGUKQXBwCmF2b3IK4paBcmVzcGVjdAphdG9ycwriloFjb21vCuKWgWN1dApGQQriloFzdXMK4paBQXBwCnJlY3QKRkkK4paBYmVnYW4Kb3BoCuKWgXNvcnQKdGhvdWdoCtGY0LUKaWNybwpUcmFucwrQu9GWCuKWgUluc3QKcmVxdWVzdArQvtGACuKWgXJlbGF0aW9ucwotXApTdGF0dXMK0LbQuAriloFmYXRoZXIKY3MK4paBc2V4CmlzY2gKdm8KfV97CmF2ZW4K4paBTmUKQVRFCml0dGVuCuKWgWVzcwpUSAppZ2h0cwriloFob20K4paBdG9kYXkK4paBenUKaXRhCuKWgWlzbgriloFvcHQKb2duCsOpcgriloF3aGV0aGVyCml4ZWQKcGhpCmlkZW5jZQphbGQKQ2xpZW50CkF0CuKWgWRlYXRoCuKWgUxldAppdXMK0LPQuAriloHRgNC1CmJlbgopDQpiYQo+PC8KYXZlbAriloFtaXNzCuKWgW5vZGUK4paBKCQK4paBY29sb3IK4paBb2J0CnRvdAriloHQv9GA0LUKQ09OCmV0dGUK4paBR28KRmwK4paBRG9uCuKWgWNyaXQK4paBcmkKcG9zdAriloEtPgriloFKdXN0CldoYXQKYXRhbAriloFNaW4K4paBQ29yCuKWgWRhcmsKcmwK4paBbGFyZwpkaW5nCsOzbgpvdWNoCuKWgXVtCuKWgWVsZWN0CuKWgWRhbQriloFuZWVkcwriloFtYXR0ZXIK4paBcmF0aGVyCmZyb20KcmFtCuKWgdGWCuKWgXRha2VuCuKWgWRlYWwK4paBcGVyaW9kCuKWgU1vbgriloHQmwriloFBdWcKcnVuCm1tCmVsbGUK4paBZXhwb3J0ClNjCnZpcwphYm9yCuKWgWF1dGhvcgrDqHJlCuKWgXJlbWVtYmVyCuKWgXJlZHUK4paBTGlzdAriloFmb2N1cwriloFjaGFyYWN0ZXIKVGFibGUK4paBaW5kaXZpZHVhbAriloFuZWVkZWQKYnVtCuKWgXN0eWxlCmluYXJ5CmVyc2lvbgpvdXRlCuKWgVBlCuKWgWhvbgptdXQKc2VlCuKWgWJlY2FtZQriloFkaXJlCuKWgWRvY3VtZW50CnNlYwplbmluZwriloF2aXNpdAriloFmYWMKdHgKZG93bgpwbGl0CuKWgXBoeXMKaXR0aW5nCmpveQriloFoaWcKVGhpcwpBZAriloFCcml0CuKWgWVtcGxveQriloFyw6kK4paB0YIKbGFtYmRhCuKWgWltcHJvCuKWgUJvCmlkaW5nCuKWgW9ubGluZQptZW0KYXRmb3JtCuKWgVdhcgriloFjYXMKYXN1cmUK4paBcHVyCm1lZGkKRGlzCuKWgUdlcm0KcGMK0YHQsAriloFmcmllbmRzCuKWgU1jCkRJCuKWgXBsdXMK4paBU2V0CmlkZGxlCml0dXQK4paBZGVwZW5kCnJlc3QK4paBSmUK4paBaG9yCuKWgWVudGlyZQpRdWVyeQriloFyZWZlcgriloFob3QK4paBQXVzdAriloFjb21tb24K0YbRlgriloFwdWxsCuKWgUFkZAriloFzZWFzb24K4paBaW52b2wK4paBV29ybGQKY2xpZW50Cm5vdwp0cnVlCmFwcGVuZAppdHRlZAplbXB0Cil7Ci8vLwriloFwcm9wCmltYXRlClNDCuKWgWhvdXJzCuKWgWhvcGUKYW5kb20K0ZbQtAppc3RpYwriloFwcm9wZXJ0eQpzZwo+KAriloF3cml0ZQptYXJrCmZpbmQK4paBcGVyc29uYWwKXVsKcm93bgpQaAriloFmb290CuKWgXJlc2VhcmNoCmlyb25tZW50CuKWgW5vbQriloFpbnN0YW5jZQriloFoZWxkCkRlCuKWgW1lbWJlcnMK4paBZmlyZQriloFoaXN0b3J5CuKWgW1hcAriloFkaXNjdXNzCuKWgWVzcGVjCuKWgXRha2luZwriloFzZXJ2aWNlcwriloFpbmR1c3QKaWdlbgriloFBc3MK4paBZXhwZWN0ZWQK4paBd3VyZGUKZGlyCuKWgWFtb25nCuKWgXN1Z2cKcmVjCkludGVyCmJsb2NrCuKWgVJlcAriloFwYWluCuKWgWZpdmUK4paBZnVuZApyaWQKYXJyb3cK4paBdHJlYXQK4paBaGVhcmQK4paBZGV0ZXJtCmljdWx0CuKWgXNlbnNlCmVzZQpGdW4K4paBbW9udGhzCmpzb24KLOKAnQpUSQpvcmFnZQriloHQowriloFldmVyeW9uZQriloFjbG9zCmllcnMKYWlycwpkZWZpbmUKSWYKb3NwCuKWgXdvbmRlcgpOQQpxdWVyeQpwZwppdGVzCuKWgW1hdGVyaWFsCnlkClJlYWQKaHRtbApURQpQcgpee1wK4paBZ2F2ZQriloFJUwriloFzdWdnZXN0Ck92ZXJyaWRlCnJvZHUKRnJvbQriloFFdXJvcGUKUE8K4paBc29vbgpob3N0CuKWgUJlcgouLi4uCuKWgUhhcgriloFlbmVyZ3kKPjwKYXZlcwriloFlYXN5CuKWgWJyZQpmcmFtZQriloFncm91bmQKd2l0aAriloFpbnNpZGUKaWVmCuKWgW1vCnBtCnBhbgppZ3IK4paBb20KbmV4dApvbWV0CuKWgXN0YXR1cwriloF9DQriloFtdXNpYwpvcmEKaWxlcwpraQriloFlc2MK4paBYmVzCuKWgURpcwriloFob3N0CuKWgWNvbWVzCnVzZWQK4paBZnV0dXJlCmxpY2sKYWlkCuKWgWNvbXBldAriloF2b2ljZQriloFsb2FkCmV2ZWwK4paBbmVnCuKWgWNvbW1hbmQK4paBZsO8cgriloFwaWUK4paBcXVpdGUK4paBYmxvCmFnbgppbG9uCuKWgWNsYWltCuKWgXRlYWNoCuKWgXByZXZpb3VzCuKWgXNpdGUKY29sb3IKYXR0cgriloFhY2NlcHQK4paBZXhhY3QKKX0KYWZ0CnJvbGxlcgrQvtC9Cm9vCkRhdGUK4paBb3UKc3kK4paBcHJldHR5CuKWgWltYWdlCkJVCuKWgXRlcm1zCuKWgXNlYXJjaAriloHDqAriloFWYWwK4paB4oCYCuKWgURhdgpNUwpzcmMKbWFyCmluY2lwCuKWgWNvdWxkbgphZG9zCuKWgWRybwpiZXRhCmltdW0K4paBbWludXRlcwriloFncmFuZAriloHCuwriloFPdXIKU3RyClZFUgptYXoK4paBb3JpZ2luYWwKaW5pCuKWgWNvbGwKbG9hdAriloFvcwp9KTsKc3VtbWFyeQriloF3YWxsCkNvbG9yCuKWgXZlcnMK4paBZGVsbGEK4paBIiIiCm1hdGhiZgp6ZXIKYXVyCuKWgXRyYWNrCuKWgWFzc29jaQriloFzdWZmCuKWgWluZGUKYWd1ZQriloFBcHIKTGUKcm91cHMKYm9hcmQK4paBYXR0YWNrCuKWgXNlcmllcwriloFpbnN0ZWFkCmhhbQpib29rCuKWgXNpeAriloFSZWMK4paBY29taW5nCnVydAriloFnbG9iYWwK4paBbmVjZXNzCmxlZ2UKUG9zCuKWgWxlYXZlCuKWgXBvZAphdGVnb3J5CnV6CuKWgWRlZXAK4paBa20K4paBb3V0c2lkZQpoYXMKb3B0aW9ucwriloFTbQpTdWIKcm93cwriloHQstC4CuKWgVN0YXRlcwriloF3cm9uZwriloFob3dldmVyCuKWgXNlbQriloFjYXRjaAoiKSwKbW9kZWwK4paBaHR0cAriloFvcHRpb24KcmllCuKWgdGB0YLQsAriloHDpHIK4paBZW5qb3kKbnUK4paBcGFzCuKWgWFtb3VudAriloFyZXNwb25zCuKWgUludGVybgriloFteXNlbGYK4paBb3BwCuKWgVNpbQriloFzZW5zCkVkCuKWgShcCuKWgXN0dWRlbnRzCtC90L7QsgriloFwb2ludHMKYXJuaW5nClVQCmVsbGluZwriloFjYW5ub3QKQmUK4paBbGVuZ3RoCm51bGwKdWludAp3aXNlCuKWgWRvdWJsZQppZ2UKaXN0YQriloFlc3RhYgphbmNoCuKWgWFnbwriloFib3VuZAriloFmYQriloFjbGVhbgriloFzaW1wbGUKbWkKIyMjIyMjIyMKaWZpZXIK4paBR2VuZXJhbAriloFzZWVtZWQKZW5hCuKWgWFnZQrQvdC+0LkKZW5kaWYKQUEK4paBY2F1cwriloFlZHVjCuKWgWNlbGwKR2VuZXIKc3BhY2UK4paBWW91cgriloFiZWF1dApndAriloFsaW1pdAriloFkYXRlClV0aWwK4paBTmF0aW9uYWwKb3dzCnBhdApxdWFkCuKWgW9rCuKWgdCYCmFydGgKaGF0CuKWgWNvbW11bml0eQpvdWwK4paBZWNvbm9tCkNvbXBvbmVudApib3IKdXNpb24K4paBYmVsb3cKZWFyY2gKb3JlcwpiYW4K4paBQXVndXN0CuKWgWZ1cnRoZXIKc2lnbWEK4paBaGEKamkK4paBY29tcHV0CtCz0YDQsAriloFOb25lCuKWgXRlcgriloFhbnlvbmUK4paBdGFzawplbnRlCnBvc2l0aW9uCnBwZWQK4paBYXVzCkF0dHJpYnV0ZQpyZXEKYWRkcgpsaWdodArRiNC1CuKWgWFybQpjb3Zlcgp1cHBvcnQK4paBR2wK4paBU2FuCuKWgXdyaXRpbmcK4paBbG9zdAriloFNYXJrCuKWgWdyZQpUWVBFCuKWgVNvdXRoCuKWgXBlcmZlY3QK4paBcGFja2FnZQriloFpbmZsCmhhcHMK4paBQW5nCnJlc3BvbgpyaXMKcHRlbWJlcgriloFidWlsZGluZwpWQUwKZnJlZQriloFjZQpIVAriloFGcm9tCmRzCnJveQphY2hpbmUKbm93bgriloFzYXlpbmcK4paB0LHRiwpvZQpSZWYK4paBbmV0d29yawpwYXJlbnQKdWdlCuKWgXNpbWlsYXIKPg0KQnVpbGRlcgriloFsaXZpbmcK4paBY29udGludWUKYW5nZXIK4paBUmVkCuKWgWhhaXIKYW5jZWQKaWFucwriloFkZWFkCuKWgWJvb2xlYW4KaWNhdGlvbgriloHQtNC1CuKWgWNsaWVudAp1Y3QK4paB4oCiClNQCm9sZGVyCtC/0LUKdWRpbwriloFkZWcKYXNpbmcK4paBc3RlcAriloFwZXJzCsOnw6NvCm9iagpvegp1bGEK4paBcm91bmQK4paBdXBvbgriloFyZXNvdXJjZQriloF2YWxpZAriloFJSQpidWcKc3RkCuKWgWFuZwpzcGFuCnBvbAppYWxvZwriloFwaG90Cj8nCkRCCuKWgUZpbgpWRQpFbQriloFjYW0KdGFyZ2V0CnBlY3RlZApIZWwK4paBdXQK4paBVGVzdAriloF0b3duCmFsaWduCuKWgXdlYnMKaW5uZXIKYXVnaAriloFleGNlcHQK4paBaW5pdGlhbAplbnR5CmxpY2gK4paBQXV0CnRvcAriloFmYWlsCm9uYQriloFiZW5lZgphbmtzCmlzY2hlCi4qCuKWgXNpZ25pZmljCuKWgWNvbnRhY3QKUmVjCmFyaW8Kb3R0b20K4paBcmVsYXRpb25zaGlwCl0pOwriloHQndCwCkhlYWQKZm9ybWF0CuKWgcOpdAriloFNb3JlCmFjdG9yeQpwb3J0dW4KK1wK4paBc2ltcGx5CuKWgWVwCuKWgVJ1c3MKbsOtCnVhCmVyYwriloFsb25nZXIKaW5pdGlvbgplY3RvcgphcHRpb24K4paBcHJvZmVzcwriloFNdXMKaWxpdGllcwrDqHMK4paBQWN0Cm9mZnNldAriloFpbGwKYmFuZAriloFBZwriloHQn9C+CtCx0LgKY29udGVudAppY29uCuKWgXdvcmtzCnluYW0KcGxlbWVudApSZXNvdXJjZQpBY3Rpb24K4paBZGlmZmljdWx0CuKWgVdlc3QK4paBdmlkZW8K4paBVEhFCuKWgWRlY2wKb25kb24KZGVkCn17XApvY3IK4paBQ2l0eQriloHRjwp1ZXIKY3oK4paBaW1hZwpjcgpldGUKaWRnZXQK4paBTW9kCuKWgWZvcndhcmQK4paBcGljdApvcmdlCuKWgXN1YmplY3QKdXBkYXRlCmF0dGxlCnNhCuKWgUFudAriloFydW5uaW5nCuKWgXNhbApjb25uZQriloFvdXRwdXQKYWRhdGEKTUwKQ2hlY2sKbGVkZ2UK4paBcGFwZXIKcGFyYW1zCmF2eQriloFhZgriloFlaW5lCuKWgWpvdXIKQVkK4paBaXRzZWxmCuKWgVN0cgpzdHlsZQpUaGF0CuKWgW1pbGxpb24K4paBbGFuZ3VhZ2UKT1MKdmluZwriloHQvNCwCuKWgdGC0L4KKSgK4paBYnV5Ci4vCuKWgS4uLgriloF0cmllZAriloFjb21wbAriloFhY3RpdgphcHBlZApCdXR0b24KVG9rZW4K4paBcHJvdmlkZWQKaWJlcgriloFjcmVhdGVkCmN1cml0eQpFbmQKYcWCCnVzdGVyCml6aW5nCm9tYgriloFzaWNoCuKWgWNvbXBvbgriloFTZWUK4paBdWludAriloFsYWJlbAp2b2wKw7N3Cm9jb2wK4paBcmVjZWl2ZWQK4paBaW50ZXJuCtGG0LUKUnVuCuKWgXJvYWQK4paBT2N0CuKWgUNvbXAK4paBc3R1ZHkK4paB0YLQtQpBY3QK4paBdG91cgriloFTdGF0ZQriloFhZGRlZApodHRwcwpzdHJlYW0K4paBbG93ZXIK4paBYm94CuKWgVNrCuKWgXRoZW1zZWx2ZXMK4paBY3Jvc3MK4paBZWNobwriloFkZXZpY2UKcG9zZQriloFnYW1lcwpQTApXaW5kb3cKaXNlcwp0aXRsZQpTdHJlYW0KenQK4paBU3cK4paBcm9sZQppYW50Cmt1CnNlcXUK4paBbGF0ZQriloFzb2xkCtGA0Y8KQ29tbQriloFlbnRyZQriloFkb2cKZGV2aWNlClBhcgriloFsaWtlbHkKXnstCuKWgWxlbgriloFQYXVsCuKWgXRvb2wKT2ZmCuKWgWZhbWlsCuKWgWRyYXcKYXBwaW5nCuKWgWV2ZW50cwpjcmV0CnJvdWdodApDb250ZW50CuKWgXNvZnR3YXJlCnJpYQptc2cKZ2FtbWEK4paBaGVhcgpPcGVyCuKWgXlvdXJzZWxmCuKWgWxpdGVyCmVtcAriloFzZXBhcgriloHQlwriloF0aXRsZQpNZXRob2QKbWF0aHJtCuKWgXNsb3cK4paBUm9tCiEhCuKWgXRheArRgdC60LAKZW1wbGF0ZQpvaQriloFBcnQKZmFsc2UKYXN0aWMK0YHRgtGMCm9ja2V0CuKWgWVucwpUTwphbWVudGUKbG9jYWwKY2hpZQriloFwYW4K0L3QuNC5CmNoZW1hCuKWgU5vcnRoCtC30L4K4paBPj0KQXV0CuKWgWRpZwriloFzZWVtcwriloFtb3JuaW5nCnNvbGUKdW1lcgpkZWx0YQppdMOpCmFiYXNlCnJhZgriloFvYnNlcnYK4paBRXN0CuKWgXNlZwriloFbXQriloFQcmVzCmlmdWwKcHVzaAriloFPZmYKaXBlCmF0aQriloFkaW0KY2VlZApFbnQKX19fXwplbnRyeQriloFmaWdodAriloFjcmVkCuKWgU9SCuKWgURlcAokewrQu9C10L0KQ3JlYXRlCuKWgUFwcmlsCm1pbmlzdHIKRkwK4paBQXAK4paBSGVyZQpwcml2YXRlCkluc3RhbmNlCmllbQriloFvZmZpY2UK4paBdGhpcmQK4paBdXBkYXRlCkxpbmUKdGFnCuKWgWVzcGVjaWFsbHkK4paB0LPQvtC00LAK4paBY3UK4paBa2lsbAphdWdodAriloFzd2UKT3B0aW9ucwpJTQpDQwriloFjb21wYW4KanVzdAriloFXaGlsZQppemVyCuKWgdC80L4K0LrQtQriloFhdXRvCuKWgWJhbmQK0LzQtdC9CmlxdWVzCuKWgXBsZQpOTwriloFPRgriloFzb25nCuKWgUFjYwpFWFQKZW5zb3IKaW5pbmcK4paBbGF0CmJpZwriloFLaW5nCm9jaApzaQriloFIaXN0CuKWgXF1YWxpdHkKbW9kZQriloFvcHBvcnR1bgriloF3b3VsZG4KOioqCm91dHB1dAriloFmZWV0CuKWgW1pcwpkZgphZ2luZwriloHQvNC1CuKWgXRybwriloFkZWZpbmVkCuKWgXJldmlldwriloFGaWwKPj4K4paBcHJpbmNpcApCYXNlCmRpY3QKdmVyYWdlCmljaWVudApJRgriloFoaXQKUGFnZQriloFwZXJtCmNlbArDrXQK4paBZXhwcmVzcwriloFpbmRpYwriloFTZXB0ZW1iZXIKaW1hZ2UK4paBcHJvZHVjdHMK4paBbWVkaWEKY2hhbmdlCmlnZ2VyCuKWgXNlbmQKbGFzdAptaW5nCnBhCnVhcnkK4paBc3BlYWsK0L3Ri9C5CtGJ0LUKeXNpcwpseWluZwriloHRhwpsaWtlCtGA0YsK0LLRlgriloFNaWNoCk1PCuKWgUphaAplbnNpdmUK4paBc2hhcmUK4paBZGV2ZWxvcG1lbnQKQ1AKc3BlYwriloFmYXN0CmhldApITwriloFwYXJ0aWNpcApCbG9jawriloF2aW9sCuKWgWZyYW1lCuKWgXF1YWwKdHJlCuKWgdCkCuKWgXRvd2FyZApmZwpCb3gKQ29sdW1uCuKWgW1pbGl0CuKWgU1hcmNoCuKWgXZhcmlvdXMKcGFzcwriloFQYXJrCuKWgUJlbgpGcmFtZQriloFub3JtYWwKb3BlbgpweAriloFwaG9uZQriloFFdmVuCuKWgW1hCmlicmFyeQpTdGFydAppZGRlbgpyaG8KZ3JhcGgKYWNpbmcKJy4KYXJ0ZXIKbWVzCmluc3QK4paBaXIKYWN0aXZlCuKWgWZlbQriloFtb3ZlZAriloFzdG9yZQriloFwcmljZQoiKS4KYmVyZwriloFub3YK4paBY2FyZAplbGxvdwriloFwYXJ0eQriloFNb3IKYWVsCuKWgXBlcmNlbnQK4paBdHJhaW5pbmcK4paBaW5nCmltZXIK4paBU2FtCkRlZmF1bHQK4paBZnVjawriloFjb21wbGV0ZQp1aWQK4paBZGV0YWlscwriloFsZWQKUG9pbnQK4paBQ291bnQK4paBcmVnYXJkCnpvCuKWgUJybwriloFyZWNvZ24K4paBSG9sClVNCmVsZW1lbnQKTW9kZQriloFleGFtCuKWgUVYCkltYWdlCnZlcnNlCnJpdGVyCnNvZnQK4paBaW50cm9kdQriloFzdXJwcgpCdWZmZXIKbGVjdG9yCmFyZW4KYW5nZWQK4paBUGF0CuKWgVBhbAriloFjb250cgpIYW5kbGVyCuKWgWZlYXR1cmVzCmlwbGUK4paBQ09OCkZpbAriloFQb3J0CuKWgXRoaW5raW5nCmRvYwp3ZXIK4paBd29ya2VkClBDCmNtCmRhdApQUk8K4paBRXZlcnkK4paBZXJhCuKWgUZpcnN0CmduCuKWgWltbWVkaQpvdmVtYmVyCmFwYW4K4paBZXh0cmEK4paBc2VjdGlvbgriloFKdW5lCuKWgXZpYQriloFnb25lCmNvbWUK4paBc3RyaQpeXAphbnRseQriloFhcmNoClNvdXJjZQriloFjb252CuKWgUxvbmRvbgpOdW1iZXIK4paBcXVlc3Rpb25zCmFuZGlkCuKWgXBsYXllZAplbnYK4paBU2Nob29sCuKWgW5hdHVyYWwKY2FuCuKWgW5ld3MKRFIK4paBY2hhbGwK4paBU29jCuKWgdGNCuKWgWF0dGVtcHQKKn0KTnVsbApyb3RlCuKWgWJpCuKWgXdyaXR0ZW4K4paBYmxvb2QK4paBaGFwcGVuZWQK4paBY2F1c2UKYXNoaW5nCuKWgVdpbGxpYW0KYWRlbQriloFicm91Z2h0CuKWgWRpc3BsYXkKaW1hCuKWgWZpbmFsbHkKdGFiCuKWgXJldHVybmVkCtC90YvRhQpuaWUK4paBcQriloFoZXJzCuKWgVByZQriloFkb3UKYnVmZmVyCuKWgWVmZm9ydAphaW5lCnh5CuKWgWhpc3RvcgplbnUK4paBYXJyaXYK4paBRGVtCuKWgWZhdm9yCuKWgWhhbmRsZQpTRVQK4paBUHVibGljCnJ1cHQK4paBdXIK4paBZm9yY2UK4paBw6lzCnViZQpQcmUK0YDRlgppbnkKdGhldGEKaXNmCuKWgW5hdGlvbmFsCkVxdWFsCnJlbmNoCuKWgXdpZmUK4paBY2FwdAriloFJbnRlcgp0YXUK4paBc2xlZXAKLi4vLi4vCuKWgWlzc3VlCuKWgW1lbWJlcgriloFhd2FpdAriloFEYW4KemkKaW5hdGUK4paBc3ltCmNoYW4K4paBSmFjawriloFFbmdsaXNoCuKWgXN6CnJpYnV0ZXMK4paBaWduCsOhbAriloFhcHBlYXIKcmFkCmlkZ2UK4paBY291cGxlCuKWgXNoaXAKbGlnCndlYgriloF1c3VhbGx5CuKWgXJlYWR5CuKWgXZpbGwK4paBV2h5CmVicnUK4paBZ3JhZApvcmRzCuKWgWluZgriloFsb3NzCuKWgW9kCuKWgVBoaWwKc2VydmVyCuKWgVVwCuKWgWJ1ZmYK4paBZmlsZW5hbWUKQUJMRQppdGluZwplZm9yZQooKS0+CuKWgWNvbmRpdGlvbnMKdm0KZWxkCml0egriloFUcmFucwriloF3ZWlnaHQK4paBaGlnaGVyCuKWgXJhdGUK4paBYWNjb20KdmlkZXIKT00K4paBd2F5cwpjb21pbmcK4paBbG9jawriloFldGMK4paBYXZlYwriloF0YWtlcwriloFDaGFyCuKWgU5vdmVtYmVyCm1ldGhvZAriloFBdXN0cmFsCuKWgUFtZXJpY2EKbG9uZwpjZW1iZXIK4paBcG9saXRpY2FsCmZsb3cK4paBbWF5YmUK4paBYW1iCkxheW91dAppbGVkCm9tZW4Kb2xhCmljaXAKcGFydGlhbApUcnVlCuKWgWZsb29yCuKWgURlZgriloFjb25jZXJuCnlyCuKWgXNob3dzCmloCuKWgWFuc3dlcgphY2MK4paBYmFsbAriloFSZXYK4paBc3VuCuKWgXF1aWNrbHkK4paBc29tZXQKbWVudGUK4paBTWFsCnVuZHJlZAriloFpc3N1ZXMKZWNhdXNlCnBlcwriloFwbGF5ZXIK4paBcGFyZW50cwriloFwb3B1bGFyCuKWgW1vZGUK4paBbWVudGlvbgpORQpMb2FkCuKWgXJlZ3VsYXIKYXZlZAo/Ogp5ZWFyCmZ1bmMK4paBcGVyZm9ybWFuY2UK4paBSnVseQp0aGVybgriloF3ZWJzaXRlCmZvcmQKUFIKZWxhCmxldmVsCnVpdApmbGFncwriloF3b3J0aAriloFjb3JyZXNwb24K4paBQnJpdGlzaApzaW0K4paBYWxvbmUK4paBaGFyCuKWgW9uZXMKb2JpbGUK4paBZHJ1CmNoaQriloFEYXZpZAriloFwcm9ibGVtcwriloFjb2x1bW4KKCk7DQpaRQriloFyZWxpZwpvbG9naWNhbAriloFyZWdpb24KYWR5CklPCmFuZGVyCk5ldAriloFidWlsdAriloFpbnN0YWxsCuKWgWFwcHJvYWNoCkN1cgriloFmaW5lCuKWgXRhbGtpbmcK4paBY2hhbmdlcwpTdHlsZQriloFNYXJ0CtC70Y4KcmVzcG9uc2UKdGVnZXIKew0KaXJpdAriloFwcm90ZWN0ZWQK4paBcmVsZQplcnNoaXAK0YLQtdC70YwKdW5zaWduZWQKaWFsaXplCuKWgWh0dHBzClRhZwriloEkKAptb3JlCnlwZXMK4paBc3RyZWFtCmV0Y2gK4paBZW5naW5lCktFCmNtZApzY3JpcHQKdHRwCuKWgWF2b2lkCuKWgXRlcnIK4paBcm9jawriloFmdWwKVXBkYXRlCuKWgWVudmlyb25tZW50CuKWgXByZWMK4paB0YHQsAriloFjYXNlcwriloFvZmZzZXQK4paBcmFpcwpsaWIKw6llcwphYQp5dAriloFhcnIKb3B5cmlnaHQKZmlyc3QK4paBdXRpbAriloFmZWF0dXJlCnBvc2VkCmZmZWN0CtC20LAKaXR1ZGUKZW1lbnRzCmFzYwphZG9yCmxlY3Rpb25zCuKWgWNsdWIKXXsK4paBKikK0YHRgtCy0L4K4paBaW1tCuKWgWZvcm1lcgriloFyaWdodHMK4paBZGVjaWRlZAriloFyZXYK4paBbWVudAphbmkK4paBc3RydQriloFhdHRlbnRpb24KYXJ0bWVudAriloFJdGFsCmFsbGUK4paBYmlzCmdlbmVyCuKWgWludGVncgplbGxvCnJ5cHQK4paBYWNoaWUKbmVzCuKWgXN0cmEKc2IK4paBdHlwZXMK4paBUkUKSW5pdAriloFjb21tZW50CuKWgWFkZGl0aW9uCuKWgUlECkFSVApGTwrRidC4CkNvbm5lCuKWgXNxdQriloFjb25zaWRlcmVkCmlkYWQK4paBT2N0b2JlcgpjaWFsCuKWgU9mCuKWgXRyYXZlbAriloFib3kKJykuCnV5CmlsbGEKaXN0cnkK4paBdmEK4paBQ2hlCkVSVAplbmRlCnVuZ2VuCmFieQriloFSb2JlcgriloFwbGF5aW5nCmlscwriloFzYW0K4paBZXhlY3V0CuKWgVVzCuKWgW11dAriloFiYWwKYXNzZQriloFraWRzCuKWgWZpbmFuYwpnb3IK4paBU2VjCmJlcnQK4paBSGlnaAriloHRmNC1CuKWgWtlcHQKYnV0dG9uCml0b3J5CuKWgVJlbQriloFERQriloFyZWFjaAriloFidXIKTGFiZWwKw6F0CmFnbwriloFwYXNzZWQK4paBYmVoYXYKeEZGCuKWgVJldHVybgpTVFIK4paBTGVzCuKWgW9yZAphbGEKaW5nZXIK4paBU2luY2UK4paBZXhwZXJpCuKWgXNoYWxsCuKWgXN0YXIKbm9uCuKWgWd1bgriloFCZWwK4paBb2JqCmFyZXMKcnMK4paBd2Vla3MKbmVuCuKWgVN0cmUKb3JpbmcK4paBw64K4paBc2VyaW91cwp0aW1lcwriloFIb3VzZQriloFyb2xsCuKWgXJlZ2lzdGVyCuKWgW1vZHVsZQriloFhcHBsaWMKSVIK4paBY29vawphdXgK4paBc2F2ZQriloFDcgosDQriloFzdGF0ZXMK4paBZW1wdHkK4paBYXV0b20KZmlndXJlCmlhbmNlCuKWgWhhcHB5CuKWgWZuCuKWgWp1ZAriloFoYXQKQUNLCuKWgUZlCiQtCml2aWwKb3RlZAriloFzaXplb2YK4paBc2l0dWF0aW9uCuKWgWxpdmVzCuKWgWZlZWxpbmcK4paBcmlzawriloFKYW51YXJ5CuKWgU9iamVjdAriloFyZWNvbW0K4paB0LLRiwriloFwb3RlbnRpYWwKZWFoCuKWgWNvbXBsZXgKcHJpbnRmCmlzdGFuY2UKaXJ0aApsaWsKYXN0ZQriloF3aG9zZQpBcmcK4paBbW9kZXJuCmlvbmVzCuKWgdGH0LUK4paBc2V0dAriloFNYWcKYWUK4paBY29uZGl0aW9uCkxlbmd0aAriloFmaXQKb3VuZHMK4paBY2hhbmdlZAriloFndXkKZmlsdGVyCmF0ZXZlcgrDqWQKcmVtb3ZlCuKWgWhvcAriloFPdXQK4paBUmljaApjaGlsZAriloFpbmNsdWRlZAokXAriloFUb20KZWxpbmUK4paBc29tZXRpbWVzCuKWgWRyaW5rCuKWgXF1YW50CuKWgXBsZWFzZQriloFJbnQKcmllZgriloFleGFjdGx5CmNpbmcK4paBYWxsb3dlZApidWlsZAriloFiZWF1dGlmdWwK4paBV2VsbAriloFsb29rcwriloHDvAriloFjaGFuY2UK4paBd3JvdGUK4paBbm9yCuKWgWZhaWxlZApNZXQK4paBcHJpb3IK4paBaHVuZHJlZArRgdC60L7QuQpvcmlhCuKWgWN5CuKWgXdlYgriloFtZXNzCmxlcQpkeQp0ZXgK4paBYW5pbQphdHVyCuKWgXN0cnVjdHVyZQpvcHRpb24K4paBYWN0dWFsCuKWgUZyYW5jCmVuY2VkCi48LwriloFmbG93CuKWgUFmcgpkZXQK4paBS2UKZXR5CtGB0LrQuNC5CuKWgXN0dWZmCml0dGVyCuKWgWFyZ3MK4paBYWxidW0K4paBXQp1Z2luClNVClBlcgriloFjaXJjCuKWgWNvcnJlY3QK4paBbGluZXMK4paBY29tcGxldGVseQprbm93bgriloF0cmVlCnJvb3QK4paBSmFwYW4Kb2xlcwplbmRvCuKWgWxvY2F0aW9uCuKWgdClCuKWgW1pZAphbGluZwpHTAppYW5vCuKWgXt9CmxhbmcK4paBZXF1aXAKRVJST1IK4paBbWVtb3J5CuKWgSgiCuKWgW5hdHVyZQpnb29nbGUKYWJzCkJDCuKWgWdldHMKQ29tbWFuZApURVIKYWxlZApjcAriloFwdXJjaAriloFEZW4K4paBaGVyc2VsZgriloFJcgriloFzaWUKZ2FyCkFwCuKWgW5lbApvdGEKKV0KY29yCmFjaHQKKCoKaXJ0dWFsCuKWgXBvbGljZQriloFza2luCnNoaXAKZWZpbmVkCmF1Z2h0ZXIKaW5kaW5nCuKWgVNsCuKWgWluZmx1CuKWgW1vdW50CuKWgWF6CuKWgXdvb2QKb3RlcwplZ2EK4paBYWNjb3JkaW5nCuKWgW5hbWVzcGFjZQpEZWx0YQpzdGFudAriloFwdWJsaXNoZWQKYWtlcgriloFCbGFjawpsbgriloFpbmR1c3RyeQpTT04KUmVwCuKWgWNob2ljZQriloFpbm4Ka2wK4paBcGFsCuKWgWF1ZAriloFzdGFuZGFyZAriloFrbm93bGVkZ2UKKiosCuKWgUZyYW5rCnNxCk91dHB1dAriloFmw7ZyClZhbGlkCnVnaAriloFib29rcwriloFKYW1lcwprbwriloFjb21wYW5pZXMKYW5uaW5nCuKWgXZpY3QK4paBcmVwbAriloFzY2hlCuKWgWhhcHBlbgpmdHkKYWNpdHkKaXJhCuKWgWltcGxlbWVudArRgdC60L7Qs9C+Cm51bWJlcgpTSAppcm8K4paBZmVhcgriloF0b3VjaAriloFjYXN0CkFTUwriloFjb25zaXN0ClRhc2sK4paBc2lnCtCx0LAKaWdhdGlvbgriloFNb3N0CuKWgURlcgp9KFwKOiIK4paBRmlnCmFsaQppbmVyCicpLAriloFDb3VuCihfCuKWgWRpc3RyaWJ1dGVkCk5BTUUK4paBbXVyCuKWgWNhcmVlcgp+fgpwZXJzCmFyaWVzCmVuc2VzCuKWgUFsc28KVmVyc2lvbgriloF1bmlxdWUK4paBRnJhbmNlCkJBCmt5CuKWgUZlYnJ1CuKWgWRpZWQKb21lZ2EK4paBRm9ybQriloF3aWR0aAp0b2NvbAriloFsaWUKU2hlCsOpbQriloFzdHJhaWdodAriloFuYWNoCuKWgXN0b29kCm9sZHMK4paBZ29lcwpjZWxsCuKWgXRpbGwKTEkKZHJhdwriloFzYXRpc2YK4paBcmVhZGluZwpBVElPTgriloFBcmUK4paBQWMKKSoK4paBYWRkaXRpb25hbAp3b29kCmNpbArQv9GDClVMVAriloFiaWxsCm1hcwphbmlhCtGB0YMKYW56CmhlaWdodApqbwriloFkb3MKXCIK4paBLz4K4paBcHJvZHVjdGlvbgppZ2VyCuKWgdGB0YIKc2hvdwriloFwb3B1bGF0aW9uCuKWgXBhcmsK4paBWmUK4paBbmVjZXNzYXJ5CuKWgXRydXN0CuKWgXNob3duCm1vZHVsZQpHRQriloFsYXkK4paBYW5ub3VuCuKWgWNsYXNzTmFtZQriloFjYWxjdWwKRnVuY3Rpb24K4paBU2FsCk9LClRQCuKWgWVudHJ5CuKWgVN0dWQK4paBaXRlbXMK4paBc2VjdXJpdHkKRW50cnkKZmxvYXQKbHMKaWJseQriloFjb250cmlidXQK4paBQ2hlY2sKTUQK4paBaW1wcm92ZQpQYXJ0CuKWgXN5c3RlbXMKQmwK4paBcG9saWN5CuKWgXNjcmVlbgriloFBbnkK4paBb3BlbmVkCmFsbG9jCuKWgURlY2VtYmVyCuKWgcOJCuKWgWVtYWlsCmFkZXIKPT4K4paBSGVuCuKWgWluZm8K4paBZmxvYXQK4paBc3dpdGNoCtGA0LDQvQp1cmFuY2UK4paBYXNzdW0KdXN0cgriloFncm91cHMK4paBUmVhZAriloF3YXQKU3AK0LLQtdGAClJBTgpoaWIKQUxMCuKWgWh1cwpTcGVjCiIpKQriloFGcmVuY2gK4paBQ2xhc3MK4paBcHJlc2lkZW50CuKWgWRlZmluaXQK4paBTm9yCuKWgVRob20KYWlnbgpXaWR0aApEbwriloF7QAphZ29uCuKWgUx1CuKWgWZvbGxvd2VkCk1NCmFzb25zCnRtcAriloF0aHJvd3MKSVRZCtC90L7QvAriloFmYWlyCuKWgXBlbgrDqWcK4paBaW50ZXJmYWNlCuKWgXNhZgpvb24KQmFjawriloFzcGVlZAriloFleHRlbmRzCmVtcHR5CuKWgdC/0LXRgNC1CuKWgXByb3BlcgriloFkcml2CtGE0LgK4paBY2VudGVyCmhlYWRlcgriloF9KQp3YQriloFtaWRkbGUK4paBY2hvb3NlCuKWgVN0YWQKU08KRmFjdG9yeQpEZXYKaWNsZXMK4paBYXBwbGljYXRpb24K4paBbW9kZWxzCnBpdGUKY2FwCnhpCm9zcGl0YWwK4paBZHJlYW0KRU5ECuKWgWNvbnRyYWN0Cmljcm9zb2Z0CuKWgXRob3VzCml6ZXMK4paB0LTQsAriloFDTwriloFkaXJlY3Rpb24K4paBYGAK4paBZHJpdmUKTWF4CmNpYQriloFjb250aW51CuKWgUFsZXgK4paBZ29sZAriloFwcmVwCuKWgW9yaWdpbgriloFyYXAKT3AKb3VzbHkK4paBYXJlYXMKUE9SVArQvtC90LAK4paBc2FmZQriloFwcm9mZXNzaW9uYWwKYXBhY2hlCuKWgXRlbXBlcgpzegriloF1bml0CuKWgWNvcAplcW4KTGlzdGVuZXIK4paBZm9ybWF0CnNlbGVjdAriloFjb21mb3J0CuKWgW1lYW50CmlkYXkKZW1lCuKWgWFjdGl2ZQriloFub3RlCuKWgU1pbApvbmx5CuKWgTw9CuKWgW5laWdoCmFvCuKWgWJsdWUK4paBVFYKQ2hpbGQK4paBcmVhY2hlZApBZGRyZXNzCtGB0YLQsgriloFjbG9zZWQKaW5kZXIKb2xvCuKWgWFsdAriloFhZG0KRm9ybWF0ClVJCuKWgUhhbQriloFmcmVxdQriloFpbmRlcGVuZAriloFlYXNpbHkK4paBTGFuZAriloF0b3IKb2dyYXBoeQppbmZ0eQriloFXb3JrCml2ZW4K4paBQ291bnR5CuKWgXNyYwp9JCwKcGFyc2UKQ0QK4paBQ291cgriloFmb2wKRW50aXR5CnBnZgriloFDaGluYQriloFTdWIKaG9vZAriloFmaWVsZHMK4paBeWVzCnJlbmQK4paBdG93YXJkcwriloFzdGFmZgriloFBaXIK4paBc3RhdGlvbgphdGl2ZXMK4paBaW1wYWN0CtCy0YsK4paBZGlyZWN0bHkKaXNzaW9ucwppdmEKfFwKUHRyCuKWgVNhbnQKUG9sCuKWgXByb2dyZXNzCml0YXIK4paBcGFydHMK4paBcGxhbnQK4paBYWJzb2x1dAriloFndWVzcwplcXJlZgriloF0aW0K4paBTG91CuKWgWNvb2wKYWx1CuKWgW1vdXRoCtC90LjRhQriloFoZWlnaHQKZ2VzdAriloFQb3N0CuKWgWJvYXJkCuKWgXRpdAriloFob3VyCuKWgXNlcnZlcgriloFwbGF5ZXJzCnJpZXIKTGluawriloFQcmVzaWRlbnQKXSgK4paBY29uc3RydWN0CmhhbmRsZQp9JC4KcnlpbmcK4paBc2hvcAppYW5hCmV4cApIZWxwZXIKT2Zmc2V0CmFjaGVzCuKWgWNvbm5lY3Rpb24K4paBZGlmZmVyZW5jZQpzZXJ2aWNlCuKWgWdhcwriloFwcml2CuKWgXVuaXZlcnMK4paBd2lzaApSZW0KVXJsCmdlYgpTbwplbnNpb25zCk1vZHVsZQpTSVpFCuKWgXByZW0Kd2luZG93CuKWgWRpZXMKZGVsCuKWgXJvdwriloFhdmVyYWdlCnhpbQriloFwdQphbsOnCkRldAprZXIKeWEK4paBRGV0CuKWgXDDpQriloFuYW1lZAriloFkZWNpc2lvbgp3aW4K4paBR2VvcmdlCmFyaWx5CuKWgXNvbHV0aW9uCuKWgW11bHRpcGxlCmF0ZWd5CuKWgWxlYXJuaW5nCuKWgXNlY3JldApETwriloFuaWNlCi8vLy8vLy8vLy8vLy8vLy8KU3UKaXRhdGlvbgriloFqb2luCuKWgWVsZW1lbnRzCuKWgWVtZXIKdGlsZGUK4paBZGVwCuKWgXNob3QK4paBcGxhdGZvcm0Kb3RoaW5nCk15CmVkaWEKb21zCmFpbHkKKFsK4paBZHJlc3MK4paBb2ZmaWNpYWwKZXN0ZXJuCuKWgWRpc2NvdmVyCuKWgW1pCtC90YvQtQpDQQpvZGluZwriloFGb3VuZAriloFhZmZlY3QKVmlzCnN0cmFjdAppY2VkCmRlYnVnCuKWgXJlbGF0ZWQK4paBc3BlY3QKdXNoZWQK0YHRjNC60L4K4paBYmFuawriloFjZWxlCkFORApvbGYK0LXQvAriloFmaWxsCuKWgWdpdmVzCuKWgdCx0YMKYXJvbgriloFKZXMKUkVHCuKWgXN1ZGQKZGF0ZWQKdmkK4paBZ2kKc2VuZApjcHAK4paBc3BlbnQKYW5kZQriloFvcGVyYXRpb24KcHJvY2VzcwriloFpbmZvcm0K4paBRnJlZQp5b25kCuKWgXBlcmhhcHMK4paBc3VydgriloFMb2MK4paBY29uY2wK4paB0YDQsNC3CuKWgU92ZXIKaG9sCnJhegpXcml0ZQriloFnaXZpbmcKcmQKaW5zdGFuY2UK4paBcmVsZWFzZWQK4paBUm8KUkEK4paBcHJhY3RpY2UK4paBZ3JhcGgK4paBaW5jcmVhc2UK4paBZmlndXJlCkZpbHRlcgpIRUNLCmlkeAriloFnbGFzcwpza2kKY29tZXMK4paBY2F0CuKWgWNvbGQKZ290bwp1ZmFjdAriloFDb3B5cmlnaHQKfX1cCuKWgXN0cmVuZwriloFkaXIKdG9rZW4K4paBb2NjdXIKYXJsaWVyCuKWgW1lYXN1cmUK4paBc2VjCuKWgW3DoXMK4paBTmV0CuKWgWFyZ3VtZW50CuKWgXNvdQriloFtb3ZpbmcK4paBcHJlZmVyCm1hc2sKPDwK4paBYnJlYXRoCuKWgXBoeXNpY2FsCuKWgXBvc2l0aXZlCuKWgXNvcgriloFkZXBhcnQK4paBcmVtb3ZlCuKWgWtpdAriloFtZWV0aW5nCuKWgURhdGEKb2dyYWYKYWN0aW9ucwriloFwYXJhbWV0ZXJzCuKWgUF0dAplc2NoCuKWgWludm9sdmVkCsOkdApMTApCYXIK4paB0YHQuAplY2gKR0VUCuKWgXByZXZlbnQK4paBYmV5b25kCuKWgU90aGVyCsOkbgpieXRlCuKWgXN1ZGRlbgpvbHZlCuKWgdC90L4KTE9HCnVuaXQK4paBdHJ1dGgKcmF0ClNECuKWgWVhdAriloFNYWQK4paBcHJvdmlkZXMK4paBc2Vzc2lvbgpEZWxlCuKWgWNvbnZlcnMKY2VudGVyCuKWgWNvbnRpbnVlZApvdGlvbgpjYWNoZQpkaXNwbGF5CuKWgXByb3RlY3QKYW1zCuKWgXBvdwpDVElPTgriloFNYWMKbW8K0YXQsAriloFkaXN0YW5jZQriloFUaW1lCmdpCuKWgXNlcXUKVGFyZ2V0CtGB0LvQtQpTZXJ2ZXIK4paBd2lkZQpjbG9zZQriloFjcnUKRXh0CuKWgXNlbGVjdAriloFwYXR0ZXJuCiIpKTsKUHJvdmlkZXIKVVJMCuKWgWdyZWVuCuKWgXdhaXRpbmcKcHJvdG8K4paBaW1tZWRpYXRlbHkKY29tbW9uCmF6aW9uZQpyaXZlcgriloFzZW4K4paBIT09CuKWgUZlYnJ1YXJ5CnVyYgriloFTZW4KZGVzdAo8PwriloFlZGdlCuKWgW1haXMKZ29yaXRoCmNwdQriloFlZHVjYXRpb24K4paBYXNzb2NpYXRlZApOb25lCmhpCuKWgXBvb3IKc2VtCuKWgVdpbAriloFidWQK4paBYXVjaAplbGxlcgriloFMaWZlCuKWgWZpbGVzCuKWgWxlYWRpbmcK4paBb2J0YWluCuKWgUp1bAphdG9yeQrQs9GDCml0YWJsZQriloFvbnRvCuKWgWJvcm4Kb3JlbQriloFTdHJlZXQK4paBbWFpbnQKUGFyYW1zCnJpcAriloFTVAp1dgptYWluCuKWgeKWgeKWgeKWgeKWgeKWgeKWgQriloFyZWNlbnQKV2ViCm92YQrRhtCwCmFpc2UKeWxlcwriloFkZXNjcmliZWQK4paBYmVnaW5uaW5nCuKWgURheQriloFWb2wK4paBaHVnZQpIYXMKYW5jeQpIZWFkZXIK4paBYXJlbgrQstCw0L0K4paBZW5zdXJlCuKWgXBldAptdWx0CuKWgUxpa2UK4paBbWFuYWdlbWVudApQUwp3aGlsZQriloFiYWNrZ3JvdW5kCm91bnRlcgpib29sCkZDCk51bQpSTAriloFleGNsCuKWgWV5ZQppbWcK4paBcm9tCuKWgUhlbApPcHRpb24K4paBc3RvcHBlZAriloF0aHJlYWQKdG90eXBlCikpKQriloFzdGFnZQriloHDvGJlcgriloFhbHRob3VnaApUeXBlcwriloFPaAriloFlaWdodAriloFkZXNjcmlwdGlvbgonJwrDtm4K4paBc3VyZmFjZQriloFJbnRlcm5hdGlvbmFsCuKWgWNoYXJnCuKWgWNvbGxlY3Rpb24K4paBdXNlcnMK4paBb2J2aW91cwriloFjZW50dXJ5Cmlja3MK4paBYXJ0aWNsZQriloEiXApkaW0K4paBc2luCmVuZ2UKQ29udHJvbAriloFjb21taXQKZW5zaXR5CuKWgXRyYQpjcmlwdG9yCuKWgU5PVAp3ZWxsCuKWgU1pY2hhZWwK4paBbm9kCuKWgW1vcnQKaXZvCmlzYXRpb24K4paBUG8K4paBUGFyaXMK4paBYWRtaW5pc3RyCmJ1cmcKY2RvdAriloFtaWxpdGFyeQriloFCZXN0CuKWgdCa0LAKSU5FCuKWgXRocm91Z2hvdXQKU2wK4paBaW1wbApjb250cm9sCuKWgdCnCuKWgXVpdAriloF1bnNpZ25lZAriloFNYXJ5CkNoYXIK0LzRlgriloF0aHJlYXQK4paBY291cnQKdmlsbGUK4paB0YgK4paBQ2FtCi4NCuKWgWN1cnJlbnRseQpyb3QK4paBRGF0ZQriloFzaGl0CuKWgSR7XAp1bm4KVXMK4paBYnVmZmVyCuKWgXNvbnQK4paBbGV0dGVyCmluYXRlZApDaGFuZ2UK4paBaHJlZgriloFsYWNrCuKWgW9pbAriloFDb25zCuKWgUplcgpCVUcKaWZvcm4K4paBcHJvcGVydGllcwriloFyYW5kb20K4paBYnJvdGhlcgriloFwaWVjZQrQsdGDCmlzdGljcwriloF0ZWNobm9sb2d5Cmdsb2JhbAriloF0cmFuc2Zvcm0KZXJkCuKWgUJlY2F1c2UKUEVDVApwcmV0CuKWgdCz0L7QtNGDCuKWgU1ldAriloFwc3kK4paB0L7QtAriloFnb2QK4paBRGVsCmJhc2VkCuKWgXZvb3IK4paBQ2FsbApTQQriloFmaWx0ZXIK4paBaW5jbHVkZXMKb2x1dGlvbnMKZmQK4paBd2luZAriloHQsdC+CuKWgWFiaWxpdHkKY2FyZAriloFudW1lcgphZGRyZXNzCuKWgWdvYWwKYXNoaW5ndG9uCuKWgXNsaWdodAphYmEK4paBTG9nClNldHRpbmdzCmFkb3cK4paBcGkKaXJpbmcKRlQK4paBbnVtYmVycwpjb25mCnRhc2sK4paBw65uCtGC0YsK4paBcmVjZWl2ZQriloFyb290CuKWgUluZGlhCnBhdGNoCsOpbAriloFzdW1tZXIK4paBbWV0aG9kcwriloFwbGFjZXMK4paB0JzQsAriloFjYXBpdGFsCuKWgWV2aWRlbmNlCuKWgUdlcm1hbgpcLApEQQplY3V0ZQpjb2x1bW4K4paBZnVuY3Rpb25zCuKWgWNvdW50ZXIK4paBYXJtcwriloFmZWVkCnZleQpoZW50Ck1BWAriloFhY3F1CuKWgWFwcGx5CuKWgWh1c2JhbmQK4paBa2lsbGVkCuKWgVNwZWMKZW50aXR5CuKWgWVhcmxpZXIK4paBTWlzcwriloFzZXR0aW5nCml0ZWN0CuKWgWRlZApSb3cK4paBcmFuCuKWgVllcwriloFmaW5hbmNpYWwKc2Vzc2lvbgpsZWFyCmlzaGluZwriloFuZWFybHkK4paBZHVyCuKWgW1hY2hpbmUKeGZmCmJybwriloFzeW1ib2wKbGFuZHMKQWNjCmRpCuKWgVJvYmVydApwcm9wCnVyaXR5CuKWgSMjIyMjCuKWgXdhbGtlZAriloFpbnRlcm5hdGlvbmFsCuKWgdCVClllcwriloFyZWxlYXNlCuKWgXN0YXJ0aW5nCnN0YXRpYwriloFiZWkKYWxsb3cK4paBUGVvcGxlCmV6CuKWgXBhcmFtZXRlcgpDYWNoZQriloEkJAphbXBpb25zCuKWgU1lcgriloFrb20KbGV0ZWQKb2lzCuKWgU9wZW4KdHlwZXMK4paBZnVlCmFjdGVycwriloFyZWZlcmVuY2UKRXF1YWxzCuKWgWF3YXJlCuKWgWhvbAriloFkZW1hbmQKbG9yCuKWgXZlaAriloFub3RpY2UK4paBY29tcG9uZW50CmZuCuKWgWFuYWx5c2lzCm1hdGNoCuKWgWVmZmVjdGl2ZQpwcm9kdWN0CtC90LjQugriloFsZWdhbArQtdC5CnNlbWIK4paBbG9jYXRlZAriloHRgdGDClFMCmluY3QKZXRvCkRyYXcK4paBc2NhbGUK0YDQvtCyCuKWgXdhbnRzCkhvdwriloF3ZWwKaXNpb25zCuKWgWRlbGl2ZXIKdW5kZXIK4paBZGViCuKWgWp1CnZhbHVlcwriloFzaXN0ZXIK0LrQvtCyCuKWgUNyZWF0ZQriloFJbmMK4paBYXV4CuKWgVdoaXRlCk1lbnUKYXVkCnJlc291cmNlCuKWgWNhYgriloFsaWYK4paBY3VsdHVyZQppY2hlCuKWgXdoYXRldmVyCuKWgWRlc2lnbmVkCuKWgXJlcGUK4paBTW9udAriloFjaGFyZ2UKTmFtZXMK4paBaW5zcAriloFjdXN0b21lcnMKb3NhCuKWgWRhdWdodGVyCuKWgUVhc3QKRVEK4paBb3BpbgriloFGcmUK4paBc2VlawriloFwdXNoCuKWgW5hdgriloFidXJuCmFyZGVuCmhhc2gK4paBb3Bwb3J0dW5pdHkK4paBTWF0Cm95YWwK4paBcHVuCnNjYWxlCnluYW1pYwriloFUeXBlCmlsaW5nCuKWgXF1ZXJ5CuKWgW1pc3QKcm9yCmZvcmNlCuKWgU9uY2UK4paBbWVkaWNhbApsaWUK4paBc3R1ZGVudAplZGVyYWwK4paBbG92Cmlmb3JtCuKWgWFsdGVybgpiaW4Kb2RlcgriloFyZXR1cm5zCnJlZ2lzdGVyCnV0cwpDSQriloFUb3IKQ1IK4paBTG9zCmFtaWx5CmFpcmUKKys7CkNvbnRyb2xsZXIKd2lkZQp4eApyb3dzZXIK4paBQm9vawpDb250YWluZXIKcGxvYWQK4paBRXYK4paBdGFsCuKWgXRoZW9yeQplcW5hcnJheQrQsdC1CuKWgXJlcG9ydGVkCuKWgW1lYW5pbmcK4paBc3kKcmliZQppY2F0ZQpob2xkCuKWgW9mZmVycwriloF0ZW1wbApjc3MK4paBcGljdHVyZQriloFhc3luYwriloFzdG9jawriloFpbnRlcm5hbAp0aQpCTwpWZXIK0YHQv9C+CuKWgWRlbW9uCuKWgWxhdWdoCuKWgUVuZAriloFrb24K4paBaWRlYXMK4paBY2FuZGlkCk1lbQppenoKcmVmaXgK4paBQU5ECmVnZW4KRWwK4paBY2FtcGFpZ24KSHR0cAriloFSb2IK0LTRlgriloFidWwK4paB0JrQvgriloFjb3VudHJpZXMKwrsuCuKWgWV4cHJlc3Npb24K4paBRW5nbGFuZApzZgriloFjZXJ0YWlubHkKYWdlbgriloHRh9CwCuKWgUFOWQriloFjb25uZWN0CkZFCuKWgWFuZHJvaWQK4paBR29sZAriloFvcHBvcwpvdmVybgriloFDb21tdW4KLF8KYXNpb24KTGEK4paBZmlybQriloFBbHRob3VnaAriloFHb29kCuKWgUxhdwplcnZlCuKWgWJyYW5kCk1pbgpmaWxsCiddLAriloFKZXcKaWxlcgppbmdsZQppdGh1YgriloFEaXYK4paBY2VydApIZWlnaHQKcmFlbApUaGVyZQppdHV0ZQriloFhbWF6Cmxvb2sK4paBU0UK4paBam8K4paBcHVsbGVkCuKWgXJlc291cmNlcwriloFNYXgK4paBYWdyZWVkCmFzeQriloF0cmVhdG1lbnQKIj48LwrQvNCw0L0K4paBRXJyCm9yaWcKY29zCuKWgU1heWJlCm90YWwK4paBdHJhaW4K4paBU2VydmljZQriloFpaAriloFzcGlyaXQKQ29tcApzcXJ0CuKWgWJyb2FkCn1bCuKWgXNoYXBlCuKWgWRvYwpob3cK4paBdGFnCmF0YWxvZwpzZAriloFtZWFzCuKWgdCg0L4K4paBZXhjZXB0aW9uCuKWgVR3CuKWgWludGVyZXN0aW5nCkFUQQriloFSZWwKw6FyCuKWgXVzZWZ1bAp1c2V1bQriloFib3R0b20K4paBb3RoZXJ3aXNlCuKWgWFncmVlCmNodAp0aGVuCuKWgXNpZ25pZmljYW50Cn0vCuKWgWNoYW5uZWwKaWNpYWwK0YLQuNCyCnZhcmUK4paBZW50ZXIKRW5nCnVqClVSRQpxdWV1ZQpvbm8K4paBY29udGFpbnMKTUkK4paBbmF0aW9uCuKWgXJ1bGVzCmZvbAriloFwYQphcnAK4paBcXVpZXQK4paBdGh1cwppcHBlZAphbm5vdAp1ZGVzCigpOgpuYW1lcwriloFjb21wb3MK4paBaW5qCnVuYQpiaW5kCuKWgWZ1bGx5CnJhcwpVdGlscwphbmdlcwpkdWxlCuKWgUNocmlzdGlhbgriloFyZXZlCsOkbmQK4paBY29sbGVjdAriloFjZWxlYnIKYW5kYQrDrW4Kam9pbgriloFwYWlkCkNvcmUKR2UKLiQK4paBZmlmCuKWgXVtYQriloF+CmVydmljZXMK4paBcmVjZW50bHkKZGVzYwriloFoZWF2eQriloFydWxlCuKWgVBsZWFzZQpwc2kK4paBY29uc29sZQriloFmb3J0Ci5cCuKWgVdhc2hpbmd0b24K4paBZ2FyCuKWgUdyb3VwCuKWgWludGVydmlldwphbm5lZApzcWwK4paBYW5jCtGY0LAKUGFjawriloFDbHViCuKWgW1hc2sK4paBY29uY2VwdAriloFbJwriloFzZWxlY3RlZAriloFVc2UK4paBZWxlCmVhcnMK4paBcmFjZQpoeQpPbQriloFzdGVwcwppbGEKZXN0cwplZHMK4paBc3RyZWV0Cm5lcnMK4paBYmlydGgKcG9wCuKWgdC70LgKTUIK0LrRgNCwCmNpcgplcHNpbG9uCuKWgWNvbnN0YW50CnF1ZXMKYWRhcwriloFrbm93cwriloFQeQpjbGVzCuKWgWNpdAriloFwYWlyCmluZXNlCuKWgVBldGVyCuKWgWZpbmlzaGVkCuKWgW1hc3RlcgriloF0d2VudHkK4paBZmVsbAriloFjZW50cmFsCuKWgW1lcwpyZXYKU1RBVApzdGF0CuKWgWFsbG93cwriloFncm8KQ2xpY2sK4paBc3RvcmllcwpGZQrDpXIK4paBYmFieQplbmNpYQriloFlaW5lcgpBcmUKZWJ1ZwpzdG9yZQoiLCIKbGFtCuKWgXN2CtGG0LjQuApOVUxMCuKWgUxlZwriloFtb3ZpZQriloFob3VzCuKWgWxlYXJuZWQKYm9uCuKWgXRyYW5zZmVyCmlmb3JuaWEKcHNpbG9uCuKWgVNvZnQK4paBY29tbWVyCuKWgWhhZG4K4paBRWluCuKWgVR3bwpjcmFmdApQcm9jZXNzCuKWgdC/0L7QtAphcmdpbgriloFlc3RpbQriloFNZW0KaWthCuKWgVRvZApkdWMK4paBZGFuZ2VyCnJpdmUKRG9uCuKWgVF1ZQpoYWwK4paBbW0K4paBU3VyCk9yZGVyCuKWgWRpc3RyaWJ1dGlvbgpmYQriloFNYW55CnBsaWNpdApFbXB0eQpIYW5kbGUK4paBdG9rZW4K4paBZXBpcwriloFhc3Npc3QK4paBcHVycG9zZQriloHRhgpOVQppZGVycwpyYXRlClRoZXkKUGFyYW1ldGVyCkRlYwriloFzdHJ1Z2cK4paBc2hvb3QKSVYK4paBR3JlYXQK4paBU2lsCuKWgWxvdmVkCuKWgWNsaWNrCuKWgXJlc2VydgriloHQstC1CuKWgXNwcmVhZAriloFvZwriloEkewriloFtaWxlcwriloFzdWNjZXNzZnVsCm9qCuKWgURpcmVjdAriloFheAriloFncm93dGgKV29yawriloFjaHVyY2gKSW5zdApJQ0UKc3RlbgrRgNC+0LQK4paBQ2VudGVyCnNlcwpnb3QKZGVsZXRlCuKWgU1hCiUlCuKWgWNyb3cKREYKZnJvbnQK4paBYmxvZwriloFjb21wdXRlcgrQvdCw0Y8K4paBbWlyCuKWgVN1cGVyCicsJwriloFtdWx0aQriloFncnUK4paBSm8K4paBQ2FuYWRhCuKWgVRob21hcwriloFsYXJnZXIK4paBY29tcGFyCkN1cnJlbnQKdGhhdAriloFkcm9wCtC10L3RggriloFSZXB1YmxpYwriloFkaXNlCuKWgWVmZmVjdHMK4paBZ2lybHMKZW5jaWVzCmVsbGlnCuKWgU5vdGUK4paBQXNzb2NpCuKWgXVzZXMKZWxsZWQK4paBd2FybQp0aHJlYWQKZm9udAriloF6dW0K4paBZm9sbG93cwriloF3aG9tClRBCuKWgXdpbGQK4paBQVIKaWFibGUK4paBVHJ1ZQpQb3NpdGlvbgriloFzZWxsCmNoZXIK4paBQnVzCuKWgWxlYW4KQUNFCuKWgXNlcnZlZApodwriloFDdXIK4paBbm9ydGgKRGF0CuKWgT4+CmNvbW1hbmQKYXR6CuKWgW1hbArRgdGC0LDQsgriloFQcmVzcwriloFjaGFyYWN0ZXJzCuKWgXplcm8KQUdFCnJhcHBlcgriloFraXRjaGVuCmFtaW5nCuKWgXJlc3RyClhYCuKWgUNvbGxlZ2UK4paBQXJyYXkK4paBZnJlc2gK4paBc2hpZnQK4paBc3BlY2lmaWVkCnBsZXRlCklURQriloFDYW1wCnJpYWwKY2IK4paBVEgKSUIKb3NlbgriloHDugriloFwYXJhbXMKaWdubWVudAphZGRpbmcK4paBZGVncmVlCkxvY2FsCk9oCuKWgXp1cgriloFsZXZlbHMKQ1MKZmluaXNoZWQKQ2FzZQpyaWFnZQpWZWN0b3IK4paBc2VhCmFudGljCuKWgUxlYWd1ZQriloF0aGVyZWZvcmUKT25lClJldHVybgpBY2Nlc3MKdmFzCuKWgdC+0YEK4paBcmF0CkJpZwriloFiZWhhdmlvcgprcgriloF1bmRlZmluZWQK4paBRXMK4paBYXBwZWFyZWQKZWxlcwriloFXQVIKU3RhdAriloFHb29nbGUK4paBY3JlZGl0CuKWgUZpbGUKYW5naW5nCmhvdXNlCnJvbWlzZQpnZW50CuKWgWhhYml0CuKWgXNvY2lldHkK4paBZW5jb3VyCuKWgXBhaW50CnBldAriloFVSwphd3MKb25vbQpHbAp9X3tcCmVsZXNzCmVteQriloFDb25nCuKWgWRldmVsb3BlZAriloFpbWFnZXMK4paBw7YK4paBZm9udApjbGVhcgpnaW4K4paBTG9yZAriloF0cmFuc3BvcnQK4paBOjoK4paBY3VwCnVsYXRlCuKWgUR1cmluZwpwcml2CuKWgWV4dHJlbQriloFEaQriloFkb3VidApQeQppZnlpbmcKc3BsaXQKZWdvCmdpdGh1YgriloEpLApST00K4paBY2hhaXIK4paBdHJhZGUK4paBbmljaHQKVG9wClN0b3JlCuKWgXBhcnRlCnByb2plY3QKbmlhCuKWgdCy0ZbQtAp3YXIK4paBUHJvZgriloFjYXVnaHQKVGhyZWFkCtGB0YLQstCwCmF1dGhvcgriloFkb2xsCuKWgWhhcm0K4paBR2VuCnRyZWUKZXRpbWUKY2ZnCuKWgWd1eXMK4paBQ2FsaWZvcm5pYQriloFHcmVlbgriloFtb3ZlbWVudAppZWoK4paBc3RhdGVtZW50CuKWgXNlZWluZwriloFoYXZlbgp2ZW50aW9uClNMCmNoZWR1bAppZXJ0CuKWgXByaW1hcnkK4paBY2l2aWwKcmlhbgriloFidXR0b24K4paBbGl2ZWQKUGFzcwpzb3IK4paBd2F0Y2hpbmcK4paBc2tpbGxzCnRlZQpMZXZlbAriloFzY2llbnQKaHMK4paBYWdyZQpjYXQK4paBdGVuZAriloFNaWxsCuKWgUNhcApPUkQKZ2xlCuKWgdGB0LLQvgrCuywK4paBYWhlYWQKdmVzdAriloFKb3NlCmlzY2hlcgrImWkK4paBbGVhdmluZwriloHQtNC70Y8K4paBc291dGgK4paBY29uc3VtClJhbmdlCuKWgWFjdGl2aXRpZXMKU2VjCuKWgXNhbGVzCuKWgWZpeAriloFqZWQKcnVtCnZlY3RvcgriloFzcG90CuKWgW1hbnVmYWN0CtC60YIKb3Jyb3cKc2lnbgriloFjb2xsZWdlCuKWgWRyaXZlcgriloFkZWZpbml0ZWx5CuKWgXNwZW5kCm1pc3Npb24K0LfRgwphdGl2ZWx5CmJpCkNhbGxiYWNrCuKWgXBhcnRpY3VsYXJseQriloFoZWxsCuKWgXBvb2wKUFJFCuKWgWNsZWFybHkKUFQKb3RoZXMK4paBSWQKTG9jYXRpb24K4paBUnVuCuKWgWZpeGVkCuKWgUhhbmQKYmFsCmRvdWJsZQpDYW4KT21lZ2EK4paBY2hhbGxlbmcK4paBc3RhbmRpbmcKaXRlbgriloFtZWNoYW4K4paBZHVyY2gK4paBZGVsbAriloFyYWlzZWQK4paBd2VhawriloFEdQpncmFkCuKWgXNjZW5lCnBvc3MK4paBdG9uCuKWgWVhcnRoCnVsYXRpb25zCuKWgXN0cmVuZ3RoCmFrZWQK4paBcmVtYWluCuKWgUJpCuKWgWN1c3RvbWVyCnJhbmdlCuKWgWludGVyZXN0ZWQKT05FCuKWgWNvZmYKcmVxdWlyZQriloFPbmx5CuKWgVdlYgriloFmYXJtCuKWgWFjdGl2aXR5CuKWgXJvdXQKYmxpbmcKU1kK4paBUmljaGFyZAriloFSZWYK4paB0LrQvtC9CuKWgWp1bgpib3JuCmlqbgpDb25maWd1cmF0aW9uCnVtYW4KRUUK4paBbWFycmllZAriloHQl9CwCuKWgWZhdAriloFraWQK4paBVHVyCuKWgW9mZmVyZWQKbmljCuKWgUJpZwpHYW1tYQriloFIZWFsdGgK4paBVFIK4paBc2nEmQriloFjb25zdHJ1Y3Rpb24K4paBQ2h1cmNoCuKWgUJldApidXMK4paBZWFybgpyaWN0CuKWgdC/0YDQsAriloFicmFpbgriloFmcmEK4paBT3AKRklHCmVtYQriloFFdXJvcGVhbgriloFTYWludApBUkUKdXJpCuKWgVJpdmVyCnt9CuKWgXNpdHRpbmcK4paBdW5kZXJzdGFuZGluZwriloFwbGFucwpyb3ByaQriloFvbGRlcgriloFwcmVzc3VyZQpJbXBsCuKWgXBlYWNlCkNvbm5lY3Rpb24K4paBZmkKcmljaAriloFzaHV0CmFwZXJzClBvcnQK4paBTG9vawpyaW0KYXV0aAphdXRvCuKWgWhpZ2hseQriloF1bmxlc3MK4paBV2FsCuKWgXJlbgp3cwriloFjb3JlCigtCuKWgWNsaW0KcnVpdAriloFjYWxsYmFjawpoZXN0CuKWgUNoYXJsZXMK4paBTG9uZwp9PQrRitGACuKWgXNoYXJlZAp1bGF0ZWQKZ29yaXRobQriloFIb21lCuKWgXZpbGxhZ2UKZWVzCnN2CuKWgXJlc3RhdXIKcmV5CuKWgUNhc3QK4paBUGVyc29uCtC60LjQuQriloFvcmdhbml6CuKWgVJhZApwb25lbnRzCuKWgXdlcmRlbgriloFib3cKc2VuCmFtaQpJbnRlcmZhY2UK4paBYmFzaXMK4paBQ29tcGFueQplcm5lbAppdHUKSGFzaAriloFhYW4K4paB0YUK4paBc21pbGUKeG1sCuKWgXNjZW4KYW1tCnRvb2wKYXJpYQriloFhY2N1cgpzZXR0aW5ncwriloFKZXN1cwphY2VtZW50CnBvd2VyCighCuKWgWNhbGxzCuKWgWJhc2ljCuKWgXNldHRpbmdzCnJpcHQKcG9vbApjdG9ycwriloFGb3VuZGF0aW9uCuKWgXdlYXAKS0VZCmZvb3QK4paBcmFkaW8K4paBaGVscGVkCm1hbm4K4paBanVtcAriloF0aWNrCuKWgWdyb3dpbmcKYXRlbgpyZWFsCuKWgWluY3JlYXNpbmcKRGV2aWNlCnZhcmVwc2lsb24K4paBc2V0cwriloFhZHZhbnQKT3BlbgriloFyZWFzb25zCuKWgXN1cHBvc2VkCm9lcwplZGUKdGVlbgppZmRlZgriloFkZWxldGUK4paBJj0K4paBQmlsbAriloFhaW0K4paBT2sK4paBQXYKcmVjaQphY2tzCmlzdGUKUHJvcGVydGllcwriloF0bXAK4paBZGVpClBFUgpEQwpzdGEK0L3QuNC4CuKWgWxpbWl0ZWQK4paBZ3JlYXRlcgpkZXNjcmlwdGlvbgpvcmkKYWludHMK4paBaHkK4paBTWVsCuKWgUNICmNvbnMK4paBc3Vycm91bmQK4paBV2hvCmFyYwriloF0ZWxldgppdHV0aW9uCuKWgWVxdWFsCtC60ZYK4paBSXNyYWVsCsOkaAriloFDYXB0aW9uCuKWgWV4ZXJjCmVtcG9yCuKWgSsrCuKWgWxpYgptYWtlCuKWgU1BCmNvcHkKZnJpZW5kCuKWgdC60L7RgtC+CuKWgWRhbWFnZQriloFcLApvZGVkCuKWgW5vbmUK4paBZXZhbHUKc3Rvbgo+LApGT1IK4paBbm9ybQphcHBlClNlc3Npb24K4paBYWR1bHQK4paBaG9zcGl0YWwK4paBcmVjb21tZW5kCnByb3BlcnR5CnN0ZWluCmZpbmFsCuKWgW51CnNlY29uZAriloFhc3BlY3QKIildCtC20LXQvQphbWVudG8K4paBcmFjCnNhdmUK4paBZm9vdGJhbGwKQWIKdW5ncwphYmlsCuKWgUFyY2gKc3lzdGVtCmhpc3QK4paBbHVjawpyZW5kZXIK4paBc2Vpbgppb25pCuKWgXJvdAriloFjb3JuZXIK4paBYXBwcm9wcmkK4paBU29mdHdhcmUK4paBdGVsZQpEZWxldGUK4paBQWNjb3JkaW5nCuKWgXByaXNvbgriloFsaWMK4paB0LzQuAp0ZXJtCnNldHMK4paBdmVsCuKWgXJhbmsK4paBZXhpc3RpbmcK4paBVmlyCuKWgXRyaXAK4paB0LzRgwphdmF4CuKWgXJpcwriloFkZWZpbmUK4paBaGVhdApjYXIK4paBY29udmVydAplbWFpbAriloFVbmRlcgriloHQqAriloFHcmFuZAriloFleGlzdHMKc3lzCmVmZgriloFUb3AK4paBxI0K4paBdGVtcG9yCuKWgWFyZ3VtZW50cwriloFzdXBwb3J0ZWQKZW5zZWQK4paBRnJhbmNpcwriloFjb29yZAriloFhY2hpZXZlCuKWgU5hbWUK4paBSmFocgriloFHaQpzaGUK4paBRGV2CuKWgWFsbGEK4paBV0lUCmFnbWVudApjdXN0b20KYWxscwomJgpXRQriloFob2xkaW5nCnByb3RvdHlwZQriloFmaW5nCuKWgWJhZwriloFQYXJ0eQpzdGFjawriloFlY29ub21pYwriloFHYWwKaWRlbnRzCuKWgUp1bgriloFzaG93ZWQKb3NoCuKWgUJheQptYWlsCuKWgVNPCuKWgSI8CmdyYXBoaWNzCuKWgWZ1CmNsaWNrCuKWgWJhdHRsZQp7ewriloFFdmVudApyaW9yCmNoYWZ0CuKWgWZhdm9yaXRlCnVzaXZlCnN1cHBvcnQKYm0KS2luZAriloFzYWZldHkK4paBRW50CmN1cAriloFBdXN0cmFsaWEK4paBZGVzdHJveQriloFvcmdhbml6YXRpb24KaWRlbgojIyMjIyMjIyMjIyMjIyMjCmRlYwriloF6YQriloFzZXZlbgphcmVseQriloFmbGFnCkRpcgriloFDYXJsCuKWgWRvY3RvcgriloF2YXJpZXR5CuKWgUxpbgriloF0b20KXnsoCkJvCmFudGVzCuKWgW1pbmUK4paBTWl0CuKWgWRlc2NyaWJlCkFyZ3MKTFMKQVBJCuKWgUx1YwpwaG9uZQriloFzY2llbmNlCuKWgU9wZXIKTmV4dAriloFpbnZlc3RpZwriloFkZW1vbnN0cgriloFHb3Zlcm4K4paBb2JqZWN0cwriloFMb3VpcwriloFSZXR1cm5zCuKWgWhhbgpuYW0K4paBY29tbWUK4paBcHJlc2VuY2UK4paBcGVsCuKWgWRldGVjdAopPQriloFDaGluZXNlCuKWgXJpY2gK4paBY2xhc3NlcwriloFleHBhbmQK4paBRG9tCuKWgURlYwpzbgpwZWVkCuKWgUppbQpzaG91bGQK4paBU21pdGgK4paBcGFnZXMK4paBSmVhbgpyaWNzCuKWgVN1bmQKYWRzCuKWgVRoZWlyCnVuaWNpcArQstGDCuKWgWRvd25sb2FkCuKWgXN0cmVzcwriloFQZXQKbWVudQpyZW1lCuKWgWNvbXBhcmVkClN0ZQpJTkQKY29udGFpbmVyCuKWgUluZGlhbgpvcmVuCuKWgXNlcwriloFXaGUK4paBcm9rdQriloFlc3RhYmxpc2hlZAriloFnZW5lcmFsbHkK4paBZmxlCl9fKAo9IisKVmFyCuKWgU1ha2UK4paBcmVtb3ZlZAp6egrDvG4K4paBbWl4CmVyawppYXRpb24Kb3V0ZXIKU0sK4paBYmVjb21lcwriloFIYWxsCnNjaW91cwriloF3YXRjaGVkCuKWgWdhdGhlcgriloFSZXN1bHQKcHJvb2YKcGF5CuKWgXByb2R1Y2VkCuKWgXw9CuKWgWJvcmRlcgriloFkaW4K4paBc2NyaXB0CuKWgWFjdGlvbnMK4paBbWFzCtGJ0LAKb290aAriloFUZWNobgpKc29uCuKWgWZpbGxlZArQtNC10L0KdW5kbGUK0YHRgtGDClRvb2wK4paBa2luZwriloF2ZW4Kc3RyYQriloFwcmVkaWN0CuKWgWx1aQriloFXQVJSQU4K4paBRnVuClNjcmlwdAriloFwb3dlcmZ1bAriloFsb3NlCmF0aWNhbGx5CuKWgWRhaWx5CuKWgXJpbmcK4paBYXJyaXZlZApTdGFjawpzY29wZQriloFCYWNrCmVsaWoK4paBemUKa2V5cwp7IgpWSUQK4paBbGljZW5zZQp3aGF0CuKWgXByb2NlZApyYW50CmVzdGl2YWwKYWdyYW0K4paBTE8K4paBSGVucnkK4paBZmxhZ3MKRG93bgpzY3JpcHRpb24K4paBZmFtaWxpZXMKaXNzZQpib3VyCuKWgUJ1cgrigJQiCuKWgWJyaWVmCuKWgWNyZWF0aW5nCuKWgWNsaWVudHMKcmFuZ2xlCuKWgWFtYXppbmcK4paBc2luZAriloFjb3ZlcmVkCldlbGwK0YHRgtC1CtGC0L7RgAriloFCYXMKdG90YWwK4paBSW5pdAriloFzYW5kClVuaXQK4paBbXVyZGVyCuKWgWJyaWdodAriloF0cmF2CmljYW5zCuKWgWF0dHJpYnV0ZQpmYwriloFwbGFjZWQKRVNUClZhcmkK4paBY29zCuKWgWF0dHJhY3QKYW5lbAp9KS4KYnl0ZXMK4paBcGFyc2UK4paBYmVsb25nCkJOCuKWgVNvbApQbwpgLAriloFjYWxsaW5nCuKWgT8+CuKWgWl0ZXIK4paBdXJsCuKWgWV2ZW5pbmcKcmVlawriloFob25lc3QK4paBZGlyZWN0b3IKUkMK4paBc29saWQK4paBcGhpbAppZW5lCkZBVUxUCmNvcGUK4paBSGlzdG9yeQriloFUZWFtCnJlZWRvbQriloFydQpVQgriloF3b3JzZQppbW8KTWF0CuKWgU1leAphY3RvcgriloF2b3IK0YLRjNGB0Y8K4paBZXhwZXJpbWVudAriloFQbGF5CuKWgUFub3RoZXIK4paBaGFwcGVucwp1YW4K4paBcGF0aWVudHMK4paBcmVuZAriloFNbwriloFUZXgK4paBd2VkCnRuCmluc2VydAriloHQv9CwCuKWgWFudGkKTWF0Y2gKYW1waW9uc2hpcAriloFmb3JjZXMK4paBSG90CuKWgXBoYXNlCuKWgXRlbXBsYXRlCnN0b3AKaWNhdGVkCuKWgW1hbmFnZWQKd2FpdAriloEqKApHQgriloFhcHBvaW50CsWCYQriloFzdGljawriloFGT1IK4paBVmlzCnRvcgriloFwxZkKcXVlc3QKdXNlcwoiKTsNCuKWgXN1ZGRlbmx5CsOpYwpORAp1cm9wCtGA0LXQtAriloFpbnN1cmFuY2UKYWNjZXNzCnVuZmluaXNoZWQK4paBdGFtYgriloFzYWMK4paBQ291cnQK4paBbWlzc2luZwriloFXaGVyZQriloFTdW0KfV57XAriloFzdWEKXywK4paBdGhpY2sK4paBVHJ1bXAK4paBb3BlcmF0aW9ucwpGUwriloFkZXV4CmR6ClRlbXBsYXRlCuKWgSIvCuKWgW9kZAriloFyZWFsaXR5CuKWgXRlYW1zCuKWgWNlcgpvbWEK4paByJlpCuKWgWNsb3VkCuKWgURlcGFydG1lbnQKTmUK4paBcmVxdWlyZXMKaXRlbXMK4paBSUlJCnJpZ2h0YXJyb3cKKS0+CuKWgXdyaXRlcgpyZXBsYWNlCuKWgXRocgpqZW4K4paBb3QK4paBb2NjdXAK4paBZXZlbnR1YWxseQriloFNYXRoCuKWgWNvbnNlcnYKYW1lcgriloFGb3J0CuKWgWRyeQriloFzZXh1YWwK4paBY29zdHMK4paBZm9ybXMK4paBVmljdApQQVIKZnJhbWV3b3JrCuKWgdC00LgKT3BlcmF0aW9uCtC30L3QsAp3aGljaAriloF0aWdodApJbnZhbGlkCuKWgXBhcnRuZXIK4paB0L/RgNC10LQK4paBdGhhbmsK4paBZ3VhcmQKaGVtCkJvZHkK4paBZW1vdApJWApmYXN0CtGJ0L4Kw7FvCm5pZ2h0CuKWgVNjaQrQvdC40LrQsAriloFUTwriloFpbmRpdmlkdWFscwrRgdGB0LgKfSksCkZhbHNlCigiJQriloFvcHRpbQriloEtLT4K4paBZmFjdG9yCuKWgXNtYWxsZXIK4paBY29udGFpbgpzcGVjdApFbmdpbmUK4paBYW5ub3VuY2VkCuKWgURlbW9jcgriloFyb2IK4paBZmxhdApvc29waApTZWFyY2gKYWhsCuKWgUV4Y2VwdGlvbgriloFPbAplcXVhbHMK4paBdW50ZXIKc2hhcGUKTlMKT2JqCuKWgXNwZWNpZXMKd2VpZ2h0CnlvdQriloFlc3RlCuKWgVZpZXcK4paBbWlzc2lvbgriloFqb3VybmFsClZhbHVlcwriloFlaW5lbQppc21vCuKWgXByb2plY3RzCuKWgURhcwpyaWJsZQriloFzZXJ2ZQriloFvcGVuaW5nCuKWgWh1cgriloFwcm9ncmFtcwriloFVU0EKaWxpYXIKaWRvcwpCcgplc3RhbXAK4paBdG9vbHMKYW5uZXIKUlQK4paBU3RhcnQK4paBYmF0aAriloFjb2ZmZWUKb3J0ZXIKaW50ZXJuYWwKZmlsZXMKSU5WQUwKYWtvCmR0CuKWgVNlY29uZAriloFhbGxvYwriloFlbmRlZAphY2lvbmFsCuKWgW1hbmFnZXIK4paBU3VuCmFnZwriloFsZWFkZXIKb2x2ZWQK4paB0YfRgtC+CuKWgXRyYWRpdGlvbmFsCnNob3QKcnVwCkNGCuKWgUVhY2gKd3IK4paBU29tCuKWgW1hdGVyaWFscwriloFtc2cK4paBc3luCuKWgXByb2R1Y2UK4paBc3RvcmFnZQpzdWJzZWN0aW9uCuKWgVNpZQriloFJUApDRVNTCuKWgXdhClJlY29yZAriloFtYXJrZXRpbmcKcGxldApEaWFsb2cK4paBbWVudGlvbmVkCuKWgU5hCuKWgVVuaW9uCuKWgUFQSQriloFuZWdhdGl2ZQp0eHQK4paBZWFzaWVyCmxlZ2FsCkRlcAriloFub3ZlbApldXIKYWNpw7MK4paBQnVkCuKWgWNhcnJ5CnNjaGFmdAriloFicm9rZW4K4paBdHJlZXMKPigpOwriloFlbWIKaWVkZXIK4paBcm91dGUKaWtlbAriloFsaXN0ZW4KYXNoaW9uCuKWgU1ycwriloFlcXVpcG1lbnQKYWdnZXIK4paBVGh1cwriloFtYXRyaXgKYWxsYQriloFUb3VyCuKWgWNvbnZlcnNhdGlvbgpNb24Kb3VybmFsCuKWgW1pbnV0ZQpBbQpBcGkK4paBZm9yZ2V0Ck1lCmxldmFudAp0ZW1wCuKWgXRlbGxpbmcKbW92ZQriloFpbmRlcGVuZGVudAp0b1N0cmluZwplZGl0CuKWgUphYwphenoKcmVhY3QK4paBY2luCuKWgVByb3YKaXN0ZWQK4paBaGFzaApvbm5hCmlraQriloFnZW5lcmF0ZWQKUmVuZGVyCuKWgXBzeWNoCm5hdgriloFlbnRyCtC/0YDQsApyeApBVEgK4paBYXNzdW1lClRyZWUKc2VtYmx5CuKWgU1hdHQKY2FwdGlvbgriloFzb2x1dGlvbnMK4paBZmFpdGgK4paBZGlnaXRhbAriloFleGNlbGwK4paBVmVyc2lvbgpEZWJ1ZwriloHQttC4CuKWgWNhcnJpZWQKcmVzZXQK4paBc2xvd2x5CmFuY2luZwriloFvd25lcgriloFUZXIK4paBRGlkCuKWgWdlc3QK4paBw6l0w6kK4paBcHJvb2YKRm9udAriloFub2IKQ28K4paBR05VCuKWgWxpYmVyCml0bmVzcwriloFoaWoK4paBdmVydArRiNCwCkZMQUcKTUVOVAriloFTb24KTXVsdAriloFkaXN0cmljdApjb25uZWN0CmplY3Rpb24KbHltcAriloFyZWFsaXplZAptb3MKeWUK4paBcmVuZGVyCnJpbwriloFpbnRlcnByZXQK4paBc2xpZ2h0bHkKZml4CuKWgXN0dWRpZXMK4paBcmlkCmF0cmUK4paBYmVuZWZpdHMK4paBRmFjZQppdmVyeQrRgNC40Y8KZG9jdW1lbnQK4paBYXNraW5nCkxhc3QKYXJhbnRlCuKWgU1hcnRpbgriloFFbGwK4paBdmVjdG9yCuKWgWZvcmNlZArQvtC70L4KUEgKV1IK4paBS2wK4paBc2t5CuKWgXN0cmF0ZWd5Cm9ja2VkCuKWgW5lY2sKxZtjaQpPVVQKKSksCkN1c3RvbQriloF3aWUK4paBc3dlZXQK4paBdGVtcAriloFmb3JlaWduCuKWgWhhbGwKYXN0cgpBc3MKTU9ERQriloFtYXhpbXVtCmFubmVscwriloF0aXAK4paBc2Vjb25kcwriloFzdGFjawppZ2EK4paBcmFpc2UKZW5hYmxlCm9pcgriloFzb3VsCktlCikkLgriloFUaW0KQUxTRQppc2VyCmNvbnRpbgpiZWwK4paBbWFkCmxpY2hlbgphYmUKc2FmZQriloFjb25jZW50CmJvdW5kCuKWgVJlcXUKc3dpdGNoCuKWgXN0b25lCuKWgXRyYW5zbAriloF2YWMKYW5kb24K4paBRm9yZQriloFzb3VuZHMK4paBUG9wCuKWgUhUCmxpYQplbnRlcgriloFoZWxwcwplZHkK0YHRgtCy0LXQvQphbnRlZAriloFJdHMK4paBU3RlcApJY29uCuKWgUVYUEVDVAppYWxpemVkClBvc3QKYXplCuKWgUNhcm9sCuKWgXJlcQriloFjcml0aWNhbApEUwriloFzZWF0CmFwZWQK4paBdXBwZXIK4paBU3kK4paBZXhwbGFpbgriloEnLi8KdXRpbHMKcG9zc2libGUK4paBZG9udApIb3N0CuKWgWFwcHJveGltCkFzeW5jCuKWgWdyYWIK4paBc291cmNlcwriloFNb3MK4paBR2VybWFueQriloFydWIKQ0hBTgriloFyYWluCuKWgXRydWx5CuKWgWpvaW5lZAriloE8PwriloFMbwpEZXNjcmlwdGlvbgpha3QK4paBQW5uCl4qCmlkYWUKKDoKdHcKTWFyCnByb2R1CuKWgXNwb2tlCtGO0YIK4paBd2Fsa2luZwriloFub2RkZWQKUHJvcHMKRW5hYmxlZAppcmsKRklMRQplcXVhbApwcGluZwpvbGkKRVYKZW56CmV0aW5nCuKWgXNhbXBsZQriloFhcnRpc3QKWyQKaXTDoArQudC+CnByb3BzCmJ1CtC10LIK4paBcmVzcG9uc2libGUKTVQK4paBY2F1c2VkCuKWgXRoZW1lCuKWgVdhcwriloFCZWZvcmUKYWNsZQriloHRgNC+0LrRgwpjdQpERVYK4paBaHVuZwp0ZXh0YmYK4paBc3BpbgriloFsYXRlc3QKZW50aWFsbHkK4paBUHJvZ3JhbQpNZXRhZGF0YQpwYXNzd29yZAriloFodXJ0CtC60YEK4paBQXVzCnNleQphbGxldAp4RgriloFSb2FkCtC10YLRgdGPCuKWgXJlbnQK0YbQuNGPCuKWgUFzc2VydArRltC70YwKw7xjawriloFzaXRlcwpEb2N1bWVudAriloFvYnRhaW5lZAriloFjaQriloFbIgriloFjb21wbGV0ZWQKYXNldApyYWlkCuKWgXNvcnJ5CuKWgWZhYgriloFzY2hvb2xzCtGF0L7QtNC4CuKWgXNjcgriloFpbmNvcgriloEnLwriloFzcHIK4paBVGV4dAriloFjb21tZXJjaWFsCmluZ2x5CuKWgW9waW5pb24K4paBU3RhcgpTaWduCuKWgWphdmF4CndpCmxhdAriloFLZXkKdmFycGhpCtC00YsK4paBY29ubmVjdGVkCuKWgWFkanVzdAriloFBegriloFwbGFubmluZwotLS0KSW50ZWdlcgphdWYKZXhwZWN0ZWQK4paBZmFudAriloF0b3UKUGFyZW50CuKWgUxhdAriloF0aG91Z2h0cwriloFKdWQKUGFyYW1ldGVycwpHcgrRgNC+0LwKSUEK4paBQm9iCmxpY3QKbGFuCm9taWMK4paBYXBhcnQK4paBdHJvdQriloFhcHByZWNpCuKWgUNocmlzdG1hcwppcnEKdGhvbgriloFFcnJvcgriloFzY29yZQpyb21lCuKWgW5laWdoYm9yCuKWgU11cgphZG1pbgriloFGaWxtClJlY3QK4paBY29uZmlndXJhdGlvbgriloFjcwpndW4KY2hhbm5lbAriloFSZXBvcnQK4paBc3RyYXRlZwriloF3b3JrZXJzCmZpZWxkcwpTY2hlbWEKYXBwYQpvbGljCkVPCuKWgUNoYXJsCuKWgUN1cApwbmcK4paBSGlsbApvd2UK4paBbW9zdGx5CuKAnS4K4paBZmluaXNoCuKWgdCh0L4K4paBc3RhcnMKcGxheWVyCuKWgWlubmVyCmNvbXBvbmVudAp0aW0KSUUK4paBdGhlcgriloFzbWFydAriloFzYWQK4paBQ291bmNpbAphcmVhCmxheQriloHQsdCwCuKWgWdyYWR1CuKWgWNoZW0K4paBaG8KU2VsZWN0CuKWgWluc3RyCuKWgWtsCmlmaWNhdGlvbnMKTG9uZwriloFzb2JyZQriloFPbGQKd2VzdAp9LFwKaW5ndQriloFzcHJpbmcK4paBbnVyCmV4YW1wbGUKV2hlbgriloFhZHZpY2UK4paBdWx0CmVubmlzCuKWgUxvdmUK4paBIiIK4paBaW5jcmVhc2VkCuKWgWZpbmRpbmcKaXJ0eQppc3RyaWN0CuKWgWxheWVyCnRlbXBsYXRlCkZpcnN0CtC90YvQvAppZ3JhdGlvbgpyZW5jeQpvd2llCuKWgW5wCuKWgXNlbGVjdGlvbgriloFOYWNoCuKWgVBSTwriloFwb2xpYwriloFkYXRhYmFzZQriloFieXRlCuKWgXByb3ZpZGluZwptYWMK4paBbWV0YWwKbW9kdWxlcwriloFHZW9yZwriloFTYQriloFlc3RhYmxpc2gKLi4uIgppdQpraW4K4paBZXRoCuKWgVNhbmQK4paBQ2hhcHRlcgriloFnYWwK4paBaWNlClJlZAriloFkYWwK4paBcHJpbmNpcGFsCk1zZwriloFyZW1haW5zCtC90LMKVGl0bGUKUmVsCkRpc3BsYXkKTm9uCuKWgWRlZmluaXRpb24K4paBYXR0cgriloFzaWduYWwKaGwK4paBc2VsCuKWgXZvbHVtZQriloFjYWNoZQpoZW5zCuKWgXdpcmQKW1wKTk9UCuKWgWVsZWN0aW9uCnV0dAriloFXaW5kb3cKZW50YWwKaWZlc3QKeGYK4paB0KDQsAriloFvdmVyYWxsCmJsaWMK4paBZWRpdG9yCmFkZW4K4paBY2FydApMZWZ0CnVscwpiaW5nClJpZ2h0CuKWgXPDqQpTaW0K4paBY2FtZXJhCuKWgWZhdgpEZWNsCnNwcmluZwriloFlcnJvcnMKVGFiCnByaW50bG4K4paBQmVybgpuYWIK4paBQmFzZQriloFhdXRoCuKWgWFwcGFyZW50CuKWgXByZXNlbnRlZAriloFyZW1haW5lZAriloF3ZXQKRW5jCklORk8K4paBU2luZwpwYWNrYWdlCikpKTsK4paBU29jaWFsCuKWgU1hc3MK4paBZGVzcGl0ZQriloFtb2JpbGUK4paBbGFib3IKR28K4paBZXNwCuKWgVRhYmxlCuKWgWV4cGVydAriloFmbGV4CuKWgXByb2Zlc3Npb24K4paBcGlsCkNvbGxlY3Rpb24KTE9DSwriloFhcHBsaWVkCmFsbGVyCm9ycGgKRU5TRQriloHQsdGL0LsK4paBZGIKb3ZlcmxpbmUK4paBQ29kZQriloFieXRlcwriloF0cm91YmxlCuKWgdC90LDRgdC1CkRECuKWgVllYXIKbWJveAriloFrZWVwaW5nCuKWgWtpY2sKw6RuZwriloFjb3JyZXNwb25kaW5nCuKWgWxpYnJhcnkK4paBKi8NCmNhbGxiYWNrCnVtcwriloFqc29uCuKWgU1vdW50CuKWgVN0YW5kCklHSFQK4paBTmV3cwriloFjb21tZW50cwpyZXR1cm5zCkNhbAriloFhd2FyZAriloFib3VnaHQKaW5jbHVkZWdyYXBoaWNzCuKWgdC70LUKZG90CnJvbmljCuKWgWV4dHJlbWVseQriloFtaW5vcgppZmVyCmphdmEKZW5kYXIKbGF5b3V0CnBsaWVzCuKWgWJ1ZgriloFJc2xhbmQK4paBQWJvdXQK4paBd2VzdAriloFTY290dApBQ1QKV2h5CuKWgWxhcmdlc3QK4paBY29udGFpbmVyCuKWgXRlbXBlcmF0dXJlCuKWgcKjCuKWgXJlZHVjZQriloFmb2kKaGFuCuKWgWJvZAriloFWYW4K4paBbnVsbHB0cgriloFkYXRpbmcK4paBY2hhaW4KRmxhZ3MKaWVudG8Kc29ydAriloFmYW4K4paBZGV0ZXJtaW5lCuKWgXdlYXIKQkUK4paBYXBwcm9wcmlhdGUK0LvRgdGPCtGC0L7QsgriloFnb2FscwriloFNYXAK4paBU2FyCuKWgU9wdGlvbgriloFoYXRlCuKWgXppam4KLC0K4paBaW1wbGllZApiaXRzCuKWgU1lbgpza2lwCuKWgU1vbmQK4paBSG9uCuKWgXByb3ZlCnZhbgriloF0cmFmZgriloFpbnRyCnBpYwriloFkcm9wcGVkCuKWgXdlcmQK4paBc2VwYXJhdGUKaXNhCuKWgXRhYgp0bWwK4paBIiQKbXV0ZXgK4paBUGFuCnNlcnZlCuKWgWhvdGVsCuKWgUxhc3QKc3RlcAriloF2aXIKUnVsZQppc3RhbgpvdGluZwphcmtzCihfXwriloFlbHMKUGxheWVyCl1dCtCy0LjRhwp5Y2gKZXhjZXB0aW9uCj0iLi4vCuKWgWltYWdpbmUKIn0sCmljYWdvCmVsZXIK4paBdnMK4paBQWZyaWNhCuKWgUJ1c2luZXNzCm9ja3MK4paBcHJ6CuKWgWZ1Y2tpbmcK4paBcGlja2VkCuKWgdCy0ZYK4paBIiwK4paBYm90dAriloFmYWlsdXJlCls6CuKWgUdhcgphcGVzCnVwbGUK4paBZmVyCuKWgXB1cmNoYXNlCuKWgdC/0LXRgAriloFiaXJkCldpZGdldAriloFTdW5kYXkK4paBQW1hegriloFjb25zdWx0CnV0c2NoCmFudG8KU3RvcmFnZQriloFoZWFkZXIKw7xocgriloFIYQriloFBc3NvY2lhdGlvbgriloFzaWdodApDZWxsCuKWgXByb2ZpbGUK4paBZmVtYWxlCsOlbgriloF3aWQKem4KRGlyZWN0CuKWgXN0cmV0CmFhdAriloFwYXRpZW50CmhlcmUK4paBQXRsCmluZXQKRGVmaW5pdGlvbgppbWFyeQpQb2xpY3kK4paBZHV0CuKWgW1ham9yaXR5CtGB0ZYK4paBUHJvamVjdApCeUlkCuKWgWJlbGlldmVkCuKWgU11c2ljCtC30YsKYW50aQriloFvZGVyCkNoYW5uZWwK4paBc2xlCuKWgXNlcXVlbmNlCuKWgXBpZWNlcwriloFrbmUK4paBYWJzb2x1dGVseQriloFQaGlsaXAKYWJpbGl0aWVzClF1ZQriloFLYXIKRXhlY3V0CuKWgURldmVsCuKWgWVsZWN0cmljCmZ1bGwKcm9sbGVkCkRvbQriloFyaXZlcgriloFoZWFsdGh5CuKWgWV4dGVybgpmaXQK4paBY29hY2gK4paBS3IKYXN0YQpDb21wYXQK4paBZXhpdAriloFDb25zdAphZnRlcgriloFzaG91bGRlcgriloFqb2JzCnpvbmUK4paBc2FsZQppeGVsCuKWgWRldGVybWluZWQK4paBYW55d2F5Cm9yZgriloFHZXIKYWxsZWwKcmVlcwphc20KaW1zCuKWgXJlY29yZHMK4paBY29ycG9yCuKWgWludGVsbGlnCuKWgVByZW0K4paBZHJpdmluZwriloFtYXJyaWFnZQriloFUaGFuawriloF3aWxsaW5nCk1DCkZpZWxkcwpJdGVtcwriloFtaWNybwriloFsaWZ0CmlyZWN0aW9uCkFjY291bnQK4paBYXJjaGl0ZWN0CnRyYWNrCuKWgXByaW4KUEEK4paBcnVucwriloFUZXhhcwppc2hlcgplbnN1cmUK4paBQm90aArQutC+0LwK4paBQ29sb3IKUmVnaXN0ZXIK4paBSm9lCmdlcQpsZXRzCmFkaW5nCuKWgWFybXkK4paBQmFuawpvdGljClByb2R1Y3QKaW1wb3J0CuKWgVdlZAriloFjcnkKZ3JhZGUKZGlnCmdhbArQutC70LAKZXN0ZWQKw7VlcwpnZXJzCm9sb2dpZQrRgtC+0LwKcmF6eQriloFkaW5uZXIKUVUK4paBZmluZ2VycwpVTEUKY2xhaW0K4paBYWR2YW50YWdlCuKWgXZhcmlhYmxlCuKWgW1lZGljCuKWgW1hbGUK4paBY2lyY3VtCuKWgdC80ZYK4paBaW50ZXJuZXQKV04K4paBbGFiCmF6aW5lCtGH0L3QvgriloFsb29wCuKWgXByZWQK4paBY29uc2VxdQriloFiYWxhbmNlCmZvcnR1bgriloFnaWZ0CuKWgWRydWcK4paBY2FzaArRgdC60LjRhQpyZwppc3RyaWJ1dAriloFoaWdoZXN0CsOqbWUKZW1waAplbW9uCuKWgXBlcmZvcm1lZApjdXQK4paBY2xvc2VyCuKWgWJlY29taW5nCuKWgSIiLApzdGFyCnB1YgriloFwcmVwYXIK4paBdm90ZQppbGRlCuKWgWltcHJlc3MK4paBZW1wbG95ZWVzCuKWgWVpbmVuCuKWgXNtb290aAriloFzbm93CuKWgXB1cnMK4paBdm9jCuKWgU1pY3Jvc29mdApQVQriloFpbmNvbWUKaW5vcwriloFvcGVyYXRvcgriloFlcXVpdmFsCuKWgXBhc3N3b3JkCmNpw7NuCnN1Y2Nlc3MK4paBZW1wCkhPVVQK4paBY2EKZmxhZwppbGx5CmNyZXRlCmZyYWsK4paBaGlkZGVuCuKWgSIlCkVSTgrRgNC+0LLQsAriloFVTgpyb2tlCm1pc3MK4paBc3BsaXQKUmVmZXJlbmNlCikkLAplcGVyCuKWgU5PCuKWgXNxdWFyZQpzdXIK0YfQtdC9CmVzdGVyCtC90YwKfSIKcmF3bgpydWxlCuKWgWF1ZGllbmNlCmVzdGUKZW1zCklDRU5TRQriloFJbGwKVVNFCuKWgWJvbgpidXIK4paBc2ljawriloFob3JzZQriloFFZHVjCuKWgWJlbmVmaXQK4paBY3JvCkFwcGxpY2F0aW9uCuKWgWNvcnJlCuKWgWd1YXJhbnRlCkRBVEEK4paBZXhwbGFpbmVkClRYCuKWgW9udAriloFGbG9yCuKWgXJlcG9ydHMK4paBUmVhbAp1ZGVkCmxlYW4K4paBY2l0aXoK4paBZGVjaWRlCldTCuKWgWRvbWFpbgriloFyZWZsZWN0CuKWgW1pbmltdW0K4paBbGVncwriloFzbWlsZWQKZmkK4paBcHVyZQriloFDdXN0b20K4paBZXNzZW50aWFsCuKWgW9ic2VydmVkCkJ5dGVzCuKWgWN0eAriloFyYXRlcwptYnJlCuKWgXdvcnJ5CileCuKWgVJlc2VhcmNoClJvb3QKV2luZG93cwp1bHR1cmUK4paBcmVsYXRpdmUK4paBc2V1CuKWgW5pZQriloFzaG9vawppb3VzbHkK4paBYWR2ZXJ0ClNlZQriloFDZW50cmFsCuKWgWJhdHRlcgriloFzaWduZWQKVFMKb25pCuKWgXByZXBhcmVkCmdhdGUK4paBQ2FyZQpjYXJlCuKWgXN1cHBseQpFeHAKYm9sZHMK4paBdHJhaWwK4paBZmlzaAriloF1bml0cwp2ZW51ZQrRhdC4CuKWgVdvb2QK4paBY2F0ZWdvcnkK4paBYmxlCuKWgW92ZXJyaWRlCmZvbwriloFpbmZsdWVuY2UKZW50aApyaWoK4paBYWRhcHQKaWNpYW5zCmRlbGV0ZWQK4paBdmlzaW9uCmN0cmwKTGFtYmRhCnRwCm1vbmQKYXR1cmRheQpub3JtYWwK4paBdGhvdXNhbmQK4paBUHJvZmVzcwriloFkaXNlYXNlCmNsaXAK4paB0LPRgNCwCmJvbGRzeW1ib2wKT0IK4paBY2hhbGxlbmdlCuKWgW1vdGlvbgriloF3aGlzCuKWgWxlYWRlcnMK4paBY29sb24K4paBc3VpdAptaWQKYW1waW9uCsOhZwriloF2aWV3cwriloFhcHBlYXJzCmFuY2VsCuKWgXp3ZQpJU1QK4paBbGVhdmVzCuKWgWVuaApBY3RpdmUK4paBZGl0CmlmaWNhdGUKbWF0cml4CkV4cHJlc3Npb24KUmVhZGVyCuKWgW1lbnRhbAplbWJyZQriloFkZWNvcgphcnRzCuKWgXZlbnQKbmVsCmxpbmVzCnVwaWQKZXJ2ZWQK4paBYm95cwrQsNC70YwKTU9ECmlzbAriloFbWwpwaHkK4paBLi4K4paBYWdlbnQK4paBU2VydmljZXMK4paBaXJvbgriloFjb21wb25lbnRzCuKWgWZyZQppY3Rpb25hcnkK4paBdGVzdHMKLn5cCm9icwriloHQnNC4CuKWgdC+0LHQu9CwCuKWgWFzc2VzcwriloFGcmlkYXkK4paBd2VhdGhlcgprZwrRgdGC0YDQsAoufQplbmRhbnQKYW5uYQriloFKYXBhbmVzZQpjbXAK4paBQXJteQpvbnltCuKWgXJlbGF4CmRhdGVzCuKWgVJ1c3NpYW4K4paBZXhjZWxsZW50CicpKQpJTElUWQriloFzaG93aW5nCuKWgURhbmllbArQvNGPCuKWgU1haW4KUGhpCuKWgVJvY2sK4paBZ3JldwriloF5aWVsZAppw6hyZQpzZWcKfX0kCuKWgXN0cmljdAriloF2ZWhpY2xlClVECkFGClN3CuKWgWNoZXN0CuKWgW9mZmljZXIK4paBZWFyCkhFUgpub29uCuKWgWpvdXJuZXkKTlQK4paBZGl2ZXJzCuKWgUZpbmFsbHkKRm91bmQK4paBQVMKcmlrCuKWgWNvbnN0cgriloFzdXN0CmFjY291bnQK4paBd2FsbHMK4paBZW50aXJlbHkKSXRlcgpjaGEKaXNoZXMKSVZFCuKWgXByaW1lCuKWgeKApgp4ZQp1dGVuCmFyc2UK4paBUGEKcHV0ZQrDpGwK4paBcHJvdGVjdGlvbgriloFrZXlzCk1heQpCeXRlCkNvbnN0CkJMCuKWgdC/0LUK4paBc3BsCuKWgWNsb3RoZXMKYXNoZWQKTWFyawrDqG1lCuKWgWZhaXQK4paBaW50cm9kdWNlZAp1bmxvY2sK4paBSW5zdGVhZAphbnNpb24KcmVnaW9uCuKWgUFtZXJpY2FucwriloFpbmRlZWQKd2lkZ2V0CuKWgXJlYWxpemUK4paBZnJvCkJJVAriloFSZWFjdApSRUFECmFza2V0Cm5ldmVyCuKWgXBvbGwKaWNvbAriloFwcmV2CuKWgWh5cAriloFGdXIKY2xvdWQK4paBTGVlCnBsaW5nCuKWgUNoaWxkCuKWgWlkZWFsClNlbGVjdG9yClNUQVRVUwp1Y3R1cmUK4paBd2luZQriloFwb3NzaWJseQriloFwdXR0aW5nCuKWgXJpdgriloF3ZWFyaW5nCuKWgVNvdXJjZQriloFDYXMKQ2hhbmdlZAriloF0aGFua3MKVElNRQriloFzcG9ydAriloFBd2FyZAriloFnbGFkCuKWgVBhc3MK4paBUG9zCnNjaGUK4paBQ0QK4paBYWZmb3JkCuKWgVdvbWVuCuKWgURpc3RyaWN0CuKWgWlkZW50aXR5CuKWgXBhcnRpZXMKOiUK4paBZHJhZwriloFtYWkKISgKbGFuZ2xlCuKWgWtub3dpbmcKUHJvamVjdAriloFyZWdhcmRpbmcK4paBSm9zZXBoCtCz0LUK4paBRGFyCuKWgUhvcgriloFhbmltYWxzCuKWgWV4dGVuc2lvbgrRgdC60LDRjwriloFIYW4KYnRuCmFjaW9uZXMK4paBZmFtaWxpYXIKaG9sZGVyCjoNCnN0b29kCuKWgWxpa2VkCkNPREUK4paBZW5hYmxlCuKWgXBlZAppdGkKaGFiCkRJUgriloFiZWF0CtGC0ZYK4paBTWluaXN0ZXIK4paBcHkKUGF0CuKWgWV4aGliCuKWgUJ1aWxkCuKWgUZpZWxkCmljaWFuCuKWgWNvbGxhYm9yCuKWgXF1YXJ0ZXIK4paBRmFsc2UKa20K4paBdmlydHVhbApvd2EK4paBSm9uCmFtaW4KdWVuCuKWgdC40L0KaW1hdGlvbgpvdmluZwriloF0ZXN0aW5nCnNlY3QKSVRJT04KIVwKYXB5CuKWgXRyYW5zaXRpb24Kb3NpdG9yeQpPRE8KUEQKbsOpCuKWgWdlbmVyYXRlCuKWgW5hdGl2ZQriloEoJwriloFlbGxlClJSCuKWgWh1bgpfLT4KYWdub3N0CuKWgXByb3Bvc2VkCuKWgUdhbWUK4paBZWZmb3J0cwrQstGPCnRjCtGB0LoK4paBaW50ZW50CuKWgUJyZQppc2MK4paBcHJvdGVzdAriloFob2xkcwpvbWV0cnkK4paBSGF2ZQriloFkZXRhaWwK4paBV0lUSE9VVAp5ZXIK4paBS29uCuKWgW5vdGljZWQK4paBcmVxdWlyZW1lbnRzCkRFQlVHCmtpbnMK4paBU3BhbgriloFjYXJzCm1ldGEK4paBa2lsCuKWgUJyb24K4paBZXhwZXJpZW5jZWQK4paBcmVtaW5kCm91cnNlCuKWgVdlc3Rlcm4KdGVyZWQK4paBZGV2aWNlcwriloFwaWN0dXJlcwriloF0dXQKImAK4paBaW1wb3NzaWJsZQriloFyYWlsCuKWgWZlZWxzCmljYXMKaWxsaW5nCuKWgWFjY2lkZW50CuKWgSdACl9fX19fX19fCuKWgW5vdGVzCm9tYW4KUGFyc2VyCuKWgWRpc2NvdmVyZWQK4paBUm9tYW4K4paBYnVkZ2V0CuKWgWd1aWRlCmtpbmcK4paBaW5jcmVkCm9sYXIKZW5kZW4KRGVzYwriloF3YXZlCtCx0LvQuAppZ3QK4paBcmVzdHJpY3QK4paBUmV0CuKWgW1hYwrRg9GACkJTCsOtcwriloFnZW5lcmF0aW9uCmRlbQphbG8K0LHRgNCwCuKWgW9yZGVyZWQKZHJvcAriloFwcAriloFSZXZpZXcK4paBbGl0ZXJhbGx5CuKWgVNpcgriloFZZWFoCuKWgWRlbnNpdHkKcml6CmluZGUK4paBZ2FpbgriloFwYW5lbApqZXQK4paBVGltZXMK4paBbmVsbGEK4paBcHJldmlvdXNseQpwb2ludHMKU2VuZAriloFCcm93bgplYWNoCuKWgXRyaWdnZXIKb21ldGltZXMKaWNvcwpHUgpQYW5lbApvZ2VuCuKWgWNtCnJ1Y3Rpb25zCuKWgWtpc3MK4paBc29sbwriloFmYW1vdXMKcmFuCtC/0YDQvgriloF0aHJvCkdyYXBoCmltaXQK4paBVmFsdWUK4paBc3RhcnRzCmlwZWxpbmUKaGQKVEMK4paBZGlzY3Vzc2lvbgriloF0cnVjawpha2EKT25seQriloFFcXUK4paBa8O2CuKWgUJlcwriloFjcml0aWMK4paBcHJvcG9zCuKWgWJhdHQK4paBU2VjdGlvbgpTaG93CmdwClNUQVRFClBPU1QK4paBTm9yZAriloFpbm5vdgriloFjcmltCmF4aXMK4paBVHVybgpjb25uClJ1bnRpbWUK4paBcmVtYWluaW5nCm9zdG9uCuKWgdCtCuKWgXdpbmRvd3MK4paBUm95YWwK4paBdmlkZQpQUApjaHJvbgriloFzYW4K4paBcmlzZQriloFkZWxsZQriloFEdXIK4paBcmFwaWQKY2VydApMQQplZGdlCuKWgVxdCuKWgWVudGVyZWQK4paBbGF3cwriloFwaG90bwriloFhcHBsaWNhdGlvbnMK4paBQmVybGluCuKWgWFycmVzdAriloFmZWRlcmFsCuKWgVJ1c3NpYQriloF1c3VhbAriloFyYXcK4paBcGnDuQrDqnRyZQpKU09OClNJT04KeHR1cmUKaXN0ZW50CuKWgVBvd2VyCkJpdAriloFjYXBhY2l0eQriloFjYXJkcwpVSUQKaW1lbnRzCuKWgWRhcgriloFDaGljYWdvCuKWgWNvbWZvcnRhYmxlCnRpcApiYXMK4paBbXUK4paBZW5lbXkKeWFuCuKWgdGE0LgK4paBdXBkYXRlZAphbmdvCkV2CkVmZmVjdApvc2luZwpyZW5jZQriloFDb25ncmVzcwriloFkZWZlCuKWgWlwCuKWgXRvdXQK4paBZnJlZWRvbQriloFhbwriloFUaGVyZWZvcmUKRWRpdAriloFWaXJnaW4KUkVFCmFyZ28K4paBRGFtCuKWgXRyYWZmaWMKw7FvcwriloFhbGxlCuKWgWRlcHRoCk5vdwriloFzaWRlcwriloHQs9C+0LTQuApEZXNjcmlwdG9yCuKWgWFydGlrZWwK4paBbmFycm93Cl9fXwprdwp1dG8K4paBRmFjZWJvb2sKdGVncgpib29sZWFuCm5pawpiZApUcmFjawriloFncmFuCnJlc2hvbGQK0LLQtdGCCndyYXAK4paBbm9pc2UKaWd1CuKWgUJvbgriloF3eQpsaW51eApja3MK4paBZmFucwriloFtYWNoCuKWgXByaWNlcwrDqXYKb3V0cwpzdGFuZGluZwriloFjYXRlZwo7XAriloFkZWNyZQriloFTYXR1cmRheQriloFtZW51CuKWgU5vdgriloFZZXQK4paB0YLQsNC6CmxpY2hlCuKWgUFjYWRlbQriloFjb21tdW5pY2F0aW9uCnVzaW5nCuKWgVNvY2lldHkK4paBbnVjCnBlY3RpdmUKb3JpYWwK4paBYWZyYWlkCuKWgWFuaW1hbAriloF0dXJuaW5nCmRzdAptYXRoZnJhawpsZXJzCuKWgWxvdHMK4paBw6EK4paBVHJhCm5wCuKWgXJvc2UK4paBR0wK4paBaGVscGluZwriloF3aW50ZXIK4paB0LrQvtC8Ck1vY2sK4paBaW52ZXN0bWVudApVc2UK4paBQ2FuYWQK0L3QtApDb3B5CuKWgWZseQpTRVIK4paBRmFyCuKWgVJvcwphbWlsCuKWgWZpZ2h0aW5nCuKWgXJlbGlnaW91cwpzdXBlcgpzY3JlZW4K4paBZnVybgriloFzdXJwcmlzZWQK4paBcmVwbGllZApBY3Rpdml0eQriloFEb3duCuKWgWluc2VydAriloFPbHltcAriloFwb2ludGVkCuKWgUNhcmQKZHJpdmVyCuKWgURhCiEtLQpyb3VkCnVuZG8K4paBbWVzc2FnZXMK4paBUG9pbnQKVk0K4paBcGxhbmUKeGMK4paBdGVsZXZpc2lvbgrRkdC9CuKWgXRob3VzYW5kcwriloFjcmlzCuKWgWRlbGF5CuKWgU5leHQK4paBbm9tYnJlCuKWgXR1CuKWgXNraXAKcm9hZAppc3RyYXRpb24K4paBdHVyCuKWgURldmVsb3AK4paB0J/QsAriloHQtNGA0YMK4paBd29uZGVyZnVsCj4mCuKWgUxpYmVyCuKWgXNjb3BlCuKWgW1hbmFnZQriloFkYXNzCuKWgXJlY2FsbApQTQriloFyZWxldmFudAriloFFYXJ0aAriloHQutCw0LoK4paBYXByCuKWgUFTUwppw6luCuKWgVNICm9vbQppdGV0Cm5vbmUKYXNpCuKWgW1vdG9yCuKWgVNob3cKbmIK4paBZmFjdG9ycwriloFmb3Jlc3QK4paB0LLRgNC1CnRobQriloFtdW5pY2lwCuKWgXR1cm5zCuKWgURpdmlzaW9uCkVDCuKWgWRpc2FwcGUKc3RydWN0b3IK4paBc29tZXdoZXJlCuKWgUFmcmljYW4K4paBSW5zdGl0dXRlCkdyaWQK4paBdGVhY2hlcgp1cmllcwriloFyZXNwZWN0aXZlbHkK4paBU0QK4paBYWxpdmUK4paBcG91CuKWgVdhdGVyCtGE0LUK4paBY2hhbmdpbmcK4paBYWZ0ZXJub29uCuKWgW9yZGVycwpSZXQKUG9pbnRlcgriloFzYXYKZXJnCm9rZWQKZXNzaW9ucwriloFGaXJlCmFyZXQKaW1tCuKWgWRlc2lyZQriloHRidC+CuKWgURlc2lnbgp1dHVyZQriloFPZmZpY2UK4paBY21kCuKWgWVhdGluZwpOZXR3b3JrCuKWgXJvdWdoCm9wZXJhdG9yCklHTgriloFzcG9ydHMK4paBd2VyZW4K4paBbm90ZWQK4paBdHdpY2UKSUlJCuKWgWFueAriloFlbGltCuKWgdCw0LIK4paBaW8K4paBc3BlZWNoCuKWgWNvbmR1CmVsbGVzCmlkYWRlCuKWgWFkdmFuY2UKUkkKb2NhCi9cCmFwc2hvdAriloF0YWlsCm1vZGVscwpvZ3kK4paBSmVmZgppcmF0aW9uCuKWgUtvcmUK4paBbGVhZHMKYmF0CkFkYXB0ZXIKY2F0ZWdvcnkKYW5ndWxhcgriloFzYXZlZAriloF1bmlmb3JtCuKWgW7DqQriloFidXNpbmVzc2VzCkhpc3QK4paB0LDRgApkb21haW4K4paBU2kKcmFpc2UK4paBd2FybgpoZXRpYwriloFHcm8KKSkuCn0+CtC30LUK4paBQW1hem9uCuKWgU9yZ2FuCuKWgUxha2UK4paBYWdyZWVtZW50CnhhCuKWgXBlcm1hbgriloFjb250YWluaW5nCuKWgXN0cmFuZ2UK0YHRgtGWCuKWgXN0dXBpZAriloFzcGVha2luZwriloFJbnRlcm5ldApwcmVmaXgKZXNjCkFzc2VydApwcm90ZQriloFtYW5uZXIK4paBU3oKdW50ZQppb3QKUHJvZmlsZQpvdmVuCuKWgWZvcm1lZAriloFsaXQK4paBZWNvbm9teQriloFjegp3aWQKUkVRCuKWgWNob3NlbgriloFQcm9kdQpvc3RlcgpzdGFuY2VzCmF3YQriloFSZW4K4paBY29uZmlybQriloHQkdC+CuKWgWJpbGxpb24K4paBZMOpYwrDvWNoCuKWgWlsbHVzdHIKVElFUwriloFQdWIK4paBYmFuCmFkZWQKYWhuCuKWgUNhdGgKbm9udW1iZXIK4paBd29yc3QK4paB0JzQtQriloFzdWdnZXN0ZWQKc3RhdHMK4paBY2FudAriloFhbGlnbgprYXBwYQriloFoZW4K4paBaW5pdGkKJ10pCkJJCuKWgWdhcmRlbgriloFzZWN1cmUK4paBXFsKaGFuZGxlcgplbGxpCmxkb3RzCnNlY3V0CuKWgWV4dGVuZGVkCn0tCmFuaWUK4paBRmluZAriloFNdXNldW0K4paBQ29ubmUKeXkK4paBcGFzc2lvbgpha2VycwphaHIKb2xvZ2llcwriloFlcXVhdGlvbgriloFvY2Nhc2lvbgpMZXQKJ11bJwpQcmludAphbmVzCmllbnRlCuKWgVRvZGF5CkxFQ1QK4paBQWYKLCwK4paB0KLQsAriloFgYGAKZXZlbgpzaW4KdXJlcgriloHCsApvdGltZXMK4paBSU8K4paBcG9ldAooKSkpOwriloHiiJIK4paBYWRvcHQKcGhlcmUKI1sK4paBY2VudHJlCm92ZXMK4paBYW5zCmRwCuKWgUtpcgriloFhcHBsaWNhYmxlCmZwCuKWgXZpc3VhbAriloFva2F5Cm9ybwriloFvcHBvcnR1bml0aWVzClJlcG9zaXRvcnkK4paBbGwK4paBUm9kCuKWgXNoZWwK4paBbGF1bmNoCuKWgWNvbnZlbgriloFTcGUKQW1lcgriloFjZXR0ZQpDb25kCmRlcApPd24K4paBaG9vawriloFkaWN0CuKWgVRob3NlCuKWgWZlbGxvdwriloFwaGlsb3NvcGgKdmluCmZlcmVuY2VzCmhhdgriloFhZGRpbmcKaXZlcnNlCmdhbWUK4paBQmx1ZQriloFjbGluCm5vdGUK4paBUmFtCtC80LXRgApjb3ZlcnkKw7FhCuKWgdCx0LgK4paBZmFzaGlvbgriloFicm9rZQriloEnXAriloFyZWFkZXIK0L3QvtC1CtC90L7RgdGC0LgK4paBcGF5bWVudAriloFMaWMK4paBbGlwcwriloFhY2FkZW0K4paBTW90CmVsbHMKQ0hFQ0sK4paB0YDRgwriloFNUwpFZGl0b3IK4paBem9uZQppdHVyZQriloFJVApydW50aW1lCuKWgXByb2NlZWQK0LvQvtCyCuKWgU1hcmlhCm9sdmVyCuKWgVRoYW5rcwriloFzaG91bGRuCuKWgUpvaAriloFNb2RlbAriloFTb3YKIScKRGkK4paBY2FuY2VyCklkZW50CuKWgWV4Y2hhbmdlCmlsbGVyCmluZgpMRU4KKCl7CmFnYQoiXSwKdWgK4paBS2VuCuKWgXBob3RvcwriloF0aW55CuKWgWdlbnQKw7xsCuKWgVRha2UKaWRlbApvdXRpbmcKSW50ZXJuYWwK4paBY2VsbHMK0L3QuNC8CmhhcmQK4paBVG93bgpvYmUKcGxleArRgtC10YAKdG9ucwriloFjb25jZW50cgptb2NrCnZjCsOhegriloFDaGFtcGlvbnNoaXAK4paB0LHQtQo/PwrDqXJpCmFseQriloHQpgppZXJ0ZQriloF0b3RhbGx5CuKWgUF1ZgriloFvdXJzZWx2ZXMK4paBU2VsZgpGb3JtcwppZ2h0ZXIK4paBaXNsYW5kCmZtdAriloFyYwriloF0ZWxscwpCQgpkaXQK4paBdmFyaWFibGVzCuKWgWludGVuZGVkCml6b250CuKWgXBsYXlzCmRhbQpzZXEK4paBU3VwCuKWgWN1bHR1cmFsCuKWgXNjcmVhbQpfXywKY2lwbApUaW1lb3V0CuKWgdC2Cm9ydGUK4paBcmVwbGFjZWQKRU0K4paBYWJhbmRvbgriloFTcGVjaWFsCmVsbGVuCuKWgUJydQppcm1lZApUZQpvbHQKanUKQXJndW1lbnQK4paBbmV1dApzY2FwZQriloFSYXkK4paBUG9saXQK4paBY3Jvd2QK4paBV2luZG93cwppZWdvCuKWgWVzY2FwZQriloFBcGFjaGUKc3luYwplYmVuCmlmaWVzCmV0aGVyCk1ldGEK4paBYmlnZ2VzdApHYW1lCuKWgXRyYW5zYWN0aW9uCkVudgriloHQnNC+CuKWgXBsZW50eQriloFtZWwK0L/RgNC1CuKWgW1vdGl2CuKWgdC+0YAKb3JnYW4K4paBbW9jawriloEkXwrQtdC90LUK4paBTnVtYmVyCmNrbm93CuKWgVVwZGF0ZQp6ZXJvCuKWgXN1cnByaXNlCmNlYW4KcGRmCkdsb2JhbAriloFhdHRlbmQK4paBZm9uZAriloF1bmRlcnN0b29kCk5hdgriloFNaWMKPSQKb2tpbmcK4paBU3RhZGl1bQpDbG9zZQriloFjb21wZXRpdGlvbgriloFzb2xkaWVycwriloFPUAphZ25lCuKWgUFudG9uCk1haW4Kw6FrCuKWgSNbCuKWgUNvbW1pdApweXgK4paBZWFzdAriloFPcmRlcgpGbG9hdAriloFhY2NlcHRlZAriloFtb25pdG9yCuKWgXBhZApvbmljCuKWgXB1c2hlZAriloFyZXBsYWNlCkNSRQriloFyaWRlCmZvdW5kCj0lCtCy0L7QuQriloFtYXRjaGVzCuKWgUxpZQriloFleHBlcmllbmNlcwpQb29sCnVwcwpBVgriloFleGlzdGVuY2UK4paBdGhpbgriloFtYWduCkNPTVAKaG9tZQriloFuaQriloF3dXJkZW4K0LvQsNCyCuKWgXRlZXRoCuKWgVN0YW4KYXBwcm8KYW5ueQppZnRzCuKWgXVua25vd24K4paBaG9tZXMK4paBZW50aXR5CmNpZQrQu9C10L3QuNC1CmlhcgriloFjb21wbGlhbmNlCuKWgWZvY3VzZWQKdXp6Cj1cIgpjb21wb25lbnRzCkF0dHIKYWxsZXJ5CuKWgWlkZW50aWZ5Ck9rCnBpZQriloFTdGlsbAriloFvZmZlcmluZwriloFidXN5CmN0bAppdG9ycwriloFjb25jZXJuZWQK4paBYnJvd24KY2xrClNlbGVjdGVkCuKWgUJsb2NrCuKWgWVneQppY2luZwriloFVUkwK4paBdG9waWMK4paBUHJvZHVjdAriloHRh9C4CuKWgXRyaWFsCuKWgXdlZWtlbmQKbHUK4paBSVYK4paBRWd5CnhDCuKWgW5vdmUK4paBbGV0dAplbm5lCigpKS4KLioqCuKWgXByb21pc2UKZWxlY3Rpb24KQXV0aApydgpyaWwK4paBY29uZHVjdAriloFtYWludGFpbgriloFib2F0CuKWgW9wcG9zaXRlCnNwaW4Kd2VicGFjawphbnRhCuKWgW9yaWVudAriloFzdWMK4paBZXhlcmNpc2UK4paBZWZmaWNpZW50CuKWgXRyYWRpdGlvbgriloF6dwriloFTdWQKZ29pbmcK4paBUGllcgppbnYKaXBlcwplbnN1cmVtYXRoCuKWgWNvbnZlcgpjcmVlbgriloF0ZXJyb3IK4paBRG91CuKWgWludmFsaWQKY2VpdmVkCuKWgUFyYWIK4paBd2lyZQphcHBsaWNhdGlvbgpzaGlmdApHZW5lcmljCuKWgVBsYW4K4paBV2FsbAriloFkaXJlY3RvcnkK4paBZWdnCuKWgXdlYWx0aApyYW5kb20KYXR0cmlidXRlCuKWgWhpZGUKU2VyaWFsCmNhbQriloFpdGFsCuKWgUxpbmUK4paBQ0hFQ0sKcGxveW1lbnQK4paBbWFzc2l2ZQriloFleHRyYWN0CmNoYWluClJlc3QK4paBTGFzCuKWgWJlYXIK4paBbGlua3MK4paBbmV3c3AK4paBRkMKQ2FyZApha3MK4paBdmlzaWJsZQriloFNYXJjCuKWgUJvc3RvbgriloFyZXNlcnZlZAriloFyb29mCmxpY2Vuc2VzCmRjCuKWgUluZm9ybWF0aW9uCuKWgXdpdG5lc3MKU2sKKiksClNjb3BlCiddOwriloFNaXIKdWRpbmcK4paBdHJlbmQKcmVwCuKWgW11c2ljYWwK4paBbmVpdGhlcgriloFDcmVhdAriloFwb3NpdGlvbnMKTEMKcmlkZ2UK4paBb2ZmaWNlcnMK4paBdmlvbGVuY2UK4paBVGVtCuKWgVN1cwriloFXYXkKQWZ0ZXIKYWNrZXQK4paBU291CmFjZXIKfHwK4paBcmVtYXJrCndhdGVyCm7EmwriloHQodCwCuKWgXNlZApFYWNoCuKWgXBob3RvZ3JhcGgK4paBbGV0dGVycwriloFpbnZlbnQK4paBTWFzCuKWgXNvbmdzCsOzbApraW5kCuKWgU5vbgriloFkdXN0CioqOgpuYWJsYQouIiwKTG9jawriloHQlNC+CuKWgWNsdXN0ZXIKbG9zcwriloFBU1NFUlQKZmFsbAriloFyZWplY3QK4paBU3ByaW5nCuKWgXdlZGRpbmcK4paBZ3JhdgpyZXNzaW9uCmxpbWl0ClJFUwpdfQriloFsaXN0ZWQK4paBVGVsZQpobGluZQriloFjaGllZgpNRU0K0LTQsNGACuKWgWV4cGVuc2l2ZQp0cmFjZQriloFSb2cK4paBQ29sbAriloFBdXRob3IK4paBQm9hcmQK4paBQ2FwdApURVhUCuKWgXJlY29uCmVzdGEK4paBcHJvcGVybHkK4paBJlwKbGV0b24KaWtlcgpHdQriloFLb20Kb2NvCuKWgWFueW1vcmUK4paBdGFzdGUK4paBU2FudGEKZ2V4CuKWgVNlY3JldAriloF0YWxlbnQK4paBbW9tZW50cwriloFCYQriloFleHRyCuKWgUNvbW1pc3Npb24K4paBbW9kaWZ5CuKWgUZpZ3VyZQriloFkb21pbgriloFwbG90CmVuZ2VyCnV0Y2gK4paBY2l0aWVzCuKWgW51dApwcm9maWxlCuKWgVN0YXQK4paBbm9kZXMK4paBbnMKZXNzYWdlcwppbXBsCmlja2VyCuKWgWV4YW1wbGVzCmFiZXRoCuKWgXN0YXRlZApmaXJlCmJ1bAriloFkYW5nZXJvdXMK4paBUGF5CuKWgUdyZQriloFNb25kYXkKZXNvbWUKaWdhbgpydW5kCnByaXNlCmZhaWwK4paBTmV2ZXIKQXYK4paBbGluZWFyCuKWgXVsCldBUgrRgNC10L0K4paBQVQK4paBZG9wCuKWgW5vdQpEZXN0CuKWgWNsYWltcwplbmRhCuKWgWNyYXp5CmdlbApvZ2dsZQriloFyZXByZXNlbnRhdGlvbgppbmVuCuKWgWFsdGVybmF0aXZlCkRNCkFCSUxJVFkKZmFjZXMK4paBZG9vcnMKYXRpdgpMb29rCuKWgUpTT04K4paBYXBwZWFyYW5jZQrQsdGA0Y8KU1FMCuKWgXNpbGVuY2UKdWRvCuKWgURpcmVjdG9yClN0YXRlbWVudApzZWxlY3RlZApoaWdoCnByaW1lCuKWgWlnbm9yZQriloFjb2xvcnMKdXNoaW5nCuKWgXZpcnQKbWFuYWdlcgriloFyZW1vdGUKxYJvCnNtYWxsCuKWgWNyaW1lCnJiCuKWgWNyZWF0aW9uCuKWgWZsaWdodAriloFTaWduCklMRQriloFETwpjb21tZW50CuKWgUNvc3QKLl9fCuKWgUNvcAriloF2b20K4paBU2NpZW5jZQrQu9C10L3QuNGPCm9vcAppbnRlcmZhY2UK4paBV0FSUkFOVElFUwriloFQYWdlCioqKioqKgrRgdC60L7QvApUUlVFCuKWgXJlcGVhdGVkCuKWgdC10LPQvgrRiNC+CuKWgXJvegpQZQriloFJU0JOCmlydHMKcG9zZXMKfSkkCuKWgdCGCmNoaWxkcmVuCmJsZXMKRUNUCuKWgWl6CuKWgWJ1aWxkZXIK4paBTWVkaWEKaWF0CuKWgWNvbnRyYXN0CuKAnSwK4paBTGluawriloFFZHVjYXRpb24K4paBam9pbnQK4paBZXh0ZXJuYWwK4paB0YDQvtC3CuKWgWJpdHMKRk9STQplcm1hbgp3cAriloFNaWtlCuKWgU1hc3RlcgriloFzZW5pb3IK4paBTmF2CuKWgXJlY29yZGVkCmVsaW5nCmVzaApmeArQutCw0L0K4paBdGFsbAriloFKb2huc29uCuKWgXNvbm8K4paBYW5jaGUKaWNrZW4KbG9vcAppY2llbmN5CmVtcG9yYXJ5CuKWgURvZXMK4paBcmVsYXRpb24K0LzRiwp3YXMKbG93CmljaHRlCuKWgUpvbmVzCuKWgWJlZHJvb20KRElTCuKWgW1hZ25ldAriloFFbmdpbmUK4paBZmVlbGluZ3MKR0MK4paBdG9ybgriloFyZWxhdGlvbnNoaXBzCuKWgdCg0LUK4paBcHJvdWQK4paBdHdlCm92YWwK4paBd2FzdGUK4paBcmVkdWNlZAppbHRvbgpCUAriloFmb3Jnb3QK4paBYm9kaWVzCuKWgUhhdwpsYWcK4paBd3d3CmRvb3IK4paBc3VmZmljaWVudAriloFkb2xsYXJzCkxlbgriloF0YWxrZWQK4paBYm9uZAriloFCb3IKfX17CnJvZApQYXNzd29yZApxdWFyZQriloFsaWdodHMKZXJlbgriloF0aGlydHkKTkMK4paBVE9ETwriloFyZXNwb25kCtC60LjRhQpkaXJlY3QKYcOnw6NvCuKWgWhlYXYKTWVkaWEKZXhpdApMaWNlbnNlCmAuCuKWgW1peGVkCuKWgWRlc2sK4paBdGVhY2hpbmcK4paBbWFqCuKWgW5lcnYKaW5hdGlvbnMKdHlwZW9mCuKWgWNvYXN0CuKWgdC20LUK4paBYmVzaWRlCnVtbXkKRG9jCuKWgXNjaGVkdWxlCuKWgXJlY292ZXIK4paBRnVydGhlcgriloFzdGVlbApib290CuKWgVBlcmhhcHMK4paB0YHRigriloFPcwpyaWNrCuKWgdCS0LgKU3VwcG9ydAriloEoXwpuaWwKcGlzCnhwZWN0ZWQK4paBcHJvY2Vzc2luZwpCdWlsZAphcmlhbgriloFpY29uCuKWgUNBCndpY2sKPSgK4paBYWxnb3JpdGhtCuKWgVlvdW5nCuKWgU1hbmFnZW1lbnQK4paBYW5jaWVudArQvdC+0YHRgtGMCm90aQriloFjb21iaW5hdGlvbgp3b3JsZApubgriloFkcmFtCmVuYWJsZWQKQWMKQ0NFU1MKYXJhdGlvbgriloFibG9ja3MK4paBQW5nZWxlcwriloFRdWFsCuKWgXN1Y2NlZWQKbmV0d29yawriloFvYmxpZwpzcHJpbmdmcmFtZXdvcmsK4paBVHJlCm9rZXMKbXVuCuKWgU5ldHdvcmsKRGVsCuKWgWVzdGF0ZQriloFsaXF1CuKWgXBvYgriloFkYWQK4paBZGlzdGluY3QK4paBVGl0CuKWgUxlYXIKZmVycmVkCmFuZHJvaWQK4paBc3Vic2VxdQriloFGbG9yaWRhCnN1YnNldAriloF3aGlzcGVyClZvbAp1bG91cwriloFjcmV3CuKWgWx1ZwpwaWQKb2NpdHkKc2tiCuKWgXRlYQrRg9C9CuKWgWhvbm9yCuKWgUlucwriloFnZXcKRGV0YWlscwplbmVhdGgKYXRhcgriloFfewphbWVuCuKWgXNldHVwClRyYW5zYWN0aW9uCuKWgWJsYW5rCkZhaWxlZApqb2IK4paBcHJldArDn2UKbG9vcgrFmcOtCm5jaWEK4paBYW55d2hlcmUK4paBTGlnaHQK4paBQWsKQkQK4paBZXhjaXRlZAphZ2VycwriloF3YXJuaW5nCuKWgXByb2Nlc3NlcwpodQriloF5b3V0aAriloFkb2dzCuKWgW9jdAriloFuaW5lCldyaXRlcgpncmlkCuKWgWltcG9ydGFuY2UKZXN0aWMK4paBY2FyZWZ1bGx5Cm1hc3RlcgriloFkZWNpc2lvbnMK4paBcGluCuKWgWNyYWNrClRFU1QK4paBTG9jYWwK4paBUmlnaHQK4paBdmFzdAriloFmYXN0ZXIK4paBaW5zdGl0dXQK4paBYW5udWFsCkxBTgriloFlcGlzb2RlCuKWgVhWCuKWgWRlbGl2ZXJ5CnRsCkZQCmNpcmMK4paBdHlwaWNhbGx5CmlnbwriloFpbnRlbApuYXQKeGIK0YHRgtGA0L4KKS0K4paBQmFsCuKWgUpvcwriloFnb25uYQriloFSZXN0CmpvcgpvbmlhCm9yc2hpcApvdmVyeQpMSU5FCl06ClF1ZXVlCuKWgWNvbXBhcmUK4paBYXBhcnRtZW50CuKWgXJ1bApEcgpnZW5jeQriloFvYnZpb3VzbHkKemllCnljbApmb3J0dW5hdGVseQriloFzdGVwcGVkCuKWgVNlZwriloFXaGljaAriloFQQwriloFhc3QKZW5kb3IK4paBcGVybWlzc2lvbgpDT0wK4paBVEVTVApQYXkKw6hyZXMK4paBc3R1ZGllZAriloFhY2NvbXBsCnJvbGUKV2hlcmUKcHJvdG9idWYKbWV0YWRhdGEKSm9iCuKWgUZvdXIKcGxlbWVudHMKZGlzYWJsZQriloFsb3VkCuKWgWhhcHBlbmluZwriloFVc2luZwpyb2cK4paBZGVwZW5kcwrDrW0KJ1wK4paBdGF1Z2h0CnNoYXJlZAriloFhdHRyaWJ1dGVzCuKWgUFjdGlvbgriloFkZXNzCuKWgWhvdXNlcwriloFyZXNldAriloFiaWVuCuKWgWV4cGxpY2l0CkxPVwotPl8K4paBUE0KQ2F0ZWdvcnkKb2ljZQppbnRvCuKWgW1haWwK4paBYXV0aG9yaXR5CuKWgXVuYWJsZQpmaWxlbmFtZQrDqWsK0LvQtdC5CuKWgXNlY3RvcgphcHBvaW50CuKWgWhhbmcK4paBY2VsCnJlbGF0ZWQKaXRhdGUK4paBJzwKYW1iZXIK4paBY2hlYXAK4paBZW5hYmxlZAriloFkaXZpc2lvbgpBbnkK4paBaGllcgriloFIZWFkCm50YXgKdWRhCuKWgWxpbWl0YXRpb25zCuKWgXN0dWRpbwptZWRpYQriloFjaXJjbGUK0L3QvtCy0LAK4paBbGF1ZwphY3RzCuKWgdCS0L4Kw7NkCnBsZWQKTE9DCkV4cHIKPjoK4paBcHLDqXMK4paBbGF1Z2hlZAriloFUaHJlZQrQu9GLCuKWgWVuZHMK4paBZnVuZGFtZW50CuKWgWluaGVyCuKWgWxpdgpiaWQK4paBcmVzcG9uc2liaWxpdHkK4paBY2hlY2tlZAriloFQYWMK4paBZmF1bHQK4paBeWVsbG93CuKWgXNhbHQK4paBRnJhbmNpc2NvCuKWgV4K4paBT04K4paBYmVhdXR5CnlnCuKWgUFmZgriloFFcQriloFtYWdpYwriloFoYW5kbGVyCnhFCuKWgW51bWVyb3VzCuKWgWhvbGUK4paBcm9vbXMKY2Npw7NuCuKWgUFybQpwZXJzb24K4paBYnVpbGRpbmdzCuKWgXBsYXRlCmJsZWQKZXJyb3JzCuKWgUFnYWluCuKWgURlZmF1bHQK4paBSGFyZAp0w7MKaHVzCuKWgWRpbWVuc2lvbgppYWxlCuKWgU11bHQK4paBR292ZXJubWVudApGdW5jCuKWgWJsb3cK4paBcmVjdAplcnJhCmNvbm5lY3Rpb24K4paBcGFzc2luZwrDn2VuCnBoYXMKZW5zaW9uYWwKcmVjb3JkCmNvaG9sCuKWgUhhcnJ5Cml6b250YWwK4paBZmluZ2VyCuKWgXlvdW5nZXIK4paBU0MKb3BlcmF0aW9uCkJZCmhlaW0K4paBQmFkCuKWgXN0b3JtCuKWgU5hdAriloFidXlpbmcK4paBU29tZXRpbWVzCuKWgdCh0YLQsAplc3NlZAriloFkYW1uCuKWgW1lZwp1bWVzCsO8bmQK0YLRgNCwCuKWgXNpbHZlcgp3ZApoaWRkZW4KYXJkbwriloFjb21tdW5pdGllcwriloFkaWV0Cm90dGVkCuKWgWJhdAphbmNlcgriloFmbXQK4paBUGVuCuKWgXRpbApFbnVtClBBVEgK4paBbWF0dGVycwp0aW1lb3V0Ci0tLS0tLS0tLS0tLQprYW4K4paBQ29ycG9yCj0iLi4vLi4vCuKWgUFsZQpoZW50aWNhdGlvbgriloFjb21wbGljCuKWgVNlY3VyaXR5Ck9GRgpSYWQKYXBzZQriloFkYW5jZQriloFwZXJtaXNzaW9ucwriloF3YXJyYW50CuKWgWxhZAriloFpc29sCmRsCuKWgUF1CnllcwriloF0dgriloFwcm92aWRlcgriloF0ZXJyaWJsZQriloFkZXBhcnRtZW50CmVyYWwK4paBaW1wbGVtZW50YXRpb24KU1IK4paBaGVhcmluZwriloFLbgpGUgp0dgriloFkaXNzCkZVTgriloFkdXJhbnRlCm9zaXMK4paBdGFza3MK4paBQmxvCtCy0L7QtAriloFicmFuY2gK4paBcG9saXRpY3MK4paBRWxsZQriloFsZWFkZXJzaGlwCmV4cHIK4paBdGVjaG5pcXVlcwpwcmVjClNpZ21hCmltYXRlbHkKdGsKYWNobWVudAriloFFbnRlcgriloFjcmVhdGl2ZQriloHQt9C90LAKYXBweQp1bmNoZWQK4paBJycsCm9uZGVyCnstCk5VTQriloFuYXJyCk1lbW9yeQriloF3aW5uaW5nCuKWgUZvbGxvdwoqLw0KdmlzaW9uCnJlc2VudHMKemlvbmUK4paBbGF0dGVyCuKWgXJlcXVlc3RzCuKWgW1hcmdpbgriloF7Igp2aWRlbwpjbgriloFJbWFnZQpUaW0KQ09ORklHCuKWgWFsbG93aW5nCuKWgWNvbWJpbmVkClBVVAriloFpbnN0YW5jZW9mCmlnaW4K4paBcGVybwriloEnJwriloFjb25maWRlbmNlCuKWgWVxdWl2YWxlbnQKcGFkCmVmZmVjdApSWAriloFsYW5nCnN0cm9uZwriloFicmlkZ2UKYXlhCuKWgXRyZWF0ZWQK4paBZm9ydGgKU1cK4paBYWNjb3VudHMK4paBUE8K4paBbGlzdGVuaW5nClJvdXRlCigpKSkKY3B5CuKWgXJlZm9ybQriloFnYXRlCuKWgVdhbGsK4paBc29tZWhvdwp0ZgriloFsYXlvdXQKdW1pbgriloFjb25zaWRlcmluZwriloFwcmVtaQriloFNb20KYXRoYW4KR2VuCuKWgXBsYW5ldAphbXBsZXMK4paBTU8Kc2hvcAriloFwcmVtaWVyCuKWgXNpbXBsCuKWgXNlZ3UKTFkKU3VtCuKWgXRhYmxlcwpza2EK4paBxb4KcGQK4paBc291cwriloFjb25mZXJlbmNlCuKWgURhdApTY3JvbGwK4paBc3RhbmRhcmRzCuKWgdCz0YDRgwplc3NlCuKWgWNpdGl6ZW5zCuKWgW9jY3VycmVkCuKWgWRlbW9jcgriloFlbGV2CuKWgVNlbQplbnN1cwpoZWFkZXJzCuKWgUNocmlzCmltZW50bwprb20KQ29yCk1JTgp1c2hlcgpEYXRhYmFzZQriloFmb3JtYWwKaWduZQriloFvcmdhbml6YXRpb25zCuKWgUlyZQpYbWwK0LjQtwriloFwcmF5CuKWgWJvbWIK4paBbWFuZAplcnRzCuKWgWNsb2NrCuKWgWJ1Y2sK0LLQsNC70LgKZW5zY2gK4paBdm9sdAriloFmaWxtcwriloFwbGFudHMKaW5vZGUKQm9vbGVhbgriloFyZXN0YXVyYW50CsOtYW4K4paBZGVidXQKcGFnZXMK4paBd29yZHQK4paB0JHQsAriloFncmVhdGVzdAooIi8K4paBY29weXJpZ2h0CuKWgXJpdApzaXplb2YKVHJhY2UKdWVudArRgtGD0YAK4paBa28KOlwK4paBYmlnZ2VyCuKWgXBlcmZlY3RseQp0ZW5hbmNlCk1BU0sKcsOpCuKWgWV0dAriloFub3NlCuKWgWNyYWZ0Cml0ZXJhbAriloFkaXNjdXNzZWQK4paBSmV3aXNoCkNhcAriloFVbmxlc3MK4paBSmFja3NvbgpBdHRyaWJ1dGVzCuKWgWx1bmNoCsO2bAphdHIK4paBcGF5aW5nClBhcnNlCigpDQpsYWQK4paBcmFyZQriloFbXTsKc3RvbmUK4paBdW5jCuKWgWRlZmVuc2UKfSsK4paBR2xvYmFsCuKWgVNvdmlldAriloFBdXN0cmFsaWFuCuKWgWdsaQp2YXJpYW50CuKWgVJvbgriloFsb2FuClN0ZXAKbWVtYmVyClNjaAriloFDb21taXR0ZWUK4paBc3BlbmRpbmcK4paBVHJpCuKWgUpvdXJuYWwK4paBc3VnYXIKZWxseQpIVE1MCuKWgWFkdmVudAp3aW5nCuKWgVdoZXRoZXIKb3JhdGlvbgriloFORQppdmVuZXNzCuKWgWhhdgriloFjb25zY2lvdXMKZWVuClN5bWJvbAriloHQutGDCkxvZ2dlcgriloFMaXR0bGUKd2lkZXQKb2NhdGlvbgpwaW4K4paBc3ltbWV0CuKWgUFECuKWgXBvc3RzCnNoYWwK4paBQ29uZgriloFjaG9zZQptYWwKdWxvCuKWgU1ldGhvZAriloFtaXNzZWQKUmVtb3ZlCkF1dG8KVkFMVUUKdGhsZXQK4paBRm9yY2UKcGYK4paB0K8KbGF0ZQriloFwdWwKUG9wCuKWgWFkdmFuY2VkCmFpcmVzCnJlc3NlZApBTUUKYmVsbAphY2hpbmcKacSHCmVjaG8KSFMK4paBZnVubnkK0YDQuNC4CuKWgWVlcgriloF2ZWdldAriloFmb3VydGgKY2YKdHJhbnNmb3JtCuKWgWdyb3duCuKWgU1jQwpzaXRlCuKWgWJlbmVhdGgK4paBc2hlbGwKeGQKUGxheQpzaG9ydApSb2xlCuKWgXJlbGlnaW9uCmluYXRvcgp9PC8K4paBRWxpegpNaWNyb3NvZnQK4paBdmV6CuKWgdGA0LDQsdC+CnJlaWNoCnZldAplbnVtCuKWgXdlbGNvbWUKbmFtZW50CuKWgWphbgriloFjeWNsZQriloFhY2tub3cK4paBd291bmQKaWRpCuKWgXBvc3NpYmlsaXR5CmFubm90YXRpb24K4paBdGVjaG5pY2FsCuKWgWZvbGQKZWgKaXN0ZW5jZQriloFyZXBseQpldGVzCuKWgWRlY2FkZXMKd2FuCuKWgdC60YDQsAriloFMYWIK4paBdW5mCuKWgWltcGVyCuKWgWJ1ZwriloFUaG91Z2gKdGhyb3dzClZpc2libGUKcHJldgriloFUeQriloFkZXBlbmRpbmcK4paBcG9saWNpZXMKYW5keQriloFJdGFsaWFuCnVtYQriloFzaWducwriloFUaHJvdWdoCtCx0YsKYm90CuKWgXB1Ymxpc2gKKSoqCkFUVFIKaXJhbApWVAriloFyZWNvZ25pemVkCuKWgUxpbmQKZWN0aW9uCuKWgXJlbGF0aXZlbHkK4paBQWgK4paBRGlnCtGG0YwKaWNrZXQK4paBc3BlY2lmaWNhbGx5Cm5vc3QK4paBZ3Jhc3MK4paBY2F1c2VzCtGC0LLQvgp1dHRlcgriloFGZXN0aXZhbApncmVnCuKWgXdlYXBvbnMK4paBc2lyCuKWgVZpcmdpbmlhCmxvZ2luCuKWgXNjaGVkdWwK0YHRjNC60L7Qs9C+CuKWgWxvc2luZwriloFFdXJvcAoiPjwKYXNwCmFqbwpleHBvcnRzCuKWgU5vZGUK4paBamFrbwriloF5YQriloFzdWNjZXNzZnVsbHkK4paBZnJpZW5kbHkKYnVmZgpERUZBVUxUCuKWgXByZWduClJlcXVpcmVkCuKWgWJpbmFyeQppc3RpbmcK4paBc3RhcmVkCuKWgWNpcmN1bXN0YW5jZXMK4paB0YXQvgpyZWkK4paB0JPQvgpUcmFuc2Zvcm0KY250CuKWgUV4dApyZXBvcnQKVkVSU0lPTgriloFhbmFseQriloFNYXJnCuKWgWFsbGVnCmJ1aWxkZXIKVG9TdHJpbmcKTGF5ZXIKw61zdApQcm9wCuKWgUVtcAp9XQriloFzZWxsaW5nCuKWgXF1ZXVlCuKWgXNlcmlvdXNseQriloFMZWFkCnRleHRpdAp0ZXN0aW5nCuKWgdCf0YDQtQpzZWN1cml0eQppYcWCCsO6bgpjaGlwCuKWgWNhbmRpZGF0ZQriloFtaW5pc3RlcgplcmlhCuKWgUhldArQtNC40L0K4paBQnJpdGFpbgriloFiYXJlbHkK4paBc3R5CuKWgVNwYW5pc2gK4paBVmVuCnRpbWVyCtC60ZbQsgriloFkb2N1bWVudHMKKCcuCuKWgWRlYnVnCuKWgWNvbnRybwrRgdGC0L7RjwriloFqb3kKU24KSW52CuKWgXByb3RvY29sCuKWgWZhY2VzCuKWgURlc3BpdGUKc2VkCkNvbmYKQVJHCuKWgWV2b2x1dGlvbgriloF0b2QK4paBUHJvbWlzZQriloFwb3N0ZWQKUGVybQpiZXQKQW5nCkp1c3QK4paBcnVtCmxheWVyCuKWgWJlaGF2aQppcHBpbmcK4paBZHluYW0K4paBc2NoZW1lCuKWgXByb3RvCikvCkNvbGxlY3Rpb25zCnJpZXYK4paBQ2xpY2sK4paBdW5zCndpZGV0aWxkZQriloFyZW1lbWJlcmVkCtCz0ZYKaW5hdGVzCuKWgWluY29ycG9yCuKWgURlc2NyaXB0aW9uCuKWgXByZXBhcmUK4paBRmluYWwKdWF0aW9uCuKWgVF1ZWVuCj47CuKWgWF1dG9tYXRpY2FsbHkK4paBc2hhcnAK4paBbWVhdAphdGV1cgphc3Rlcm4K4paBc3R1Y2sKQVNTRVJUCuKWgXBsYW5uZWQKZG90cwpvb2tpZQriloFIaXN0b3IK4paBcmV2aWV3cwpJTVAK4paBYW5zd2VyZWQKVG90YWwK4paBc2F1CuKWgU1leGljbwpjb250aW51ZQriloFBcHBsZQpsaWtlbHkK0LfQstCwCnVzZXJzCuKWgWlkZW50aWZpZWQK4paBTGV2CuKWgW1vbAriloFJc2xhbQriloFjb21taXR0ZWQKd3JpdArQsdC10YAKcmlmdAriloFpbnRlcnJ1cHQK4paBcmVhZG9ubHkKc2NoZW1hClNtCkRvdWJsZQphemEK4paBSGFsCk1vdmUK4paBU2VyaWVzCmlubGluZQriloHQutC+0YLQvtGA0YsKc29jCuKWgXRlbnQK4paBYW1lcgpha2kK4paBbGFkeQriloF0aXJlZAppZmkK4paBbcOqbWUKb3V2ZXIK4paBYXNpZGUKRGlkCicsDQriloFicmluZ2luZwpEcmF3aW5nCmFybwriloFSaAriloFOYXoKZXNzbwriloFyZWFjdGlvbgptaXR0ZWQK4paBYWJzb2x1dGUKaGF1c3QKKCgpCuKWgVRhc2sKRVJTCuKWgV57ClZECuKWgXRvbmUKZGlzdAp2cwriloF3aGVlbAriloFhZG1pbmlzdHJhdGlvbgriloFpbnRlcmVzdHMK4paBcG9pbnRlcgriloFlbmNvdW50ZXIKYXZlcgriloFub3JkCmtldAriloFiZWFjaAriloFlbmpveWVkCmNvbnRhaW5zCuKWgWFwcGVuZApXYWl0CuKWgXNxdWFkCnplbAriloFtZWRpdW0K4paBc2VuZGluZwriloFMYWR5CsOnw7VlcwriloFkZXN0aW5hdGlvbgpueWNoCuKWgWNvbmZsaWN0CuKWgUx5CuKWgXZ1bAriloFiYXNpY2FsbHkKcmVhdGVkCmJsYWNrCnVnaW5zCuKWgWNhbG0Kw6lyaWUKaGFyCtC70LDQvQriloHQodC1CndhdGNoCuKWgVB1dAriloFkdW1wCmFjaGVyCnNjcm9sbAriloFjbGFpbWVkCuKWgUNvbnRyb2wK4paBYmxpbmQKZW50aQriloFLZWVwCuKWgURldmVsb3BtZW50CmltYWdlcwriloF0b3VnaApnZWJyYQriloFzZXB0CmhldwriloFza2lsbAriloFUYXkK4paBa3TDswpvd25lcgpwYXJlCuKWgWZlZQriloFjb250aW51ZXMK4paBa2FuCmJlcwriloFjaGEKb3ZvCuKWgU5pZ2h0CmljdHVyZQpzaGlyZQriloFlc3NheQriloFzdXBwb3NlCmV0aWMKQXJ0CmFjb24KbGxhCndvcmRzCuKWgWNvbXBhcmlzb24K4paBQkUK4paBY2hhbGxlbmdlcwriloFvbApjaXRlcAriloFGb290CuKWgVN1Y2gK4paBcGFwZXJzCmFjdGl2CnF1ZXIK0YLRjwriloHQotC+CtGB0YzQutC40LkKdGh1cgpkb25lCuKWgXNob2NrCuKWgWRlZGljYXRlZAriloFjb3JyZXNwb25kClNlY29uZAriloFidWxsCmxpZmUKaW5kZW50CuKWgWZpZ3VyZXMK4paBQW5kcmV3CmlzcAriloFmYXZvdXIK0LfQtNCwCuKWgUVsZWN0CkZ1bGwK4paBbmVhcmJ5CuKWgVJlZ2lzdGVyClNjYWxlCmljYXRpb25zCtC40L0K4paBQU0KcGFpcgriloFwZXJzcGVjdGl2ZQriloFub3MKYXBhCm9zdGHFggriloFQZXJzCmljZXIK4paBcGxhc3RpYwrQtNC+0LIKY2lwbGVzCnrEhQpjbG9zCuKWgdGD0YfQsAriloHDgQpwbHVnaW4K4paBYW5nbGUK4paBY29tbWlzc2lvbgriloFmdW5kcwriloFpbmR1CuKWgWRyYXduCsOhbQriloFkZXZlbG9waW5nCuKWgXNlZ21lbnQKaXNtZQpzY3IK4paBbGllcwriloFJTAriloFhcGkKRXh0ZW5zaW9uCuKWgXNjYWwKaW5zdGFsbAriloFXZWVrCuKWgWdlbnRsZQriloFDYW5hZGlhbgriloFkaWFsb2cK4paBYXJ0aWNsZXMKVGhlbWUKU00K4paBQnVsCuKWgWxldXIK4paBc3RvbQpQbHVnaW4K4paB0L/QvtGB0LvQtQriloFzdGVhZAriloHFmwppcGhlcgriloFwcnplCuKWgWRyYWZ0CmJvdHRvbQriloF7fTsK4paBc3RheWVkCmZlYXR1cmUK4paBdm90CuKWgWZhYnJpYwrDp2EKKCcjCnJlYQriloFyZXB1dAriloFDaXIK4paBQUwK4paBYXNzZXJ0RXF1YWxzCnJlc3VsdHMK4paBQ3Jvc3MKdXJzZGF5CuKWgWF1ZGlvCuKWgWdhcAriloFzdHJlZXRzCuKWgXNjaWVudGlmaWMKcGxhdGZvcm0K4paBYXVzcwriloFDcm8K4paBcGFydGlhbAp1bmMK4paBY2hvaWNlcwriloHQuNC70LgKcHJlZAriloFoZWFkcwp0ZXJkYXkK4paBTmljawriloF3ZWlyZAphc2FudAriloFyZXByZXNlbnRlZAriloHQv9C4CkRQCm9yZGVycwpjbG9jawriloFIbwphcnRlcnMKQ21kCm9nYQpLZXlzClJlcG9ydAriloFWaWxsCuKWgU11CuKWgW93bmVkClNVQ0NFU1MK4paBdHlwZW9mCmhkcgp1YWJsZQriloFuZWlnaGJvcmhvb2QK4paBQVAK4paBcmVzdWx0aW5nCuKWgXNoYWRvdwpTVFJJTkcK4paBdmlkZW9zCtC70LXQvdC90Y8KZXhwZWN0CuKWgVZhbGxleQriloFnb3RvCuKWgVNoZXIKZnJhc3RyCuKWgW9wZXJhdGluZwriloHRjdGC0L4K4paBTGljZW5zZWQKVmFyaWFibGUK4paBUFIK4paBSGFucwpjbG9uZQriloFHZXNjaAriloFCYW5kCi4uLi4uLi4uCnVpbmcK4paBaHVuZHJlZHMK4paB0L7QugriloFlbW90aW9uYWwK4paBSW5kdXN0CikrCuKWgUVneXB0CuKWgWZyYW7DpwriloHFoQriloFmYXNjCm9udG8K4paBQWRhbQriloFsYWlkCuKWgXJpZwriloFkZXRhaWxlZAriloFpbXBsZW1lbnRzCuKWgXVuaXZlcnNpdHkK4paBSHkK4paBZ3JpZAriloFyZWdpb25zClN0b3AK4paBc2xvdAriloFhbmdyeQriloEtPQriloF3YWl0ZWQKVmVydAoiOiIK4paBZWxlbQriloFyw6lnCm93ZWQKTWVtYmVyCuKWgXJhdGlvCmlzZW4K4paBTGVtCmdlcnkK4paBY3JlYW0K4paBw6l0YWl0CuKWgWdlYgp1bmlxdWUK4paBRGViCuKWgWZhY3RvcnkKxbxlCmRpYWxvZwriloFDb25maWcKU3luYwphbmdlcnMK4paBZ292ZXJuaW5nCuKWgUh1bgpTcGFjZQriloFqZXN0CmljaW91cwriloFlbXBoYXMKdW1wcwriloFFc3AK4paBc3VsCuKWgWhpc3RvcmljYWwKaWphCuKWgWx5aW5nCuKWgVN0ZXZlCuKWgW1lYXN1cmVzCm9zdG8KP+KAnQriloFwb2NrZXQK4paBU2F0CuKWgXBpdGNoCuKWgW5hdHVyCuKWgWh1bWFucwriloFTaW1vbgphZG9yZXMKKCJcCmlua2luZwriloFleHBvcwptYXRlcmlhbAriloFhcHBhcmVudGx5CuKWgUNhbWIK4paBQm94CuKWgXNwYWNlcwpleGlzdHMK4paBYWN0aW5nCk9SWQrQt9C+0LLQsApHb29kCmllbm5lCuKWgVdpbGxpYW1zCuKWgWZydWl0CmllcmEK4paBTGltCuKWgXRyYWl0CuKWgWFydGlzdHMK4paBYWJzb3IKcmFpdApMT0FECuKWgW1vdmllcwriloFkeW5hbWljCmFzdHMK4paBSW50ZWdlcgriloFzbW9rZQrQv9GWCmFuZ2VsCj4oIgriloFpbnN0cnVtZW50CuKWgWZ1ZWwK0L3QvtGXCmF0YWxvZ3VlCuKWgXNlcmlhbApGaWxlcwriloFiYXRocm9vbQppbG8KZXN0bwriloFwbQplbnRpYWxzCuKWgU9ubGluZQp3aGl0ZQriloF0aXBzCuKWgWNhcGFibGUKRmlnClRWCuKWgdC+0L0Ka8OpCmJpdHIKTWFwcGluZwriloF0YWsK0Y7RidC4CtCy0LvRjwopIiwK4paBS2FybAriloFIdW1hbgriloFQb3QK4paBcmVwcmVzZW50cwriloFjb25zaXN0ZW50Cl8oCndlbgriloFSb3NlCmxhdwriloFGUk9NCuKWgWJlZ2lucwriloFlZGl0CuKWgW1vdW50YWluCuKWgWNoYXB0ZXIK4paBd29uZGVyZWQK4paBaW5kdXN0cmlhbAriloFNYWpvcgriloFnZXMK4paBZGlyZWN0ZWQKZXJvcwriloFXaWxkCmxpYW1lbnQKQm9vawp1c2VybmFtZQpob3QK4paBbmFtCuKWgWxlYWd1ZQpicmEK0LrQvtC9CuKWgVRhbAriloHQktCwCuKWgWV4cG9ydHMKKEAK4paBc2hhcmluZwriloFUcm8KxZvEhwp1ZXNkYXkKeWx2CuKWgWd1aXRhcgplbGVuClNlbGVjdGlvbgriloFjb25maWRlbnQKcnlwdG8K4paBaG9ycwplZGl0b3IK4paBc2hvdWxkZXJzCmdldE5hbWUKZW5jaW5nClNFTEVDVArQstGI0LgK4paBa2luZHMK4paBV2VsCuKWgXB1cnBvc2VzCk1hdHJpeAppbnZhbGlkCuKWgW93bmVycwriloFSZWNvcmRzCuKWgVByb2Nlc3MK4paBY2hhdAriloFEb3IK4paBYmluCnJlZGl0Cm9pcmUK4paBVG90YWwK4paBRmFtaWx5CkFSWQriloFicmVhZAriloFjb21wcmUK4paBc2hvZXMK4paBcmF6CuKWgXRyYWNlCm5lagpvcnRlZApobgriloFwcm9jZWR1cmUKcHJvcGVydGllcwpwbGllcgriloFoZXJvCnBhbmVsCuKWgW1hcmtlZAriloF3b3JyaWVkClx8CnB0cwriloFTdXBwb3J0CuKWgXNlcnZpbmcKRmFpbAriloFkaXNhcHBvaW50CuKWgVNjb3QK4paBcGxlYXN1cmUK4paBanVkZ2UKemVpY2gK4paBZm9yZXZlcgriloFaZWl0CnVvdXMKaW5lbnQK4paBZHcK4paBd2FyZW4K4paBZmxhc2gK4paBdHJvb3BzCuKWgWRydWdzCuKWgWRpYW0KLn4KaW1wCmlubmVkCuKWgUVWClN0cnVjdAriloFqdXN0aWNlCuKWgW9mZmljaWFscwpmZmZmCuKWgUNvbW1vbgriloFDYXQK4paBdG9tb3Jyb3cK4paBw6lsClRleHR1cmUKcXBvaW50CuKWgUZyaWVkCuKWgVRlcm0KcGdmcXBvaW50CuKWgW5lbQpub3JtCuKWgWhhcmRseQpvZGEKemV0YQplbWljCuKWgdC/0L7Qu9GDCuKWgWxvYWRlZAprZXMKY2nDswriloFmb29sCuKWgXRyaWNrCuKWgWRzdApGaW5kCuKWgdCy0YHQtQp9fSwK4paBZnJhbWV3b3JrCuKWgW1lcmVseQriloF1bmlvbgriloFFZHdhcmQKcmlmCkZsYWcK4paBY3Jpc2lzCuKWgWZpbml0ZQriloFsb2wK4paBS2ltCtC90LDRgtCwCnNpbmNlCuKWgWNvbXBhdAriloFwZXJ0CmliaWxpdGllcwriloF0YW1iacOpbgppYmxpCuKWgXRlZW4K4paBc3ltcHQKb3JhbApkZXJzCm90dGUK0L/RgNC4CuKWgUphbmUK4paBb3JpZ2luYWxseQriloF0aHJvYXQKbWFnCnN1cAp1bmkKJCQK4paBTGlicmFyeQriloFhdHRhY2tzCmluZ2VuCignLwriloFoZXMKY29pbgpvdW5jZQriloFBY2FkZW15Ck1PRFVMRQppc21zCuKWgUFkdgriloFCb2wK4paBaW5jaWRlbnQKKV57CuKWgWJpagriloFSb21lCuKWgUl0YWx5CmV2ZW50cwriloFGZXJuCuKWgWJlcgriloFzaWxlbnQK4paBcGllcgriloFZTwriloFwbGFpbgpCYXMK4paBcGlsbApyYXNlCuKWgWNhcnJ5aW5nCuKWgXJlc3AK0L3Rg9GOCuKWgXR5cGljYWwKV3JhcHBlcgriloFnYXUK4paBY2hlbWljYWwK4paBaGFsCnRocm93CkNsdXN0ZXIK4paBR2FiCuKWgUdpcmwKcXVpcgriloFBcmcK4paBcmVsaWVmCuKWgdCS0LUKZG0K4paBZnJ1c3RyClwlCuKWgXN0b3JlcwriloFib3R0bGUK4paBTGV3CnR3bwpzdGFkCuKWgWNoZWVrCuKWgWNvbmNlcm5zCuKWgWhlbHBmdWwK4paBY292ZXJhZ2UKaXNpCkFERAphc3luYwriloFhcHByb3hpbWF0ZWx5CmlmZmVyCmhvb2sK4paBZW51bQpvdsOhCuKWgWV2aWwK4paBY29uc3RhbnRseQphcHBseQriloFzacOoCuKWgXByYWN0aWNlcwriloF0ZWFjaGVycwriloFTbgriloFBd2FyZHMK4paBc3Vic3RhbnQK4paBJC4KZGsK4paBbW9iCuKWgWluZ3JlZAp2ZXJlCk11bHRpCtC/0LXRgApzdGFsCnlhcmQKcmVxdWlyZWQKdmVtZW50CuKWgWludGVsbGlnZW5jZQriloF0aGlua3MK4paBcGVyc29uYWxseQriloF0cmFpbmVkCm9ybmV5Cik8LwpnZ2VkCkVJTlZBTAphcm5hCuKWgUhhbWlsdG9uCm1lcmNlCmVrdApPRgopWwpydWcKaWNpw7NuCuKWgXN1cnZleQpuZXNkYXkK4paBcGFnCuKWgWJvdW5kYXJ5CuKWgXF1YW50dW0K4paBZHJhd2luZwriloF2b2x1bnRlCuKWgVdvcmQKc2t5CuKWgUdyZWcKY29sbApoaWRlCuKWgXN3aW0K4paBcmV2ZWFsZWQKYWR2CtC00Y8KLiIpOwriloFleHBsYW4K4paBQ3VycmVudAriloFnb3R0ZW4K4paBZmFsbGluZwriloFjb250YWluZWQKVU5ECuKWgVNob3VsZAriloFraWxsaW5nCuKWgWFzcGVjdHMKaWN0ZWQK4paBUGFyYW0KIiwNClRJT04KKSk7DQriloFJcmFuCmJlaXQK4paBQnUK4paBW10sClNTSU9OCuKWgU1haAriloFyZXNvbHV0aW9uCuKWgWJvc3MKbGcKY2hvcgriloFVbnRlcgriloFkZWJ0CuKWgXZpZApnaWUK4paBdW5vCkNCCnBsb20KTElDRU5TRQriloFLZW5uCuKWgWZpbm5zCk9ORwriloFzb21ld2hhdAriloFhY3RvcgriloFTdGF0dXMK4paBcHJvYmFiaWxpdHkKZmIK4paBY2hhcnQK4paBc3RhbmRzCnBvbGljeQriloFvbmRlcgp0YWJ1bGFyCuKWgUFzaAriloFib29zdAriloFkZXNwZXIKbW9udGgK4paBYWxlcnQK4paBc3VpdGUK4paBZ8OpbgriloF2YWNjCuKWgUhhcwpNYXNrCuKWgVRodXJzZGF5CuKWgXByb3ZlZAriloFOZWwK4paBbW9yYWwK4paBamEKYXVlcgpjb2RlYwriloFpbnN0YW50CmFtcHMK4paBbWlsawpXT1JECuKWgcOWCkVtYWlsCkVsZW1lbnRzCuKWgWZvcm1hCkZyZWUKTUFQCuKWgdCWCnN5bQriloHRgtC4CuKWgUVjb25vbQriloFWaQriloFDb2x1bWIK4paBXywKb3JldApTZXF1CnBsYW4K4paBZnJlcXVlbmN5CmlyZW1lbnQK4paBYXNzdW1lZAriloFDYQriloFCaXQK4paB0LrQvtC80LDQvQriloFzbWVsbApTZWN1cml0eQriloFhcXUKb29yCnByaWNlCmluaXR5CuKWgWF4aXMKcmVsZWFzZQriloFyZXNvbHZlCuKWgXRlYXJzCuKWgWJvdGhlcgriloFDb21tdW5pdHkK4paBcmVnaXN0ZXJlZAriloFyZXZvbHV0aW9uCj8uCuKWgXZlcnNpb25zCiUlJSUKeWRybwpTdWNjZXNzCuKWgVdpbgriloFCb3kK4paBRHViCuKWgWt3CuKWgW5vY2gK4paBY2hhcmdlcwphcmlvcwp1YXIKOyYK4paBaGFiw61hCihgCuKWgXR4CmVsdmUK4paBYcOxb3MK4paBbWF0aAriloFBbGYK4paBRnVuZAriloFtYW5pZmVzdAriloFhdHRhY2hlZAriloFzcGlyaXR1YWwK4paBQWxleGFuZGVyCnVuZXMK4paBc2VlZAriloHQndC+CuKWgW1hZ2F6aW5lCuKWgWVpZ2VuCuKWgdC+0LHRgNCwCmVhCuKWgVBICnN3aW5nCuKWgUFzaWEK0ZjRgwriloFLSU5ECklkZW50aWZpZXIKb25jZQriloFhbGNvaG9sCtGG0ZbRlwpzdHlsZXMKYXNzZXJ0RXF1YWwK4paBUmEK0LPRgNCw0YTQuAriloFtaWxsaW9ucwriloFjaHVuawrQtNC10YAKUGFja2FnZQpVU1QK4paBTm90aGluZwooIiMK4paBTWlkCuKWgdC90LDRh9CwCsWCeQpBQUFBCuKWgWxhdW5jaGVkCuKWgXdha2UK4paBZ3Vlc3RzCuKWgWRpZmZlcmVuY2VzCnVkaQriloFhaWQK4paBU3BvcnQKdWxhdG9yCmV4ZWN1dGUKcGxvdApjaGluZwriloFOb3JtCnRtClwrCkFSRAriloFiZWVyCuKWgdC/0ZbQtApJQUwKc3RvcmFnZQriloFBbm5hCuKWgXlhcmRzCuKWgXRlY2huaXF1ZQriloFvw7kKYXR0ZW4KVU5UCmRvbgrRhNC+0YAK4paBaG9waW5nCuKWgXZpY3RvcnkKaXRhdAriloFzaWduaWZpY2FudGx5CuKWgXByYWN0aWNhbAppamUK4paBZXhwYW5zaW9uCkpTCml4ZWxzClVTRVIKU2hhcGUK4paBZXh0ZW50CmxpbwriloFwdWVkCm9saWQK4paBZ2FtCuKWgXNldmVudAriloFHYQphbmd1YWdlcwooKCgK0YrQuwriloFFeHBlcgphc3R5CnJpZWcKZ2lvCm9kbwriloFjb2xsZQriloFzdG9yZWQK4paBU2NoZQppc3RhbnQK4paBbGlwCkJSCuKWgWF1ZwriloFTZWFyY2gKKT1cCuKWgVVyCuKWgXNvbGUKaWxsbwriloFtZWhyCmtpdAriloFpbnRlcmlvcgpMSVNUCmFkZWwK4paBc2hvcHBpbmcK4paBc2zDpApZb3VyCkRJVElPTgriloFIdHRwCnJhaGFtCtGC0YDQuAriloFicmluZ3MKUmV2CuKWgXByb3BhZwppdHlFbmdpbmUKKCkpLAriloFpbmfDpXIK4paBSXJlbGFuZAriloEiLi8K4paBSGFycgriloFhZG1pbgplbm8K4paBa3IK4paBZXN0w6EK4paBcHJvcHMKdG9rCm9tb3JwaAriloFhZmZlY3RlZApQaG9uZQriloFkZWdyZWVzCnNvbWUK4paBbmluCkVWRU5UCuKWgWludGVyYWN0aW9uCuKWgVR1ZXNkYXkKaXRlcmF0b3IK4paBTm9iCuKWgXNjYXR0ZXIKdWNrZXQKY29tcGxldGUK4paBZHV0eQriloFhbnN3ZXJzClByb2dyZXNzCmVlZArRgNC+0L0K4paBdmllCuKWgWRlcG9zCuKWgXBhY2tldAriloF0b3cK4paBZGVsZWcKYXVkaW8K4paBdmFyeQriloFtaWdyCtGE0ZYKZXNhCkV2ZW50cwpoYXVzCuKWgVNhdgriloFQb3J0dWcK4paB0YHRgtC+CmlsYXRpb24K4paBbWV0YWRhdGEKbGFzCuKWgWFpCuKWgWFuZ2VyCuKWgWhhbQriloFBbmFsCuKWgWZyZXF1ZW50bHkK4paBRkFMU0UKb2NoZQpyZXoK4paBVmlldApxdWlzCuKWgWNoYXJnZWQKw6RzCuKWgVBhdGgK4paBYWNjdXJhdGUK4paBUGx1cwprZWl0CuKWgUlucHV0CndoZW4KZXJhcwriloHQstC+0LcK4paBZGVyaXZlZAphamUK4paBSGFkCnVyZW4Kw7NyCn09XAp1cmVhdQphbGFuZApFeGVjdXRpb24KZWRlbgriloFzZWVraW5nCmNoYW5nZWQK4paBdHJlbQrRgdC60YMK4paBR2VtZQppbmF0aW5nCuKWgWNvbHVtbnMKRVAK4paBaW5qdXJ5CmVuZGVudAriloFoZWFkZWQKQVNFCuKWgU11c2xpbQriloFjbGltYXRlCuKWgWZha2UKQ01ECtGY0LgK4paBQXJ0cwpmZWN0aW9uCuKWgXBpdAo+XAphbmFsClNlY3Rpb24KcGx1cwrDvHQK4paBZW1iZWQK4paBc3RyaW5ncwpCZWZvcmUKcHJvYwriloHRgdC/0L4KdHJsCnZyCkJhY2tncm91bmQKbG9nZ2VyCmFncmFwaAppZXN0CuKWgWdvb2RzCmJhdGNoCuKWgW9wdGlvbmFsCuKWgVRheWxvcgriloFyZWNvZ25pemUKd2FsawriloFIaXQK4paBRWxpemFiZXRoCn06CuKWgWNhcmVmdWwK0LrRgNCw0ZcK4paBbG9jYXRpb25zCuKWgXN0cnVjdHVyZXMK4paBZGlzawriloFzaGlwcwriloFzdW8K4paBc293aWUK4paBRXNzCuKWgUhhc2gK4paBcmVhc29uYWJsZQriloFNb3Jlb3ZlcgriloFmb3JtdWxhCuKWgUNlbnRyZQriloFyZXNpZGVudHMKUlMKSWRzCuKWgUtub3cK4paBdHJpYgriloFyw6lzCuKWgXN0YWJsZQriloFXb3VsZAriloFicmVha2luZwriloFtZWFsCuKWgXBoZW4K4paBZmVsCuKWgUZyZWQKQXV0aG9yCuKWgWNhcHR1cmUKb3B0cwriloFldmVyeXdoZXJlCuKWgXNxdWUK4paBbW9kZXIKc2V0dXAK4paBU3VwcAriloF3aGVuZXZlcgp7KAp3YXJ0CuKWgXRvZQpQcmVmaXgKaG91CmdhZ2UKPiIK4paBZnJhZwriloFUaGVvcmVtCm1lbW9yeQriloFjb250ZW50cwpkb2NzCn0nCuKWgUlyaXNoClRoZW4KYWF0cwpTYXZlCuKWgWFnZW5jeQriloHQuNC80LUK0LTQvtCy0LAK4paBRnVuY3Rpb24KTk4KZGVzdHJveQriloFNZXNzYWdlCuKWgWNhbmNlbAriloFzdXBlcmlvcgriloFlYwriloFsaXRlcmF0dXJlCuKWgVBBUlQKSWwK4paBQ2FiCmVuZ2luZQriloFiYXNrZXQKd29ydGgK4paBU2VsCmZldGNoCuKWgVN0YWR0CuKWgdCa0LgK4paBY29uagriloFzZWluZXIK4paBY29uZmlybWVkCuKWgUFyZ2VudAphbWFyCnBnZnBhdGgK4paBc3RydWdnbGUKUGF0dGVybgriloFNaWRkbGUKaXRhbgriloFtb29uCm9yb3VnaAriloFDYXRob2xpYwriloFzdHJ1Y2sKXS0+CuKWgXdlYXBvbgriloFzdWJzdAriloFpbnN0cnVjdGlvbnMK4paBb2NjYXMKcHJvdGVjdGVkCuKWgUxlc3MK4paBYmF0Y2gK4paBY29udHJhCuKWgWRlY2sK4paBaWdub3JlZAriloFyZWZ1c2VkCnRyaWdnZXIK4paBY3JpbWluYWwKR0EKb2xseQriloFCZWxsCuKWgdCuCmZvcndhcmQK4paBcHJlZml4CuKWgWltbWVkaWF0ZQriloFhc3NpZ25lZAriloFlbGVjdGVkCuKWgXRvbmlnaHQK4paBRGllcwriloFCZWFjaAriloFwcmVjZWQKb3dhxYIK4paBZ2FsYXgK4paBbG9naWMKZW56YQriloFDYXB0YWluCuKWgUhheQriloFmYWN0cwriloHQvdC4CnTDqQriloFzYgpvcGVkCuKWgWNvbWJhdAriloFleHBsb3JlCuKWgSgtCkxvYWRlcgriloFXaWxzb24K4paBbG9ja2VkCjo8LwriloFPZAriloFQcm90ZQriloFkaXNhYmxlZAriloFoYXR0ZQriloFzaG91dAriloFjb25zdHJ1Y3RvcgrQsdGWCuKWgXRyYXMK4paBRmF0aGVyCuKWgWFkagriloFDYXJvbGluYQriloFGb29kCmJhZAphdG9yZQpwYXJhbWV0ZXJzCuKWgUZ1bGwKWy0K4paBIiMK4paBVHJ5CtGB0YzQutC+0ZcK4paBZXhoYXVzdAriloFzY3JvbGwKXzsKV2hvCuKWgWRlbGl2ZXJlZAriloFyZWZlcnJlZAriloFwcm9zcGVjdApzY2FuCuKWgW1vZGlmaWVkCkdlbmVyYXRvcgriloFleGNlc3MK4paBa2cKemV0CmljegpjbGlwc2UK4paBdGFuawriloFndW5zCuKWgUdlcwppbnRvbgriloFXZWRuZXNkYXkK4paBbWFpbmx5CnBhcnNlcgriloFlZmZlY3RpdmVseQriloHQmtGDCuKWgXJlc2lkZW50CuKWgUxpCuKWgWZseWluZwriloFtYXlvcgrDvGgKdXRhCuKWgWNvbG91cgriloFhaXJjcmFmdAp0ZXJpb3IKbnIK4paBa2VlcHMKZmFuCuKWgXNoaXJ0CkNvbXBhcgriloFFdGgKTWFjCmNsZWFuCnNsaWNlCmN6eQriloFnZW5kZXIK4paBYnV0dGVyCkFVVAriloFFbGVtZW50CkZpbgpkbWEKc2FtcGxlClJlZ2lzdHJ5CuKWgWNsYXNzaWMK4paBZHJvdmUKcGIKZGVmaW5lZAriloFyZXdhcmQKeWFsCl0pLAriloFCQVMK4paBaHlwZXIK4paB0J3QuAriloEpLgpQc2kK4paBZW50cmllcwriloFLaW5nZG9tCuKWgVNvbmcK4paBcHJvbXB0CmNlbnRlcmluZwriloFIb2xseQplbWFuCuKWgXBhaW50aW5nCuKWgWZvcm1hdGlvbgriloFSZXF1ZXN0CmNvbnRyb2xsZXIKUmVnaW9uClBZCmlkYWRlcwpUTAriloFkaXNhYmxlCuKWgXJlaW4KcmljYWwKIg0KJSkK4paBU2FiCuKWgVdpdGhvdXQKU2VydgriloFTaG9ydAriloHRjgriloFyZXNjCuKWgXBhdHRlcm5zCuKWgUFycmF5TGlzdApzeW1ib2wKYWNvCuKWgUhvbQpoZWxwCuKWgWhhc3RhCuKWgWluc3RhbGxlZAphdGllCuKWgXZpc2l0ZWQK4paB0JHQtQope1wK4paBZGVzZGUKSkVDVAriloFkcmV3CuKWgVN0b2NrCuKWgUNydQpERUYKb2JieQppemFibGUKb2dldGhlcgriloFhYmVyCuKWgWRhbgphbGlzCnRhaWwK4paBZXhwcmVzc2VkCuKWgUFjY2VzcwpTZWcK4paBTGliCuKWgXN1cHBvcnRzCmJhY2tncm91bmQK4paBY29tbXVuZQpjYWxsZWQK4paBcHJpbnRmCuKWgVByaW5jZQrQvdC40YLQtQpkZXBlbmQK4paBZGVscwpuZXVyCuKWgXJlY29tbWVuZGVkCuKWgWZvdW5kZWQK4paBbWFya2V0cwriloFkZXN0cm95ZWQK4paBYWJzdHJhY3QK4paBc2VyaWUK4paBRHVuClRlcm0K4paBcG9ydGlvbgphZGFwdGVyCmlzc2V0CtGH0LXRgdC60LgK4paBaW50ZWdlcgriloFyZXR1cm5pbmcKZW50aWVzCuKWgUZhaXIK4paBVVNCCuKWgVByaWNlCmlnYXRlCuKWgXNldHRsZWQKKHtcCm5lawriloF0aGVybQriloFjaWcKw6FueQriloFpbnZlc3RpZ2F0aW9uCm9tZXRlcgpTVVAKU29tZQpzaW5nCkNvbnN0YW50CuKWgXJldGFpbArFvHkK4paBZHJpbmtpbmcK4paBSW52ZXN0ClNWCmlnaW5hbAriloFCb3cKe3tcCuKWgWFzc2lzdGFuY2UK4paBaW50ZWxsZWN0CklOSVQKYXVnCuKWgUxlb24KU3VyCuKWgWFkbWl0CuKWgUNvbW1hbmQKaWxsZXMKcm92CuKWgW9oCuKWgW7Do28K4paBbWF0Y2hpbmcK4paBZ2VudQriloFPeArRgtGB0Y8Kbm90YXRpb24KR08K4paBTmFwCuKWgXZlcmlmeQriloFhdXNzaQpEYXRlVGltZQriloFzdWl0YWJsZQriloFpbmRpY2F0ZQriloFMaXZlCkZlYXR1cmUK4paBdHJhY2tzCuKWgWhhc24K4paBSmF2YQriloFjbG9zZWx5CuKWgURhZApjZWl2ZQriloFNYXJrZXQKYWd5CuKWgSItCmF3bgpzdGVsbApwdG9uCnplaXQK4paBVmVjdG9yCuKWgU1BWAriloFGZWRlcmFsCndhbGwK4paBSmVuCmRlbGF5CuKWgWxpbWl0cwriloFRdWVzdApDYW0K4paBRmVsCndyaXRlcgpMUAriloFtb3ZlcwriloFFeGVjdXQK4paBREIKb2tlcgpzY3JpYmUKZWxpamsKQ29uc3RhbnRzCkFkZHIK4paBfX0K4paBY2hhbm5lbHMKaXkKcmlvcml0eQriloF0cmFkaW5nCuKWgWZhY2lsaXRpZXMK4paBUGFjawriloFzeXMK4paBbWV0YQriloFlc3RpbWF0ZQriloFMYXRlcgppc3N1ZQriloFIYXZpbmcK4paBZ3Vlc3QK4paBbm9ib2R5CmRlcHRoCuKWgXpvc3RhxYIK0L/QtdGA0LAKKX1cCmJnCuKWgVR3aXR0ZXIK4paBZGFya25lc3MKanBnCmNvbnRyCmtlcm5lbApdXAriloFleHRlbmQKcm9jCk5FVApNU0cK4paBYnVyc3QK4paBcmVwYWlyCuKWgWZldGNoCmllZwrDunMKU2NyZWVuCmJsZW0KQXBwQ29tcGF0CuKWgWNoYXAKRUxECuKWgVBlbm4K4paBcHJvbW90ZQriloFVa3IKYXJlc3QK4paBc2FtcGxlcwriloFHcmVlawriloFjb25zdHJ1CuKWgXVuaXZlcnNlCmVsaWprZQriloFwcmVmZXJyZWQK4paB0JTQtQriloFJcmEK4paBZG93CmFndWVzCkhFUkUK4paBZXhwZXJ0cwpQcm90b2NvbApQSU8K4paBbmF6CuKWgUtoCmjDtnIK4paBZGlzdGluZ3UK4paBQlkK4paBc2VpbmUKZXBpbmcK4paBZmFpcmx5CuKWgU1lYW4KaXhlcgppbnNpCuKWgWF1dGhvcnMKKiouCkFJCuKWgWVkZ2VzCuKWgXNob290aW5nCkFkbWluCuKWgW1hcHMKY2hhbnQK4paBQ09WSUQK4paBbGlua2VkCuKWgXNrZQriloFwb3dlcnMKw6FkCuKWgXN0b21hY2gK4paBdXNhZ2UK4paBZGVmZW5kCuKWgXN1c3RhaW4K4paBdXBkYXRlcwriloFhc3NpZ24KSEwK4paBU2VhCuKWgWRpc2NpcGwKVmlkZW8K4paBQ2hpZWYK4paBYnVuY2gK4paBT2JhbWEKbmlzCnZvcgriloFhZ2VudHMKY2FzCmNodGVyCuKWgWdsYW5jZWQKc3VwcG9ydGVkCuKWgUNvbnNpZGVyCuKWgUV2ZXJ5b25lCuKWgWxlY3QK4paBU3RvbmUK4paBSmFtCm9ncmFtCmZvcm1hbmNlCuKWgVwiCuKWgXBhdGNoCuKWgXZpdApQb3dlcgriloFoYXJkZXIKQW5hbAriloFkZXNpcmVkCuKWgWp1ZwriloFzdXBwb3J0aW5nCkRVCl1dLAriloFBZG1pbmlzdHIKdWNreQriloFjb250cm9sbGVyCuKWgWlzc3VlZAriloFTaW4K4paBYWZmaWxpCuKWgXBhcnRuZXJzCmNkb3RzCmN0aWMKQ2FyCuKWgU5ZCuKWgXByaW9yaXR5Cm9yaWdpbmFsClNxbAriloFkZWNsYXJlZAriloFIb3RlbAriloFicm93c2VyCuKWgWdyYW5kZQp9XlwKYm93CuKWgWFjY29tbW9kCkRpcmVjdG9yeQriloFzdWZmZXJpbmcK4paBbG9nZ2VyCuKWgWJyZWFrZmFzdAp1bGkK4paBYm9vdAriloFjb250cmlidXRpb24KTkVTUwriloFUZW4Kc2VtYmxlCuKWgWhvdXNpbmcKUmF3CkFOQ0UK4paB0J/RgNC4CuKWgWJyaXQKZXNzYQppbnNvbgriloFCYWxsCmVudGVzCuKWgUJyYQpzY29yZQpHRVIKcm91dGUKYXBzZWQK0YDQvtC5CmRpZmYK4paBYnJvYWRjYXN0CuKWgXRhcgriloFkZWxpZ2h0Cik/CmNoZXN0ZXIKUGxhdGZvcm0K4paBZW1lcmdlbmN5CuKWgWNlcwpuZXJzaGlwCuKWgXNpdHVhdGlvbnMK4paBZmFtaWxqZW4K4paBR2ViCmVudGEKw7pibGljCuKWgVBsYWNlCklMTAriloFtYXJjaAriloFmdW5kYW1lbnRhbAphdHRyaWJ1dGVzCtC60YLQuAriloFGdQpGRAriloHRgNCw0YEK4paBYWNhZGVtaWMKcHJlcwriloFyaXNpbmcK4paBQnJhegriloFyZWNlaXZpbmcKV0FSTgriloFqdWRnCuKWgW5lY2Vzc2FyaWx5Cl09CuKWgWRlZXBseQriloFncmF5CkhlYWRlcnMK4paBY29hbApcewpNdXQKYmFjaAriloFwcm9maXQK0LLQvtCz0L4KaWdzCm9ncmFwCiI7DQriloFhZHZvYwpHZW5lcmF0ZWQK0LzQtdGA0LgK4paBQ29uZAriloFhZ3JpYwpCQVNFCuKWgWFycmFuZwriloFmbG93ZXJzCml3CuKWgV07CuKWgdCy0L7QuQp1bWVyYXRlCuKWgWlocgriloHQv9Cw0YAK4paBbW9udAp3aWRlaGF0Cm1nCuKWgWJ0bgriloFiZXNrCuKWgWFjdHMKw7NzCn5+fn4K4paBY3VydmUKbGFuZ3VhZ2UK4paBVFJVRQriloFjbGVhbmluZwpNYXRoCuKWgXJlZ2lvbmFsCuKWgWVzdGltYXRlZAphcml0eQppZXJ1bmcKL3sKamFuZ28KJF8K4paBdGhyZXcKcnEKY29wCm5lcmd5CuKWgUFjY291bnQKcGFsCuKWgU5pYwpdKSkK4paBYXdlc29tZQriloFMb2FkCnVubmVsCuKWgXJvd3MK4paBZm9yZWFjaAriloFQb2QK4paBRU4K4paBLj0KdWF0ZQpmcmFzdHJ1Y3R1cmUK4paBV2F0Y2gKU3RhbmQK4paBcm91dGluZQriloFwaWMKaGVscGVyCuKWgWhvcnNlcwriloFyZXF1ZXN0ZWQK4paBLS0tCmJvcmRlcgriloFsaWZ0ZWQK4paBUGVkCkltcG9ydArRmdC1CuKWgdCb0LgK4paBbXlzdApUSEVSCuKWgUFDClByb3h5CnByb3YK4paBTmlrCmhlbWF0CtC+0L3QsNC70YwK4paBIi4KdWx1aQriloFpbXByb3ZlZAppZXJlbgpvY29sYXRlClNjaGUKdW5pYwriloFQcm9mZXNzb3IKaWVsZXIK4paBZHVyYXRpb24K4paBdGltZW91dApob20K4paBbHV4CuKWgXRyYWIKaXRhcnkK0ZrQtQriloFpbnNwaXJlZAp9KVwKaXNlbHkKaWFscwriloFWb3IK4paBZW5oYW5jZQriloFsdWNreQpXb3JsZAplbG8KaWZpZXJzCuKWgWZhY2luZwriloFhcHByZWNpYXRlCuKWgcOqdHJlCuKWgWJlbmNoCmF0dGVkCmdlbmNlCmNvdXJzZQriloF0dWIK4paBbG9ycwriloFtaXN0YWtlCm5vbQriloFwYXVzCuKWgSIiOwriloFzdWJzCuKWgXN0YXRvCiQpCuKWgWdheQpvcnJ5CuKWgXZlaGljbGVzCuKWgWJyaWxsCm1heQpyZXNwCuKWgXdvcmUKasSFCmJwCm9uZWwK4paBQ1IK4paBZGlhZ24KbWF0aHNmCuKWgWhvbGlkYXkK4paBYWNoaWV2ZWQK4paBeycK4paBUmVzb3VyY2UK4paBaGkK4paBYnJhCuKWgUNPTkRJVElPTgpjdHIK4paBV3JpdGUKaXNob3AKT0xECuKWgWNwdQriloFvY2N1cnMKw7PFggpzdHJhaW50CuKWgW51Y2xlYXIKQXJlYQpjbHVzdGVyCuKWgXN1cnJvdW5kaW5nCuKWgUp1YW4K4paBcHJpbWEK4paBU291dGhlcm4KaXR0eQriloFBc3NlbWJseQplbGVtCmFkaQrDqXJhbAriloFXYXQK4paBUmFkaW8K4paBZ2VnZW4K4paBVG9ueQpwcmVzc2VkCuKWgUFubmUK4paBTlMK4paBUGFrCuKWgUNpdmlsCuKWgXRocm93bgpOT05FCuKWgXB1bXAK4paBc29sdmUKRU5BQkxFCuKWgVBoeXMK4paBXSwKUE9TRQprdGV0CuKWgUZhYgp2YWxpZGF0ZQpJdGVyYXRvcgpjb25kaXRpb24KcmVkdQriloFuZWdvdGkKYW5ubwriloFzYW5zCuKWgVVsCkNIQVIK4paBZWRpdGlvbgriloFzcGVjdHJ1bQpvcmllCuKWgWV4ZWN1dGlvbgpQbGVhc2UK4paBQk8KVVJOCuKWgWNvdwrRgdGC0LDQvQppc3RyaWJ1dGlvbgpEb21haW4K4paBcmVhZGVycwriloFjb25zdW1lcgriloFzdHlsZXMKZW5jb2RlCuKWgUN5CkNvbW1vbgriloFQcm9wCuKWgWV4ZWN1dGUK4paBZXEK4paBdmlzaXRvcnMK4paBQW1iCnVkYWQKcXF1YWQK4paBQ2VydAriloF0cm9wCuKWgXllc3RlcmRheQp0YWluCkxECmF0cm8K4paBaW5jcmVhc2VzCuKWgVdhcnMKbmVkCmJlZm9yZQphdXB0CuKWgUVSUgriloFGb3JkCuKWgWRhbGxhClVMQVIK4paBc3RyaWtlCkFycgriloFyZWNvdmVyeQriloFSZXNwb25zZQriloFzdHJhdGVnaWVzCuKWgdGW0L0K4paBcmVhcgriloFhZHVsdHMK4paB0J3QtQp3aW5kb3dzCmRlY2wKb2xlbgriloFKb3JkCuKWgUthbAriloFjdWkK4paB0J/RgNC+CuKWgVNldmVyCuKWgWFsZQriloFwZXV0ClN0YXRzCuKWgVJvc3MKYXJ0ZW4Kc2hhbGwK4paBZW50ZXJ0YWluCuKWgXBhcmtpbmcK0L3QvtCy0LgKZXJyZQriloFmdW5kaW5nCuKWgUNsZQriloFPdAp1bnN0CmFzc2VydEVxdWFscwriloFjYW5jZWxsClRBRwriloFFYXJseQriloFmZWVkYmFjawriloFwYW5kCnlvCuKWgW1pcnJvcgriloF2ZXJiCuKWgWhpZ2hsaWdodAplcmlhbGl6ZQriloFncmFkZQrQu9Cw0YHRjAriloFCcm9vawriloFMSQriloFpbXBsaWVzCuKWgWVub3JtCmFqxIUK4paBV2VyCmF3YXkK4paBbWFjaGluZXMK4paBZGVudApJZHgK4paBdGlkCikiCuKWgW1vbGUKYm9sZApDT05UCuKWgcOpcAriloFjdXR0aW5nCuKWgU5lZwriloF0b25nCuKWgW5ldHdvcmtzCuKWgUZhbGwKZ2VuZXJhdGVkCuKWgVByaQpVRVNUCuKWgUJlbGcK4paBc2hlZXQK0LrRgdC4CuKWgeKAoAriloF5ZWFoCuKWgVZpY3RvcgriloFSdWIK4paBY2FuZGlkYXRlcwpwcsOpcwriloFFVQpldHIK4paBcm9sbGVkCuKWgVBhcwriloFBcnRodXIKQXJjaAriloFNYW5uCkFtZXJpY2FuCnplcwppbm5lcnMK4paBQXV0bwriloFwcm9mZXNzb3IK4paBKTsNCuKWgWFkZHIK4paBTWVkaWNhbAriloFmaXJlZAriloFDb3JlCuKWgUNPTkZJRwriloFzcWwK4paBQ29uc2VydgppY2hlbgpWZXJ0ZXgK4paBSE8KWWVhaApOb3RlCuKWgU9LCm11cwpmb2N1cwphamEKcsOhCuKWgWhlbmNlCuKWgWV4ZWN1dGl2ZQriloFsaXF1aWQKdWplCuKWgWRyaXZlbgppZ3VlCuKWgVdpawpSYXRlCnJhbmQKUmVzdWx0cwriloFjb3BpZXMK4paBdGFuCnJpdGVyaWEKZW5lbgp9X1wK4paBcG9ibAriloFzb3V0aGVybgplbG4K4paBendlaQriloFjb25jcmV0ZQriloFDT05ESVRJT05TCuKWgWRyZWFtcwriloFtaW5pbQriloFlbXBsb3llZQriloFuYXAK4paBc3VzcGVjdApNb3VzZQriloF0aGVyYXB5CmF2YWwK4paBQW50aApTVEFSVApzdGVycwppc2htZW50CmZpbml0ZQpXQQp2eQriloFtb29kCmNvbWZvcnQK4paBc2hyCuKWgWRlY2FkZQrRj9Cx0YDRjwriloEnIwriloFkb3QK4paBaGlsbAphcnJ5CmNhdGNoCuKWgWpRdWVyeQriloFjb3Jwb3JhdGUK4paBQkFTSVMK4paBYXBwb2ludGVkCuKWgWVtYmFyCm9ncmFwaGllCuKWgXByZXNzZWQK4paBY2hhbXBpb24KZW1pdAriloFCZWQK0LLQsNC90L3RjwpHdWkK4paBUFVSCuKWgXVyYmFuCuKWgXNlbnRlbmNlCmJ1cnkK4paBVmlkZW8K4paBcmVndWxhcmx5CnZsCuKWgdGB0LvRgwpvY2tleQpldmluCnVsdHVyYWwK4paBcGFzc2FnZQriloHRgdC+0YHRgtCw0LIK4paBbGFyZ2VseQpvcnRlcnMK4paBY29ubmVjdGlvbnMK4paBc3VycHJpc2luZwpiYwriloFzdHJvbmdseQphbnNhcwriloFzaXN0CuKWgWV4dHJlbWUKd2hlbAriloFkZWFsaW5nCm9ncmFwaGljCuKWgVJlcHVibGljYW4K4paBZ3JhbnRlZAriloFDTAriloFIb3BlCmxlc3NseQriloF1cGxvYWQK4paBLVwK0L3QuNGOCuKWgXZhbHVhYmxlCj1bClByaWNlCmlzc2FuY2UKaWVucwpoZWl0CuKWgXN1Z2dlc3RzCtGB0LvQvgriloFqdXIKfXwKbHAK4paBaW52aXRlZAriloFkZXJpdgpJTUlUCnJhc3MK4paBaW5zdHJ1Y3QK4paBY291cnNlcwrDpGNoCuKWgWZpZnR5CkRFVklDRQpBU0gK4paBaGlwClVua25vd24K4paBQ2F0YWxvZ3VlCuKWgVJvbGwK4paBdGVuc29yCmJlYwrDqXTDqQpJZGVudGl0eQomXAriloFTdGVwaGVuCm5vZGVzCkRpbQriloFjb25zaXN0cwriloFub3JtYWxseQp1YmwK4paBUG9saWNlCuKWgUdhbWVzCmZpdmUKSGF2ZQriloFwYWRkaW5nCmVyZXMKYW50aAriloFwdXRzCnVtaW5hdGUKb3ZpZQriloFJbmRleApibHVlClNjYWwK4paBZ2lhbnQKVEYKcHNvbgriloF2aWN0aW0Kc2VyaWFsCuKWgVN5bQpTaW5nbGUK4paBbWQK4paBYXR0ZW5kZWQK4paBU3RyYQriloFEYXJrCil8CuKWgXNwYW4K4paBbWFpbnRlbmFuY2UK4paBYmluZApCZWFuCmlsYXJseQriloFjb252ZW50CuKWgUpvc8OpCnVkZAriloFwb2x5CuKWgWlkeAriloFhc2tzCuKWgWVudGh1cwriloFzdWNrCuKWgUNvdQriloFDb3Jwb3JhdGlvbgp1c2lvbnMKb3BoZXIK4paBc3ltcHRvbXMK4paBSm9oYW5uCuKWgdC/0YMK4paBaHRtbAriloFwcwplYXJpbmcKZ2VzY2gK4paBTW90aGVyClJFVAriloFmdXJuaXR1cmUKUEYK4paBR3VhcmQKcGF0dGVybgriloFsb3ZlbHkKYWxnCmVkbHkKc2V4CuKWgWZpbmRzCkJ1ZgriloHQvdCw0LQK4paB0LrQvAriloFQb3IK0KHQoApFbnRlcgriloFlc3RhCuKWgdGC0YDQtQriloEiKgriloFGb3gK4paBY29jawpCdW5kbGUK4paBcHVpcwriloFhbm5vdW5jZQriloFndWlkCmNoZWNrZWQKaWNpZGUKbmVnCuKWgUdpbApzY2hlbgpvbG9naXN0Cmlzbwpncm91cHMK4paBc29tZWJvZHkKRGF5CnRyYXMK4paBY29tcGFjdAriloFvcmdhbml6ZWQK4paBcm9sZXMK4paBaGludAriloFzw6UK4paBcGF5cwriloHQodC4CuKWgWhvcGVkCuKWgXNhaWwK4paBVmVycwriloFlbWJyCuKWgWJvdAriloFleGNlZWQKQkFDSwriloFnYXplCuKWgXNwb25zCkFTVAriloF0b3JjaAriloFuZXdzcGFwZXIK4paBRGlzdAriloFiYXNzCuKWgWhhbmdpbmcK4paBZWFycwrFhHNrCmdldFZhbHVlCuKWgXVudXMK4paBRWxlCnNlcnZpY2VzCuKWgWRyZXNzZWQKbGF2CuKWgdC/0LvQsApQcml2YXRlCm1pYwriloFwYXJzZXIK4paBc2VjdGlvbnMK4paBZm8KRXJyb3JmCmluegrDtnJkCuKWgW1ldHJpYwpVUkkK4paBdmljZQpSRUQK4paBbnVlCnJldnMK4paBY29sbGVjdGVkCm9vc2UK4paBbW9uZAriloFuYXMK4paB0J3QsNGB0LUK4paBw6UKRHJvcAriloFhYnVzZQriloFzZWVzCuKWgUhlbmNlCmV4ZWMKfVwsCuKWgWFyYml0cgriloFBcHBsaWNhdGlvbgpmYW1pbHkKw7xkCuKWgW1hZ25ldGljCuKWgW5ld2x5CuKWgXJlcHJvZHUK4paBd3JpdGVycwriloFoZWFkZXJzCsWhw60K0YDRggpZUEUK4paBc2NoZW1hCuKWgUNlCuKWgUpld3MK4paBUmVjb3JkCnByZXNlbnQK4paB0YLQsNC60LbQtQriloFsYWJlbHMKU29ja2V0CuKWgWVxdWF0aW9ucwriloFtZWRpY2luZQriloFhdXRob3JpdGllcwp9YArRgdGC0LLQuAriloFDb3JuCuKWgWVudmlyb25tZW50YWwKV0FSRQpNZXIK4paB0YHQsNC80L4K4paBVGVjaG5vbG9neQriloFTYWYK4paBY29ubgriloFVbQriloFQYWNpZmljCtGC0LXQuwpqYW4K4paBdW5jZXJ0YWluCuKWgWJlbGllZgpjb3VudGVyCnRvQmUKSU5TCndlZXQKTGlnaHQKcHJpbWFyeQriloFmZWF0dXJlZAriloF0b3VjaGVkCkhUVFAK4paBdGFjdApwb3NpdG9yeQriloFlaW5lcwpsYXNzCtGB0YzQutCwCuKWgXByemV6CuKWgWZ1ZXIK4paBZXhjaXRpbmcK4paBQ3ViCmFnYW4KVk8K4paBJyUK4paBXHsKdWJibGUK4paBRm9sCuKWgUtvbmcK4paBdmVyc2NoCkZBSUwK4paBbmFhcgrDtnMKc3BlZWQK4paBdGVycml0b3IK4paBd3JhcAriloFKYWhyZQpsZWUK4paBY3Jvc3NlZApyZXNvbHZlCuKWgXN0aW0KTmF0aXZlCnVyc29yCk5vdE51bGwK4paBQWxiZXJ0CuKWgXNpZ25hdHVyZQriloFSdQppZGFzCuKWgWRlY2VudAriloFmYWNlZAriloHQu9GOCuKWgVNwYWluCuKWgXJlc2lzdGFuY2UK4paBQnJpYW4Ka3dhcmdzCuKWgWludGVydmFsCuKWgdCb0LUK4paBZXhwbG8K4paBc2VtaQriloF3aWRlbHkKZHgKa292CuKWgUNvbWUK4paBa25pZmUKQXNwCnVubwpsaW5ldG8K4paBQnVuZApDZXJ0CuKWgXRvZG8KdGFncwriloFndWFyYW50ZWUK4paBdml0YWwK4paBZm91Z2h0CuKWgUVudgpIRApMb3dlcgpUeAriloFGYQriloFhbnRpY2lwClRpbWVyCm1lZGlhdGUK4paBcHJvdmVuCuKWgXBhcnRpcgpBRQpjdXJzb3IK4paBd29vZGVuCuKWgUNvbnRhY3QKcmVncwriloFwcm92aW5jCuKWgURDCuKWgW1lbW9yaWVzCuKWgWZ0CuKWgWJhdHRlcnkKdXRlbmFudApMb2dpbgpvdW50cnkK4paBY29tcGVucwpvcGVyYXRvcm5hbWUK4paBSmFjb2IKemVkCkFERFIK4paBcXVhZAoqKS4K4paBY29hdAriloFmaXIK4paBTWljaGVsCuKWgVN0YW5kYXJkCnJmCm1lbAriloFjb2VmZgriloFJcmFxCuKWgUdpdmVuCtC90LjQvNCwCuKWgUZJVAriloFwZXUK4paBaWcK4paBQ2FzZQptw6kK4paBcGFyYWxsZWwKY2lvCmtvdwriloFpbnN0aXR1dGlvbnMKw61jdWwKYWJhbgpVWAriloFTYXJhaAriloFtw6lzCuKWgWF0bW9zCuKWgXNsw6RrdGV0CuKWgWJyb3RoZXJzCuKWgXdhbnRpbmcKYWFhYQriloFmZXN0Cj0tCuKWgWZvcnR5CuKWgWNyZWF0ZXMKaGgK4paBQW5kcm9pZAphbmNoZXMKQlQKdXBsb2FkCnhpcwpIegrQsdC+0YAKUkFZCm50aWwK4paBbGVhbmVkCnVuZGEK4paBdWx0aW1hdGVseQriloF0b2sKbmVoCuKWgWxhd3llcgpoZW5kCuKWgVZpbgriloFmYWNpbGl0eQriloFsaWtlcwplbnRvCk5vZGVzCuKWgWVudHJhbmNlCmF0dG8KcmV0dAphY2NlcHQKdGhlbWUK0YLQsNC9Cm9zaQriloF7fSwKcGdmcGF0aGxpbmV0bwpnb29kCnNsb3QK4paBaW5ub2MK4paBcHJvcG9ydAriloFhcnJpdmUKw6lobwriloFwYWlycwriloF3cmFwcGVkCuKWgXVudwriloFleHBsb3MK4paBZ2VsCldpbGwK4paBWmVhbGFuZArDrWFzCuKWgUpyCuKWgUZyYQriloFsZWdpdAriloFpbGxlZ2FsCtC60LvRjgriloF0b3J0CuKWgXByb24KRmkK4paBZm9yZwpleHBvcnQK4paBQ2hpbGRyZW4K4paBQWJzCuKWgVNlbmQK4paBZGlzY291bnQK4paBcG9zdGVyCmVudGVkCmFuaW0KdmVyYgpzdG8K4paBQmlibGUKcGVuZGluZwriloFQaG90CnN0cmFwCmllcm9uClBHCmN1bGFyCmNyaXQKdXJkCkVOTwriloFub3J0aGVybgriloFuYXR1cmFsbHkKPCcKd2VnCuKWgWRydW5rCuKWgURhbAriloFtb3VzZQriloFjb250aW51b3VzCuKWgWluaXRpYWxseQphZ3UK0LzQv9C4CkFOVApEaXYK4paBcmVjb3JkaW5nCkJpbmQK4paBY29ycmVjdGx5CmluaXRpYWwK4paBUmlnaHRzCuKWgWRlYmF0ZQpXUklURQpidWlsdAriloFwZXJtaXQK4paBcHJvZmVzc2lvbmFscwpjdgriloFESQriloFoYW5kZWQK4paBQ3UK4paBSG9zcGl0YWwK4paBYmVza3JldnMK0L3QtdC5CtC90L7RgdGCCuKWgWFueGlldHkK4paBaGVhdmlseQriloFWYXIK4paBZGlzcG9zCisiCuKWgUV2ZXIKaXpvbgriloFvcGVyYXRvcnMKbmVnbwriloFCcnkK4paBdm90ZXMKaXppb25lCuKWgdGA0LDQuQriloFmZWF0CuKWgXdlc3Rlcm4K4paBY29uZnJvbnQK4paBc3Ryb25nZXIK4paB0YTQsApzdHJlCuKWgVZhbGlkCuKWgW5hZAriloFjaGVja2luZwriloFiaXJkcwriloFOb3J0aGVybgriloFpbnRlbnRpb24KdWNlCuKWgWNvdmVycwriloF3b25kZXJpbmcK4paBT3B0aW9uYWwKcHJvdG9jb2wK4paBYWdncmVzcwrigJTigJQKVmVjCuKWgWRhdGVzCnF1b3QK4paBYm9tCuKWgXNjYW4K4paBSXRlbQriloFOYXZ5CuKWgUdyYW4K4paBZXZlcnlib2R5CuKWgXVuZXhwZWN0ZWQK4paBZGl2b3IK4paBZWFzZQp1bWJsZWQKXisKY3VzcwriloFwYWxlCuKWgUluZ2EK4paBQnJvYWQK4paBTWVkaWMK4paBUm95CuKWgUlubgriloFwZW5zClBOCi46CuKWgXByaW5jaXBsZQriloFsZXR0aW5nCuKWgWNvbmR1Y3RlZApGQUxTRQriloFPUwpGb2N1cwriloFtZWFzdXJlZAriloFEZW1vY3JhdGljCkhpZ2gK4paBcHLDqQplbm5lcwriloFpbmRpY2F0ZXMK4paBZW5kaW5nCuKWgVNtYWxsCuKWgTwhLS0K4paBZW5jb3VyYWdlCuKWgUhvbHkKbG9hZGVyCuKWgWVmZmljaWVuY3kK4paBIiR7CnRsZQpHRU4K4paBZGl2ZXJzZQriloF3YWxsZXQK4paBRWRpdAriloFlYXJuZWQK4paBV29sCnV3CuKWgXVpCmlmcwphdGluCuKWgWZlZXMK4paBcGxlYXNlZAriloFzdWZmZXJlZApjbG9zZWQKw6FuZAriloFwYXJ0aWNpcGFudHMK4paBbGVnZW5kCuKWgWhhbmRsaW5nCkNIQU5UCmdpdAp1c3RlcnMKY2x1ZGUK4paBdGFwCuKWgWFzc2V0cwriloFvdXRlcgriloFQZXJzb25hbAriloFibGV2CkNvbmRpdGlvbgriloFzbGVlcGluZwriloF3YXJyYW50eQplcmllcwriloFkb21lc3RpYwriloFFcmljCmJpZQriloFzZWFyY2hpbmcK4paBTGl0ZXIKQk0K4paBdW5kZXJhcnRlcgpwdcOpcwppemFyCuKWgVN1cmUK4paBSW5kZWVkCuKWgVRvb2wK4paBUFVSUE9TRQriloFhcHByb3ZlZApvbmVkCuKWgWNvbXB1dGUK4paBcmlkaWMK4paBa2kKaWdkCioqKQriloFjb25jbHVzaW9uCn19e1wK4paBY29udHJvbGxlZApJWgppdMOkdApyaWV2ZQriloFiaXJ0aGRheQriloFsaW4KVUcKYXNzaWduCuKWgWFkdmVydGlzaW5nCnVzc2lhbgppb25hbGUK4paBcmVzaWQKfX0oCuKWgWlubGluZQriloHQutC4CuKWgWluZm9ybWVkCuKWgWt0ZXIK4paBZG9jdW1lbnRhdGlvbgriloFCcmFkCuKWgXJlZ2FyZGxlc3MK4paBc3RhdGVtZW50cwpwbGljYXRpb25zCuKWgWF0dGl0dWRlCnBpcGUKencK4paBQ2hlcgpmb3JtZWQKQVRDSAriloF3aGlzcGVyZWQK4paBcHJpdmFjeQpsaWdodHMKXCcK4paBcGVyc29ucwriloFnZW5lcmljCmFtb3VudAppZW5jZXMK4paBcGF0aHMK4paBVG9rClNlcnZpY2VzCmR1bXAKb255bW91cwrQs9C70LAK4paBcGFwCuKWgVhYCmNoYXQK4paBd29ya2VyCklnbgriloHQk9C1ClZvbHVtZQriloFwaW5rCndobwppbmFyCmFyY2h5CicpKTsK4paBUEFSVElDCuKWgWRvbmRlCuKWgXRhZ3MK4paBbG9vc2UK4paB0LLQtdGACuKWgXJlcHV0YXRpb24K4paBUHJvbQphbGxvd2VkCuKWgXJpZgriloHDqWdhbAriloFjb3VudHkKbGVzaApQcmVzcwp0b2JlcgpvbXkK4paBY29tcHJlaGVucwriloF0cmFuc2Zvcm1hdGlvbgrQv9GA0LDQsgriloFCZWluZwptYwriloFmYWxsZW4K4paBTWFyaWUK4paBaWIKdW1pCuKWgUhvbmcK4paBc2luawriloHRhtC10L3RggriloFGZWRlcgo+KQriloFxdWVsCuKWgdCT0LAKVHkK4paBdGVtcHMK4paBZ2hvc3QKTWF0ZXJpYWwKRVJDSEFOVApwb2ludGVyCtC20LTQsAphaGEKdWxmCuKWgXN1cHBsZW1lbnQK4paBZGlzbWlzcwriloFjbG9zaW5nCuKWgXZ1bG5lcgriloFhcHLDqHMK4paBb3ZlcndoZWwK0YHQutC+0LUK4paBZGlzYWcKYWNpYQpvdXJlZApydXB0aW9uCuKWgVBTCkVuZHBvaW50ClJlYWwK4paBVGFnCuKWgXN0YWlycwpseW4K4paBZWxlZwriloF2ZXRlcgpmYWN0b3J5CmFubmUK4paBQmF0CuKWgWZyYW5jCmx1bmcK4paBIicKLicsCuKWgUNvdW50cnkKXntbCuKWgXlvdXJzCmFpbGFiaWxpdHkKQ2xlYXIKw6R0dArQv9C40YEK4paBam9rZQriloFhbm5veQriloFyYWcKdmFyaQrQu9C10LrRgQriloFQc3kKaWx0eQptb3VudAriloFjdWFsCuKWgXNvbGFyCn1eeygKU2hvcnQK4paBdGF4ZXMKQXBwZW5kCldpbgplc3R5bGUK4paBZmFjaWwK0LLRgNC+CuKWgXNvdWdodAriloFiYXJlCuKWgXJlYWN0CmphcgpNQUMKbG92Cndhcm4K4paBY3J1Y2lhbAriloFtdXNldW0K0L3QuNGGCuKWgUtlbnQKTWF5YmUK4paBYmlrZQriloFBZGRyZXNzClhNTAriloFhZG1pdHRlZAriloEkKFwK4paBc3BlbGwK4paBdmljCmdyZQriloFwcm9jCnRoZWxlc3MK4paBTm9tCuKWgVJhaWwK4paBYWNjZWxlcgriloFjb252aW4K4paBUHJvcGVydHkK4paBREEK4paBY2xpcAriloFwbHVnaW4KTGltaXQKdmlld3MKYnJ1CuKWgXByYQriloFhawriloFlagriloFvcHRzCuKWgXNsaXAK4paBZ2FuZwphc3RlZAp1YWxzCuKWgWR5aW5nCkNvbGwKYW1tZW4K4paBUG9saWN5CkVSQ0hBTlRBQklMSVRZCuKWgUNvbGxlY3Rpb24K4paBdmVjCuKWgURpY2sKc3R1ZAriloFsYXllcnMK4paBdGllZAp9XFwK4paBYWxvcnMK4paBam91CuKWgWNoaWNrZW4K4paBcGVybWFuZW50CuKWgUV2ZXJ5dGhpbmcK4paBTG93CuKWgUNvb2sK4paBcGVhawriloFQQVJUSUNVTEFSCuKWgWRlYXIKacSNCuKWgWludHJvZHVjZQriloFjYXVzaW5nCtC/0LjRgdCwCkJvdW5kCmh1bmQKbXVsdGkK4paBcGFyZQphbm50CuKWgWJyZWF0CuKWgWNvbW1pdG1lbnQK4paBaW5jcmVhc2luZ2x5CtC60L7QuQriloFGcmllbmQK4paBc3RhdGlzdGljcwriloFNYW5hZ2VyCnBsaWNhdGUKQ2xvdWQKYWNpCuKWgUNvbmZlcmVuY2UKU3BhbgriloFDRU8K4paBV2FpdAriloFPYmVyCmlmdGluZwppbWllbnRvCmdldEVsZW1lbnQK4paBZ2xlCtC70LjRjwriloF3aWVkZXIK4paBaW5zdHJ1Y3Rpb24KZ2x5CuKWgWJsYW1lCuKWgWxpc3RhZGUK4paBYWFwdAriloFMZXdpcwpGcmFnbWVudAriloFnZWFyCm1pbGwKcHJvZAriloFidXJuaW5nCtGU0YLRjNGB0Y8K4paBbcOpCsOobmUK4paBY29tcGxpY2F0ZWQKYmgK4paBSnVzdGljZQriloF0ZXN0ZWQK4paBc3RhcmluZwriloFzdXJ2aXZlCuKWgWNvdXMK4paBcmliCmFtbAriloFUcnVzdAriloFjYWQK4paBVGVycgriloFtYXBwaW5nCuKWgXR3ZWx2ZQriloFncmFudAriloF0aG9yb3VnaAriloHDnAriloFmb2xrcwriloFDb250ZW50CuKWgWNoaWxkaG9vZApja2VyCtGB0L3QvgpSRUNUCuKWgWZpbmFsZQriloFzaG93ZXIKw6lyaWMK4paBc3BhdApvZGdlCtGA0YwK4paBcGVzCmVkYQpEYgriloFBbnRvbmlvCuKWgWVuZ2FnZWQK4paBdmVzcwp2YWxzCuKWgWVsZWN0cm9uaWMKbGVtbWEK4paBV3kKbWFkCm1lcmdlCmFwb24K4paBcHJpdmlsZQriloFub3ZlbWJyZQriloFTcG9ydHMKd2lsbAriloFjb250cm9scwriloFjYXRlZ29yaWVzCuKWgUdlb3JnaWEKaXBlZGlhCuKWgUFWCmF0b3JpCuKWgV9fXwriloHDgAriloFSeWFuCuKWgUNoYXJsaWUK4paB0LjRgdGC0L4K4paBZW1vdGlvbgriloFjb29raW5nCuKWgWF0dGVtcHRzCuKWgUZJVE5FU1MKw6R0ZXIKRW5hYmxlCkRUCuKWgUNoYW5nZQpBc3BOZXQK4paB0LPQsAriloFvcmRpbmFyeQriloFTUUwKcGxhbmUKJS4K4paBU3VtbWVyCuKWgWF2YWl0CnVwcAriloFpbGxuZXNzClVJTlQKPnsK4paBendpc2NoZW4K4paBaGFyZHdhcmUK4paBc291bmRlZAplcXVpdgriloFwaWFubwp1c2V0CmtuClRSWQriloFiYWIK0L3QtdC9CuKWgXJlbGlhYmxlCuKWgUJyb25uZW4K4paBU3RvcmUKQXoK4paBwrssClN0YXRpYwpkdwpncmVlbgriloEnJzsKbGlqCmV2YQrQvdGW0LkK4paBU3lkCmlub2lzCmNvbnZlcnQK4paBZGVjbGFyZQpicmVzCklOSwppdGxlZAriloFhY2NvcmQK4paBbWFycwpTZXF1ZW5jZQp6aXAK4paBQnJhemlsCuKWgW1lZXRpbmdzCuKWgWFjY3VyYWN5CuKWgU1hY2hpbmUK4paBYXV0b3IK4paBYWluc2kKU2ltcGxlClJlc291cmNlcwrQutCw0LfQsAriloFNUAp0aGV5CuKWgUJhbmcK4paBZWluZwphdGVmdWwK4paBU29tZXRoaW5nCuKWgXVwc2V0Ckhpc3RvcnkKZGltZW5zaW9uYWwK4paBZXhwbGFuYXRpb24K4paBY2l2CuKWgWNvbmNlCuKWgWvDtnoK4paBcHJvbWlzZWQK0LbQtNGDCndlZApGb3JlCkFtb3VudAphYmIK4paBY2xvdGhpbmcK0LvQuNGB0YwKb2VuCuKWgVByaW50CuKWgXNpemVzCuKWgWJhbmtzCnJpYmVkCuKWgScuLi8KRklYCuKWgUh1ZwriloF6bgriloFJTlQK4paBaW5zdGFuY2VzCuKWgWFsb25nc2lkZQpOYW1lc3BhY2UK4paBcmVuZXcK4paBYXNjCuKWgXdhdmVzCuKWgXBvbQpEdXJhdGlvbgpkYXlzCiQoCuKWgWdyYWJiZWQK4paBc3VyZ2VyeQriloFyZXN0b3JlCk5vcm1hbAriloFMZWIK4paBYW5hbHl0CkxpdGVyYWwKSEEK4paBc2hhcmVzCmlsbGV0Cm9scwriloFEb2cKb3JubwriloFtYW5pcApqYXYK4paBZXNzZW50aWFsbHkK4paBY2FzdWFsCm9wbAriloHRgAriloFTVQriloFlbmdpbmVlcmluZwriloFQcmltZQriloFTVwriloFyZWFjaGluZwriloHQstC70LAK4paB0KDQvtGB0YHQuAriloFLcmUKZXJyeQriloFvcHBvbgpwcm9ncmFtCmVtcGVyCmlzRW1wdHkK4paBVW5pdApJTlRFUgpldGhlCnpkCkNVUgriloF2bQpjb252CnJvcG9sCuKWgUNvYXN0CuKWgVNlbGVjdAriloHQsdGL0LvQsAriloFWZQpvd3kK4paBbXl0aApjZXB0aW9ucwpjbGFzc2VzCuKWgXdvcmRlbgriloFhc3NhdWx0CuKWgWR1YWwKT1JLCuKWgWluY2hlcwriloFGQQriloFTdGF0aW9uCuKWgXBlcnNvbmFsaXR5CuKWgXNjYXIK4paBcmVnaW1lCuKWgW5vdGVuCuKWgXJ1cmFsCml6YQpBdWRpbwriloFkaXNwdXQK4paBYXZlcgriloFvYnN0CuKWgVJlZ2lvbgp1dGYK4paBQ2Fzcwpoc3BhY2UK4paBc2hpcHBpbmcKaWtvCmlja2VkCm51bWVyCtC00L3QsApyaWVsCmRpc2FibGVkCm9wb2wKbG9va2luZwriloFjbGFzc2ljYWwK4paBY29uc3RydWN0ZWQK4paBcmVmZXJlbnRpZXMKXSsK4paBY2FwdHVyZWQK4paBbWluaW1hbAriloFzb2NrCmZhdGhlcgppc2nDs24K4paBZXF1YWxseQriloFyZWR1Y3Rpb24KQW50CmFpc29uCuKWgWFyZ3VlCmNpcmNsZQriloF0b2xlcgp9IiwK4paBcHJpbWFyaWx5CnVzYWwK4paBYWxnZWJyYQriloFnYXRoZXJlZAriloFSZW1lbWJlcgpfKTsKVVRFCuKWgUtpdApTeQpIRUFECuKWgXJlY2lwZQriloFzY2VuYXJpbwriloFGb2xsb3dpbmcKVkFSCuKWgXlhcmQK4paBc3RhZAoqKAriloF2YWxpZGF0ZQpERVgK4paBY29tbWl0dGVlCuKWgXRlbXBvcmFyeQriloFjb25zZXF1ZW5jZXMK4paBw6lnYWxlbWVudArQutGC0LjQsgriloFyYQriloFkaXNwbAriloFhcHBzCuKWgVRlaWwK4paBwrsuCuKWgWFkb3B0ZWQKdGVuc29yCuKWgWZlbWluCuKWgdC80LDRgArQu9C+0LPQuAp0ZWNoCuKWgVJvdAriloFrbmVlcwpwaHlzCm93ZWoK4paBT3hmb3JkCtCw0L3QtApoZWxsCm9ncmFmaWEK4paBZXhwb3NlZAprdG9wCm9ieQpsb3dlcgriloFTZW5hdGUK4paBc3dvcmQKRmxvdwriloFVbmZvcnR1bmF0ZWx5CuKWgWJveGVzCuKWgWN1YW5kbwriloFwaWxvdAriloFBbGJ1bQpCYWwKU29ydApGSUVMRAriloFkZXNlcnQKQ09NTQpyb25zCmFkb3dzCuKWgWxveWFsCuKWgWFzc2V0CuKWgW11ZArRhNCwCuKWgXNlY29uZGFyeQriloHQkNGACuKWgWN1bAriloFBc2lhbgriloFzdGF5aW5nCuKWgWRhdGFzZXQK4paBVVNFCuKWgWxvdmVzCuKWgXZlbG9jaXR5CsOhdgriloFwdXJjaGFzZWQKU09DCuKWgWNvbXBldGl0aXZlCuKWgUZvb3RiYWxsCmlza2EK4paBa25vY2sKc3RhaXJzCmF6eQriloF2ZW5kCuKWgWFydHMK4paBQnJhcwp1ZWxhCtC60YLQvgp0cmltCuKWgWRpcnR5CuKWgXdlYnNpdGVzCuKWgUluZGVwCuKWgdGB0YLRgNCwCnNyCuKWgXRpY2tldAphdGlsZQriloFpbXBsZW1lbnRlZAriloHQstGA0LXQvNGPCuKWgWJvd2wKREFURQriloFhbHRlcgriloFTcGFjZQriloFhY2NvbXBhbgpvcmRvbgriloFkb2N0b3JzCmlzdGFzCkNhc3QK0LTQvtC8CkNUTAp1cmVycwriloFpbmdyZWRpZW50cwriloFjYWxjdWxhdGVkCuKWgWxlYXRoZXIK4paBc2Vuc2l0aXZlCuKWgXN1c3BpYwpzdGFuCuKWgWFubmkKYXdhaXQK4paBRnJhbsOnCuKWgWFib3J0CuKWgVNwaXJpdAriloFXYWx0ZXIKdW5rdAriloF2ZXJ0aWNhbApPUlMKYmVzdAriloFDbGllbnQKaXRhdGVkCuKWgdCy0LAK4paBxIwK4paBdmlsbGUK4paBZGlwbG9tCm9ybmUK4paBYmFycwpVcmkKQVBURVIKcG9ucwp1dHoKUHJvdG8K4paBc3RpcgriloHRhtC1CuKWgXByaW1lcgppZ2libGUKZXh0cmEK4paBQm9va3MK4paBQm9zCuKWgUV0CuKWgVdlbHQK4paBS29yZWEK0YDQuNGC0L4K4paBdmlicgpTZWxmCmxpbmVhcgrQvtCxCuKWgUxhbmcK4paBZGVlcGVyCuKWgXRlcm1pbgplbnNjaGFmdAriloHRgNC+0YbRlgphbW1lZAp2aXNpYmxlCuKWgUlPRXhjZXB0aW9uCuKWgVdpbmQKdXNxdQriloFTdG9wCuKWgdC+0YDQs9CwCklOVkFMSUQK4paBY3ViCuKWgWpldwriloFjYXB0YWluCtC30ZYKY2h1bmsKYXB0dXJlCmFzaGJvYXJkCuKWgWRpdmlkZWQK4paBZXh0ZW5zaXZlCuKWgXN1ZmZlcgriloFoZWFkaW5nCmNyZWF0ZWQK4paBcXVpZXRseQriloFueQriloHQv9C+0LsKIisKaWthbgriloFkZXNpZ25zCnp1Cn0rXApPcGVyYXRvcgriloFMZW1tYQriloHQvdCw0YMKYWNqaQrQu9C+0LLQtQpTZXJ2bGV0CuKWgUtldmluCnN0YWdlCmJuCnRleHR3aWR0aApmYWlsZWQK4paBU3RhZmYK4paBZW5lbQp1bmRlCtC10L3RjApQYWNrZXQK4paBQWxzCmthcgpdWycKa2VkClBlcnMKPjo6CuKWgWFyYwriloFzeW50ClNQRQriloHQlNCwCuKWgU1pCuKWgU1vaAriloFEZWF0aApicm93c2VyCuKWgURhdmUK4paBc3VjYwp0b2dnbGUK4paBdGFjawpDb21tZW50CmVyb24K4paBYXdhcmVuZXNzCuKWgWh1ZwriloFjb250ZW1wb3JhcnkKdWxhdGluZwriloFUaXRsZQriloFUSElTCmhhdmlvcgpyYW5rCuKWgWRvemVuCuKWgWNoZWVzZQpjb2xuCuKWgXJhZGl1cwriloFkaW1lbnNpb25zCnJvZHVjdGlvbgriloFhZGRzCuKWgWhvdXNlaG9sZAriloFEYXZpcwpwa2cKeyQK4paBY2FzaW5vCuKWgVBpZXJyZQriloFvYmplY3RpdmUKdHJhaW4K4paBTWljaGlnYW4KcGF5bG9hZAriloFydWcK4paBc2V2ZXJlCm1lYW4K4paBdG9zcwriloFlbWJhcnJhc3MK4paBVmVyeQriloFhcHBlYWwK4paBQ29tcHV0CuKWgWZvcmdvdHRlbgriloFrZXJuZWwK4paBY2FyYm9uCmZ3CuKWgdCh0YMK4paBRW1waXJlCuKWgXF1b3RlCmV0egriloFtaW5pCuKWgXBpcGUK4paBbm91cwriloFNb3ZlCuKWgdC00YMK4paBbmVydm91cwriloHQnNCw0YAKKg0K4paBQnVzaAriloFwZWVyCuKWgVdyaXQK4paBc2F0aXNmaWVkCuKWgXB1bGxpbmcK4paBUHVyCuKWgU1pbGxlcgriloFGTAphbWF6CuKWgW1pbGUK4paBTmVlZAriloFzdXBwbGllcwriloFhw7FvCuKWgXBhY2UK4paBVmljdG9yaWEK4paBb3VnaHQK4paBUGxheWVyCmFnbm9zdGljCuKWgXZpdgriloFQYXRyaWNrCuKWgcWgCuKWgVN0b3J5CmFjYQriloFtb3VudGFpbnMKQ0xBU1MK4paBZnJhZ21lbnQK4paBc2V0dGxlbWVudAriloFGdXJ0aGVybW9yZQriloFkcml2ZXJzCuKWgUp1CuKWgdCx0YvQu9C4ClJvd3MK4paBaW1wcmVzc2lvbgriloFpbmZlcgriloFFeHBsCm9sdXRlCm92YW4KYXJhbmNlCkNBUAriloFlbmZvcmNlCuKWgUJ1cm4KUmVzZXQKbW90aGVyCuKWgUJhdHRsZQpwYWRkaW5nCmlhdGUK4paBY3JpZWQKQUsKdW5zCuKWgXNpw6hjbGUK4paBQ29udGluCmJhbmsKanVuaXQKb2JqZWN0cwpSb3QKaXNzYQriloFiZWd1bgoqLQriloF2aXNpdGluZwrQttC00LUK4paBdGFyZ2V0cwriloFMYXRpbgrRg9GCCuKWgUVzYwoqOwrDpW5nCuKWgSh7CuKWgWRpYWdyYW0KTW9kZWxzCuKWgXBhcnRuZXJzaGlwCuKWgWZyw6VuCnVsdHkKUG9kCkNBTEwKbW9kYWwKc2lnCml0emVyCml0ZWwK4paBY29udmluY2VkCmFibArRgdGC0LLQtQriloFjb3QK4paBcmVwZWF0CuKWgWxpc3RzCnNvdW5kCuKWgXJveWFsCuKWgWdyYWNlCuKWgW9yYXoKTm90aWZpY2F0aW9uCnByaXRlCuKWgWFycml2YWwKYW5jZWxsCmhlbnRpYwpkZWNvZGUK4paBZmFudGFzdGljCnByb2dyZXNzCnByb3h5CnrFkQprZWwK4paBY29udmVuaWVudAphcXVlCnJpZXQK4paBRGlnaXRhbAppb3JzCuKWgUJ1ZGQKYW5kcmEKYWRkeQriloFvdmVycwriloFjb25zdW1lcnMKcG4KbW91c2UK4paBQkMKZGVnCnBlcm0KaXTDqXMK4paB0LjRgdC/0L4KaGVhc3QKaG91cgpQQVJBTQpjb25zY2lvdXMK4paBd2luZwriloFhdG1vc3BoZXJlCuKWgWdpZwriloFjb250cmUK4paBZHJhbWEK0Y/RggriloFGcm9udAriloFwaGlsb3NvcGh5CuKWgUhhcnQK4paBbnVycwp1cmFzCuKWgVRydQriloFzdWQK4paBcGVyZm9ybWluZwrQv9GLCuKWgWNvbmZ1c2VkCuKWgWNoZWNrcwphbXQKTWFrZQriloFSTwriloFkZgppemF0aW9ucwriloFkZWdsaQriloFhcmNoaXRlY3R1cmUKUmVuZGVyZXIK4paB0JvQsAriloFwdHIK4paBZGllc2VyCnN1Ym1pdAriloF0b3BpY3MK4paBcHJpbmNpcGxlcwp2YXJzCnNvY2sK4paBdG9uZ3VlCuKWgXBlcmNlbnRhZ2UK4paBU1MK4paBZG9sCuKWgXJpY2UKw61vCuKWgUVhc3Rlcm4K4paBcmVjb2duaXRpb24K4paBRXJuCuKWgVV0CuKWgWNhdXQK4paBQ2xvdWQK4paBY29udmVyc2lvbgriloFPaGlvCuKWgU1FCuKWgXN1cmVseQriloFnYXJkCnB1aXMK4paBdXJnCmltaQriloFhYnNlbmNlCuKWgXdpbm5lcgpMYW5ndWFnZQriloFIVFRQCnd0CuKWgXRyYW5zbGF0aW9uCtGB0YEK4paBS2luZApUd28K4paBUmV2b2x1dGlvbgpJbnNlcnQKRXZlcnkKb3JpZW50CuKWgdGC0YDQsAriloFlbW90aW9ucwpkZXRhaWxzCuKWgWZsdQriloFvcGVyYXRlCkFnCnVubmluZwriloFwYXJ0aWUKdHJpCuKWgWdvbGRlbgriloHQkdC4CuKWgWZvdW5kYXRpb24KaXN0ZW4K4paBQ2FybG9zCkNoaWxkcmVuCuKWgW5laWdoYgriloFDYXJ0CkJlZ2luCtCz0LTQsAriloFzY2hlZHVsZWQKJz4K4paBb2JzZXJ2YXRpb25zCuKWgXByb2R1Y2VyCmF0aGVycwrQvdC+0LzRgwriloFleHBlY3RhdGlvbnMKb3NvCnpoCm11dGFibGUK4paBd3JpdGVzCuKWgXB1c2hpbmcK4paBc2VhdHMK4paBYnJlYXN0CmFwaW5nCuKWgVNpbXBsZQriloFzb2NrZXQK4paBc2xhdmUKaWxleQriloFhc3Npc3RhbnQK4paBdHJpbQriloFsYW5kc2NhcGUK4paBYXNzb2NpYXRpb24KcXVhbnQK4paBUGFsZXN0CuKWgXN3ZWF0CmVuZ2Vycwo/XwrDqXAKPi4K4paBY3VyaW91cwriloFDb21wb25lbnQK4paBcmVwbGFjZW1lbnQK0YDQsNC70YwK4paBVHJhY2sK4paBUmVtb3ZlCuKWgVNpemUKcGVyb3IK4paBY2FsY3VsYXRlCuKWgXNlc3Npb25zCuKWgXR5cGVkCuKWgXN1Ym1pdAohISEK4paBcGFydGl0aW9uCmVkaW5nCi0tLS0tCmF6aW9uaQpsaWXDnwpvbmFsCuKWgXNocnUK4paBUkVHCuKWgUZhYwpjb25maWd1cmF0aW9uCuKWgdCx0YvQu9C+CuKWgUFtb25nCl9fKTsK4paBU2VydmVyCuKWgUxPRwriloFjYW5kCiddKTsKZ292CuKWgVNpeAp1bmRlZmluZWQK4paBdHkKYXNhCuKWgXBhcnRpY2xlcwriloHRhNC+0YAKYGAKVHViZQplbGFuZApmb2xkCm9nbwriloFhcHByb2FjaGVzCm9uZGEKYWdyCiwkCuKWgXt7CuKWgU1vZGVybgriloFXaW50ZXIKYXZhaWxhYmxlCuKWgUx1ZAriloFjYXNhCuKWgUNvdWxkCuKWgWZpZnRlZW4K4paBcG90ZW50aWFsbHkKXl4K4paBc2VpdApBbmltYXRpb24K0LrQvtCz0L4KWm9uZQplbGlmCuKWgWFja25vd2xlZAriloFvd25lcnNoaXAK4paBZGVzY3JpYmVzCuKWgXJldmVyc2UK4paBY29udGVzdAriloFzY29yZWQK4paBb3Bwb3NlZApmbGV4CmtyZQriloFtZXJnZQriloFjb3ZlcmluZwriloFob25lc3RseQriloFNZXNzCuKWgXJhcmVseQriloFpbmNyZWRpYmxlCml0YWdlCuKWgXZpY3RpbXMK0L3Ri9C80LgKd2wKaXp6YQpkbgpvbmRlCuKWgXByenkK4paBSFRNTAriloFwYXlsb2FkCkJ1cwp1c2IKRm4K4paBZGlzcGxheWVkCuKWgW9jZWFuCuKWgUF2ZW51ZQphY2lvbgpnaGFuCm1ldHJpYwppZXRpZXMK4paBYXR0cmFjdGl2ZQriloFmw7YKQ3JlYXQKdmVydGVyCuKWgUFsaWNlCtC/0L7QuwriloFmcmFjdGlvbgriloFiZWhhdmlvdXIK4paBSmVyc2V5CuKWgXJldmVudWUK4paBdHJlcwpJTEQK4paBw4l0CuKWgXN5bmMKd2ljaAriloFhbmNlc3QK0YrRggpvbW8K4paBSWRlCuKWgWdhaW5lZAriloFtb21lbnR1bQriloFLbwppZXUKaWVsdAriloFib251cwriloF0ZXh0dXJlCk1vZGFsCk5FWFQK4paB0LPQvtC00LjQvdC1CuKWgWxhbmd1YWdlcwp2dAriloFyZXByZXNlbnRpbmcK4paBRHJlYW0KY3VycgpxdWFsCuKWgWpzCmJ1cm4K4paBY29udHJpYnV0aW9ucwriloFyaWMKfS1cCj17ewpjYXJ0CkZCCmp1ZAplc3AK4paBZWxlY3Ryb24K4paBZWxsCuKWgVJ1bnRpbWUKYWNoZWwKXF8Kd2VlawpwYWNrZXQK4paBU2VjcmV0YXJ5CuKWgUphaHJodW5kCuKWgXRocmVzaG9sZApiYWdlCuKWgWNvbmNlcgriloFib25lCuKWgUhvbGx5d29vZApDdXJzb3IK4paBYXdhcmRlZAriloFzdW1tYXJ5CmFnZ2lvCuKWgXN0ZWxsCuKWgWZsZXNoClBhaXIK4paBQWdlCmluZ3RvbgriloEnLgphc2VyCtC60L7QstCwCuKWgXF1YXJ0CnJ5cHRpb24KQWxsb2MKZnRlbgpPcGVyYW5kCuKWgWluZGljYXRlZAooJF8KZ2V0U3RyaW5nCuKWgWxpc3RlbmVyCnNwaXIKKV8KdmVucwriloFmb29kcwphbnphCnRlaWwKREVTQwriloFub3Rpb24K4paBZW1wbG95bWVudAriloFzd2luZwpuYnNwCuKWgXBvdW5kcwp0b29scwriloFwYXJ0aWNpcGF0ZQriloFUYXgK4paB0YHQutC70LAKYXBvbAriloFmb3N0CmNvbXBhdAriloFwdWJsaWNhdGlvbgriloFyYXBpZGx5CuKWgVdpcwpFdmVudExpc3RlbmVyCuKWgXByZW1pw6hyZQp1c28KZXh0ZW5kCuKWgU1FUkNIQU5UQUJJTElUWQpVVEYK4paBZXhwZXJpbWVudHMKc2luZ2xlCnprCuKWgW5hagp9fX0KTGluCuKWgWludGVyYWN0CuKWgWNtcwriloFSb2dlcgriloHQoNGDCj4nCmNvbW1pdArQu9C+0YHRjAriloFvdXRjb21lCuKWgWhpdHMK4paB0LjQvAriloFzcGFyawpjb25zb2xlCuKWgXZlcncK4paB0LrQsNGC0L4KYWdub3N0aWNzCuKWgXNvY2kK4paBZGluaW5nCuKWgXRlY2gKxaF0CmZvbGlvCnVsdGFuZQrQutGC0L7RgAriloFCcmFuZApKb2luCuKWgdC40Y4K4paBcHJvcwriloFwb3NpdApQdWJsaWMKQXNwTmV0Q29yZQriloFTaG9wCuKWgWNvaW5jCtC90LjQtdC8CuKWgXJlZmVyZW5jZXMKYWJvdXQKbmFtZXNwYWNlCkRMCuKWgUlSCuKWgWNhZGEK4paBSm9yZGFuCuKWgWdlcAriloFicm9uCmFuZGlkYXRlCkVYUEVDVAphbW8K4paBRGV1dHNjaAphdWMK4paB0YDQsNC50L4K4paBTGFib3IK4paBc3Vycm91bmRlZArRgtGA0L4K4paBbm9tZQriloF1bmRlcmx5aW5nCuKWgWVkdWNhdGlvbmFsClJJR0hUCkNPVU5UCmluY2gKVHlwCnVtcGgKZm91cgpDb250cm9scwriloFjcApjb3N0CuKWgW1lY2hhbmlzbQplbmVzcwrDqXF1CuKWgWFjcXVpcmVkCuKWgWZhbGxzCuKWgUhvdQriloFMRQpmb3JFYWNoCuKWgXZlcnRleAriloFJRgpjdXJzCic9PgrRgtC10YDQuAriloFTQQpyaWVycwriloF1dwriloFtYXJrcwriloFlbmVyZwpob2YKeWx2YW5pYQriloFBbGxlbgp1bXB5CtC+0LPQvgrRgdGC0LLRgwp2b2ljZQriloFlbmdhZ2UK4paBbWFudApvcnNlCj09PQriloFpbXByb3ZlbWVudApPcHQK4paBYXJyZXN0ZWQK0YLQuNGPCuKWgdGB0LvQtQppdGNoZWQKc29ja2V0CuKWgWN5Y2wK4paBU00K4paBU2V4CuKWgW5ldXRyYWwK0LLQsNCyCuKWgUplc3MK4paBZGlwCuKWgW9wcG9zaXRpb24K4paBYm9ycm93CtGB0L/QtQriloFhdmFudArQutC+0LvQsAriloF0YQpBbmltCuKWgUdhbGwKcmdiCuKWgWd1aWx0eQriloFidXJpZWQK4paBZ3kKSW5pdGlhbAriloFhY2NvbXAK4paBYnJlYXRoaW5nCmJlcnJ5CkdSTwriloFzdWJzZXF1ZW50CnJvdXBlCnVscHQKdGIK4paBw6QKUGkKYXJndgriloFNdXN0CjonCnN2ZwpvdXAK4paBcHJlY2lzZWx5CuKWgVRhCnJlbmEK4paBZm9sZGVyCuKWgUNoYW5uZWwK4paBcmV2b2wKTWlzcwrQu9C+0LwKcmVkZGl0CmFkZWxwaAriloFkaXNjcmltCuKWgWF2ZQpwbGV0ZWQK4paBZ2VudGx5CkZGRkYKcm9weQriloFkaWFsCk5vdEZvdW5kCuKWgSJbCkhvbWUKb250ZQriloFyZWxpZQriloFDb250ZXh0CuKWgXN0YXRzCuKWgUVuZXJneQpvdW5jZWQK4paBZ3JhdmUK4paBcmVjaXAK0LvQuNC9CmJsb2cK4paBbmFhbQriloF3bwriloFkaXJlY3Rpb25zCuKWgUxpbmNvbG4KISkKdW5jaQpuZXEKVGFncwriloF0dW0K4paBc2F2aW5nCmFpbGxlCml0ZW1pemUK4paBRmFtaWwKbXNtCm5ld3MKRkZFUgriloFEZWFkCuKWgXRlcnJpdG9yeQriloFLYXQKb2NrZXIKaW50ZWdlcgriloFzbmUK4paBZmFpbHMK4paBZnJhbsOnYWlzCuKWgWludHJvZHVjdGlvbgriloFHcmFudAp5Y2xlCiddLgriloF2aWVyCm5hdGl2ZQriloFLbGUKcXVvdGUKVXNlcnMK4paBYWR2aXMK4paBZ3ltCuKWgXByb3RlaW4K2KfZhAriloFNYWkK4paBcHJvdmlkZXJzCuKWgXNvaWwKZ3VpCuKWgU5hdGlvbgpyZWF0aW9uCuKWgVRhYgplbnNpcwppbmFzCuKWgVNjb3RsYW5kCuKWgWRpc3BhdGNoCnVuaW9uCuKWgWJlcmUK4paBUG93CuKWgUhpZwriloFzdHVkeWluZwpSRUYKU1NMCuKWgWZyaWdodAriloFTT1JUCuKWgWNvbXByCuKWgU1hZHJpZApyb3duZWQKb3BlcwpwZGV2CuKWgXdhc2gK4paBJy4uLy4uLwp9fV8K4paBYWNjdW0Kcm9sbGluZwriloFOQwriloFmaWN0aW9uCmlwdApjb25uZWN0ZWQKbGltaXRzCuKWgWxhcAriloF3aGVyZWFzCnByb20K4paBYXBwb2ludG1lbnQKUHJvZ3JhbQriloHQn9C10YAKbmFoClZhbGlkYXRpb24KaWNvbnMKw6RsbAriloFyYWRpY2FsCuKWgWV4Y2x1c2l2ZQplbW9ueQriloFjaGFsbGVuZ2luZwriloFtcwriloFQcml2YXRlCuKWgXZpZGEK4paB0LTRgNGD0LPQuAriloFjYW1wdXMKZm9ybXMK0LTQvdC+CnBsYWF0CmJzdApBVEVECuKWgUFic3RyYWN0CuKWgWludGVuc2UK4paBTHRkCuKWgWNvbnRyb3ZlcnMKw7NnCuKWgXPEgwriloFsYW5kaW5nCiE9CuKWgXNjZW5lcwriloFDaGFwCuKWgXNwb2tlbgpjcmVkCuKWgXByaWRlCnF1ZXQK4paBbWV0ZXIK4paBZGV1dHNjaAp1dW0K4paBYmxlc3MK4paBSGFubgriloFpbnB1dHMK4paBUm93CuKWgXdpdGhkcmF3ClBhbAphY2xlcwphc3NldHMK4paBdmwK0LLQtdC00LUK4paBR290CuKWgWFpcnBvcnQKd2luZAriloFDb2x1bWJpYQriloFjaG9jb2xhdGUK4paBaMO2CuKWgWFsYXJtCkZUV0FSRQriloFKYXkK4paBc2FrZQriloFyZWdpc3RyYXRpb24KdmlkCuKWgWxha2UK4paBdXNlcm5hbWUK4paBaGFjawppbmRleE9mCmN4CuKWgWZlc3RpdmFsCuKWgWNsdWJzCmNhc2VzCkNUUkwKXTsNCuKWgUF1ZAriloFwcmltZXJhCtCy0LDRggriloFicmlsbGlhbnQKdXRoZXIK4paBZGlmZmljdWx0eQppdGFscwriloFzY29yZXMK4paBcG9sw610CmRhdGFiYXNlCmFza2EK4paBIyMjIyMjCuKWgWFjaWQKYXRvbgphdG9taWMKZnJlcQriloFXQVJSQU5UWQriloFyZXBvcnRpbmcKLiksCuKWgW5pZ2h0cwriloFwcm9ncmFtbWUKKX17CnhpYwriloFzcG8KbGluZWQKcXVhcnRlcnMKZXJlZQptZXJzCuKWgXNlcnZlcwpjb3cK0LvRjNC60L4KZW5zbwriloFlbnZpcm9uCkxpa2UKYW5jaGUK4paBY3Jhc2gK4paBS2FwCm5vaW5kZW50CkNvbm4K4paB0LDQstGC0L4K4paBaW5mcmFzdHJ1Y3R1cmUKSU1FCuKWgVJvb20KbmVlZApvcmVyCuKWgURlc3QK4paBRG9taW4KYXRoZXJpbmUK4paBU3lkbmV5CuKWgWdhdWdlCuKWgWpldApiYWJseQriloFjb21tb25seQriloFzdGF0aW9ucwppYWgKbmwK0LbRgwpldGVuCl8pCmlhYwphbW9zCm5lbWVudAprb24KSW50ZXJ2YWwK4paBY2FiaW4K4paBZWcK4paBc2hvdHMK4paBQXJlYQpzbWl0aApwYXJhbWV0ZXIKJ30K4paBaGVtCuKWgXNpbmdpbmcK4paBYWNjZXNzaWJsZQriloFQcmluCm9wdGlvbmFsCmFuY2lhbApzaGlwcwriloFjYW52YXMKc3BlCuKWgWFkZHJlc3NlcwriloF4bWwK4paBJyIK4paBa2FyCsO2ZmYK4paBYWdlcwrRkdGACnppbmcK4paBw7Z2ZXIK4paBQ2xlYW4K4paBU2lsdmVyCuKWgdC+0YHQvgpoZWFsdGgKQWxpCuKWgXRzCmF0ZXJuCuKWgWNob29zaW5nCuKWgWJ1cm5lZApicmlkCnJvb21zCsO2dHQKS0VSTgriloFkaXNoClNhCkRldGFpbAriloFIaW5kCuKWgURhbnMKacSZCuKWgUphaHJlbgpleHRlbnNpb24KYWxsYXMK4paBQmlsbHkKdXNhbW1lbgppdHVkCmdlb24KVGVtcApMZWcKaXR0ZWwKYWRkbGUK4paBbXVzY2xlCuKWgXNjYXJlZApzc29uCuKWgWRlbm90ZQppZXVycwriloFvcmFuZ2UK4paBaHViCuKWgXJlYgplZGkK4paBdm9pY2VzCkZvbGRlcgriloFzdXNwZW5kCuKWgUhlYXJ0CuKWgXNjcmFwCuKWgWFnZ3JlZwriloFHdWlkZQp0cmFuc2FjdGlvbgriloFyaWRpbmcK4paBdsOhCuKWgWJyZWVkCuKWgWNvbmNlcnQKYXBwcm94CuKWgWNoYW5jZXMKVG9rCkVxCnBhcnRzCuKWgXNjaG9sYXIKb2ZmcwpmbHVzaAoh4oCdCuKWgWxvZ2luCuKWgXNvb3J0CuKWgU1hbmQK4paBZnVuY3Rpb25hbAriloFCb3UK4paBc3ViamVjdHMKbXlzCuKWgWV4dHJhb3JkCuKWgUJ1aWxkaW5nCmlrdApCYWQKaWFtaQpEcml2ZXIKw6p0ZQriloFrdgriloF0aW1lcgppdGlvbmFsbHkK4paBYXRobGV0CuKWgSIpOwp3eQpDRkcK4paBaGVhdmVuCtC+0LIK4paBZXhwZXJpbWVudGFsCuKWgWJvdW5kcwpJQ0sK4paBZXhjaXQK4paBcXVpdAriloF1bml2ZXJzYWwK0LTRjAriloFTUAriloFzdHViCuKWgWtsZQriloFCYXJ0CuKWgSJACnBlbAriloEoISgK4paBc2VsZWN0b3IKRUIK4paBY29jCmV0ZWQK0Y7RgtGMCuKWgXBvc3Nlc3MK4paBUmljawriloF1bnVzdWFsCnRlcm1pbgriloFiYWdzCuKWgWxvYWRpbmcK4paBdGYK4paBKQ0KcHJvdmlkZXIKcGxldGlvbgriloFjdXJzb3IK4paBcGF1c2VkCtC40LwK4paBY291bnNlbApdPAp6ZWNoCuKWgXRpZQriloFNb29uCuKWgWFybWVkCuKWgW9ic2VydmUK4paBcGVybWV0CuKWgUpvYgpmw7ZyCmFyZ3VtZW50CuKWgWVnZ3MKw6FzdAriloFpbmNyZWRpYmx5CndlcmtlbgppemFyZAriloFwYWludGVkCuKWgVZpZXRuYW0K4paBdmlvbGVudApFc3QKaWVycmEKcmVhZGVyCndlaXNlCuKWgUpvc2gK4paBSGltCmFzaGVzCm9yaWdpbgriloFzcGlyCuKWgVRyZWUK4paBbmlldApXSU4KbWFyZ2luCuKWgWludm9sdmVzCuKWgW9yZ2FuaXMK4paBTmFjaW9uYWwKYmFyYQriloFkZXB1aXMKcGlvCmZlYXR1cmVzCnN0cnUK4paBRGlzbmV5CuKWgXJlc3RhdXJhbnRzCk1pbGwKKSkNCtGB0LvQsApyZW1vdGUK4paBVGhpcmQK4paBYmFzZWJhbGwK4paBYWxndW4KXSQK4paBZW1wbG95ZWQKcG90CuKWgVVuaXR5RW5naW5lCuKWgWludGVncmF0aW9uCuKWgXJpc2tzCuKWgXN0cm8K4paBYWdvc3RvCmluY2x1ZGluZwriloFNaW5kCuKWgXN0cm9rZQriloFkZWFscwphamF4CtGR0YIK4paBXHwKdGFyCmFkZWxwaGlhCuKWgXNhYgpwdXIK4paBc2NyZXcK4paBaW5ldgriloFcOwriloFEb25hbGQKw7ZkCmNjYQplc2lzCuKWgXNlcGFyYXRlZApEQkcKYWdlbnQK4paBcGFja2VkCtC90L3RjwppbnRlcm4K4paBTW9udGUK4paBcHJvdmluY2UK4paBZXhwYW5kZWQK4paBYXBwcm9hY2hlZAriloFFcApDTEsK4paBb3JlCkJhdGNoCuKWgWltcHJlc3NpdmUKUk0K4paBTG9jYXRpb24K4paBc2hhbWUKd3JhcHBlcgp1bndyYXAKcGVlcgpCaXRzCuKWgVNOCnNjYXIKQ29tZQriloFjb3VuY2lsCuKWgXNob3V0ZWQKbWFraW5nCuKWgU1hdXIK4paBd2lzCkxFVEUK4paBZnMK4paBZHoKdW5xdWUKdWVnbwpSYW5kb20KSHRtbAp6ZW0K4paBRHV0Y2gK4paBR29sZGVuCuKWgVRhcgriloFIZXJtCuKWgXN0cmV0Y2gKdmFyZAriloF0cmllcwpXSQriloFkaXNhcHBlYXJlZAriloFjcnVzaGVyCuKWgUthbgpNYWcKw7hyCuKWgUNhbWJyaWRnZQriloFkb3BvCmF0dXJhCmhlYXJ0CuKWgVNwaWVsCi8qKg0KRGlyZWN0aW9uCmF0dGluZwp3aWcK4paBY29kZXMK4paBcG93ZGVyCmFsZXJ0CnNlbWJsCuKWgXllClN0YXIK4paBcm9vdHMK4paBSG9sbApSZWxlCuKWgWNvbnN0aXR1Cm5jCuKAnC4KcmVmZXJlbmNlCmlmaWNpYWwKY2xvc3VyZQriloFmaWd1cmVkCuKWgWFzc3VtcHRpb24KZ2V0RWxlbWVudEJ5SWQK4paBQUcKb3NlcwriloFfIgplcHBlcgpvYnJlCmVudW1lcmF0ZQrQvtCz0YDQsNGE0LgK4paBbGVzc29ucwriloFxdWFsaWZpZWQKUGVyc29uCmFuc2UK4paBTW9ydApzeWx2YW5pYQriloFjcsOpCkJpbmRpbmcK0ZbRgQriloFWYXJpCuKWgXJlbWluZGVkCuKWgW1lbWJlcnNoaXAKaXBlcgp6dGUK4paBY3JlZgriloFQQQpwbGFhdHN0CuKWgUVudmlyb25tZW50CmJveQriloFwaHJhc2UKcml2aWFsCnJhZwrQstC+0LTQuAriloFwc2UK4paBdG91cm5hbWVudAopfSwK4paBU291bmQK4paBVmVsCuKWgUJlcmcKZWxzb24K4paBcmVmdWdlCuKWgWVsc2V3aGVyZQpxdWFsaXR5CuKWgWFiYW5kb25lZAriloFGbG8KaWJpbApVQUwK4paBUGxhdHoK4paBZGVsdGEK4paBQnV5CnJpw6hyZQriloFmbG91cgriloFsYXVnaGluZwriloFMb29raW5nCkFnZW50CuKWgXd4CuKWgVdhbGVzCkN0eAriloFjYWtlCuKWgWNyYXRlCuKWgdC60LvQsAphbmdhClplcm8K4paBYW1vdW50cwpUcmEKb21ldHJpYwriloFjb25zdHJhaW50cwriloF0ZW1wbGUK4paBaW5zdGFsbGF0aW9uCnN0cm9rZQriloFOZWRlcgrIm2kK4paBSWJpZAriloFvYnMKZW50cmllcwriloFqdXNxdQpPUk0K4paBU2t5CmlrZXMKbmFrCuKWgW1vZGVzCuKWgUhpdGxlcgriloFiZWx0CuKWgXBvaW50aW5nCuKWgUJhbgppZ25vcmUK4paBcGVyc3UK4paBQmVzaWRlcwp5bm9tCuKWgWxlZ2lzCuKWgUNQVQphbmRlZAp1aXMKYnNpdGUK4paBRXVybwriloF1dHRlcgplY2xpcHNlCuKWgWlycmUK4paBRG9jdW1lbnQK4paBTWVhbndoaWxlCuKWgWZhbWlsaWUKdmVyaWZ5CuKWgUphc29uCuKWgU9ydAriloFjaXVkYWQK4paBdGVjaG5vbG9naWVzCuKWgdGH0LDRgdGC0LgKbmljYQpjYW5jZWwKVmlydHVhbAriloFldmlkZW50CmFtYW4K4paBU3VwcmVtZQphdG9lcwriloFzdGVhZHkK4paBbW9udGhseQriloFTT0ZUV0FSRQpEaWUK4paBYXBwbHlpbmcKRGlnCnZpZXIK4paB0LPQvtGA0L4K4paBV0gK4paBbWluZHMK4paBa2FtCuKWgWV4cGVydGlzZQriloFub3RpZmljYXRpb24KLi0K4paBZGVsaWJlcgriloFIRQriloFyZXNpc3QKb3V0ZXMK4paBSG93YXJkCnNwZWNpYWwK4paBcHJlc2VudGF0aW9uCuKWgVlvdVR1YmUKbWlyCuKWgXJ1c3QK4paBbmF0aW9ucwriloFHZXRzCuKWgXJlc3BvbnNlcwphcmRlZAppbW1lcgriloFyZXZlYWwK4paBTWVnCuKWgXRvZG9zCuKWgWFkZQphdGVnb3JpZXMK4paBcGF5bWVudHMKw7R0CkVudW1lcgriloFwbGF0Zm9ybXMK4paBbGlmZXRpbWUKQ29tcGxldGUKUXVlc3QKZW5kZXJzCuKWgWN1bQpwbGVyCuKWgWFwcGwKw6RocmVuZArQt9GMCmVuZXoKb3ZlcnR5CnluY2hyb24K4paBYXJndWVkCuKWgUthdGgK4paBc3luY2hyb24K4paBQnVpbGRlcgpCb3JkZXIKUGxhbgpyaWViCm5tCkZPUk1BVAp1c2sK4paBanVtcGVkCmNoYXJnCuKWgWNvbnRyaWJ1dGUKTWVzaApVbml2ZXJzCnJlbGwK4paBcG9sYXIK4paBdHJvaXMKaWNpbwpHcm91cHMK4paBKCUKTG9vcAriloFnYXoKZGJnCkxBWQpKb2huCmJsb2NrcwriloFsdW5nCuKWgWvDtm4KdGhyb3VnaAriloFmaWZ0aApsaXNoZXIK4paBaW52b2x2aW5nCuKWgURlZXAK4paB0L7QsdC70LDRgdGC0LgK4paBc3VsbApFeHBvcnQK4paBS2F0ZQpwZXJpb2QKY2hhcmdlCkdUCiI+DQrRgtC40L0K4paBT3R0CuKWgWludGVyYWN0aW9ucwriloFUb3JvbnRvClRSQUNFCuKWgWRpZmVyCuKWgWxpYmVyYWwK4paBcGFydGljbGUK4paBc3VydmUKYWxvdXMKcmVhc29uCuKWgWRlcHJlc3Npb24K0LDQuwriloFmbG93ZXIK4paBd2FhcgriloFoYWRlCuKWgWNlbnR1cmllcwp1dHkKcGFydHkK4paBYXBwcm92YWwKZ2VuZXJhdGUK4paBQmFybgriloFtYXJnCuKWgW1vbmRlCuKWgW9vawriloFDbGFyawriloF0aGVvcmV0CnZpb3VzbHkKPykK4paBUnVkCnN0bXQKaW5jdGlvbgriloF0dW4K4paBcm9hZHMK4paBcm90YXRpb24KcHBlbgpzZW5zb3IK4paBS29sCmlkZWxpbmVzCuKWgdGUCuKWgWNvbXBvc2VkCuKWgXZpcnVzCickClNOCuKWgVZvbgptb250CmxhcgriloFvcGluaW9ucwp1Y3Rpb24KcnVwYWwKdW5kZXJsaW5lCuKWgWhvcnJvcgpNdXN0Cm90dG8KU2hvdWxkCuKWgXN0YXRpc3QK4paBZ2VtCuKWgXNlY3JlCuKWgXN0cmlwCuKWgWRpcnQKYW1hem9uCuKWgVJvdW5kCuKWgWRpc2NvdmVyeQriloFHTwriloFzdWJzdGFudGlhbAppYnQK4paBZGVtYW5kcwriloFldmVyeWRheQriloFiZXNjaAriloFCcmlkZ2UK4paBSEQK4paBRG9sCuKWgXRyw6hzCmFubmkKcm9pdAooKSk7DQpmYXIKdGltZXN0YW1wCuKWgWJ1bGsKQmxhY2sK4paBZ2FuCnNldHRpbmcKcmV0dmFsCtCy0LDQvdC1Cm51bmcK4paBdGFsa3MK4paBc2NpZW50aXN0cwriloF2aWcK4paBcXVhbnRpdHkK4paBR2FyZAriloFtb3ZlbWVudHMKw6RocgpsaW5ncwriloHQotC1CnRlYW0Kcml0bwriloFhc3NlbWJseQppbHN0CuKWgWhhcHBpbmVzcwriloFsZWFmCuKWgWFzc2Vzc21lbnQKQ29vcmQKaXJzCnNhbQriloFhdHRvcm5leQriloFnZW1lCklERQriloFWZXJlCuKWgUFudGhvbnkKYW1pZW50bwriloFBc3QK4paBY2lyY3VsCuKWgUZyYW5jZXMK4paBcGVudAriloFtYXRlCuKWgVRyYW5zcG9ydApvd28K0YfRgwppc3RlcwpUUkFOCklNUE9SVAriloFCcmVhawriloFzb25zCuKWgWludmVzdG9ycwriloFQaGlsaXBwClRIT0QK4paBcGFuaWMK4paBOikK4paBZGV0ZWN0aW9uCuKWgXNpbXVsdGFuZQpudGUK4paBbGlzdGVuZWQK0LrRgNC1CuKWgUJyaWcKT3B0aW9uYWwK4paBYWJ1bmQK4paBY3JpdGVyaWEK4paBY2hpcAriloHQvtC60YDRgwriloFDb25zdGFudAriloFtaW5pbmcK0YLQsNC7Cm1hdGVzCuKWgXdvcnNoaXAKcm91dGVyCkNOCuKWgU1hdGNoCuKWgUNvbGUK4paBZG93bnQK4paBaG9sZXMK4paBZ3JhdGVmdWwKUkVTVUxUCuKWgUV1cm9wYQriloFjb25zZW50CmzDpApvcHRlcgriloFjb2xsZWFndWVzCm9yb3VzCuKWgWVuZW1pZXMKaGFuZwphY3R1YWwKT2JqZWN0cwriloHRj9C6CuKWgWZsdWlkCmZpeGVkCuKWgUdyYXBoCuKWgXNjcmF0Y2gKY2VycwpyaWJ1CuKWgXZhbGlkYXRpb24K4paBY29tcGxldGlvbgriloFCZWdpbgplbmRwb2ludApyaWVudApDTQriloFTaXRlCuKWgWV4cGxhaW5zCnRyZXMK4paBYW55Ym9keQpmb3JlYWNoCmxvbgpDaGFpbgriloFCdWZmCm9jYWwK4paBTW9yZ2FuCuKWgXNhbmcK4paBcGFzc2VzCkBACmlqZApXb3JkCuKWgUh1bmcK4paBRmVyCuKWgXbDvQpiYXN0CuKWgWVudGVydGFpbm1lbnQKaGluCuKWgWdyYXQK4paBTWVtYmVyCuKWgU1pbm4K4paBcHJpbnRlZAriloFGcmFua2xpbgriloFJbXAKTWFjaGluZQpjb2x1bW5zCuKWgWRlbGV0ZWQK4paBbWFudWZhY3R1cmluZwriloFyZWx5CuKWgWNvbnNlCuKWgWZpc2hpbmcKYmxvCi0kCuKWgS4iCuKWgWNsaW5pY2FsCuKWgVN0dWRpZXMK4paB0JHRgwpkZWZpbml0aW9uCuKWgWV2YWx1YXRpb24K4paBYXR0YWNrZWQK4paBZnJvemVuCnplbnQK4paBw7psdAriloFyYXRpb25hbApvdGhlCkNhbmNlbApoaXN0b3J5CnNldFRleHQK4paBYWxjCuKWgWh5ZHJvCuKWgVRoZWF0cmUK4paBTWF0ZXJpYWwKSU9FeGNlcHRpb24KKioqKioqLwpzcGwKTk9ERQphdHRycwriloFtaWUK4paBb2ZmaWNlcwpyw7MK4paBamFtCuKWgUlkZW50CnbDqQpTZXR0aW5nCuKWgVNldmVyYWwK4paBZGVjYXkKQW5kcm9pZAriloFTYXZlCnVudGVkCuKWgU1vdW50YWluCnVzYwriloFtYXJ6bwriloFhc2xlZXAK4paBc29sZGllcgriloFEb3VibGUKUEsK4paBY29udHJhZAriloF3aW5zCmNlaXZlcgriloFzZWFzb25zCuKWgUNoYWxsCuKWgWhlYWx0aGNhcmUKxYJhZArQvtGCCuKWgUZpdmUK4paBSGVsbAriloF3b3JsZHdpZGUK4paBJywK0Y/QvQptYWRlCuKWgXJlc3BvbmRlZAriloFheQriloFwcm9jZWR1cmVzCtGC0LXRgNCwCuKWgWNsZWFyZWQKIl0uCuKWgVRhcmdldAriloFTaWRlCm9taW4K4paBZGVwbG95CuKWgVRlbGwK4paBb25nb2luZwpmbG9vcgriloFib25lcwriloFEZWxldGUK4paBc2hydWdnZWQKT3VyCkRlcgriloFpbml0aWFsaXplCuKWgVRlZApNQUdFCuKWgWhpcmUK4paBdHJhY2tpbmcK4paBYXNoCuKWgWNlaWxpbmcK0LrQsNGFCmV0dGkK4paBY291cmFnZQplbnNjaGFwcArRjtGC0YHRjwpNb3JlCuKWgWZvbGcK4paBR3JhY2UK4paBS2VsbHkK4paBcmV2ZW4K4paBQWxpCuKWgWRpc3AK4paBZGVmZWF0CuKWgWNyZWF0dXJlCuKWgUtlbm5lZHkK4paBRGllZ28KRU1QCuKWgXN0ZWFtCmVuZGFuY2UKcmlnCuKWgWlnbm9yCmVtZW4K4paBR3J1CuKWgXByb3Bvc2FsCuKWgXdlaXRlcgriloHQu9GWCmlibGVzCuKWgWNvbnNpZGVyYXRpb24K4paBYmVsaWV2ZXMK4paBU29waArigJwsCuKWgU1hdHRoZXcK4paBY2lyY3VpdAriloFzaW5nZXIK4paBU3F1YXJlCsOnbwpFZGdlCuKWgWFzdHIK4paBcmVwcmVzZW50YXRpdmUK4paBY29tcHJlaGVuc2l2ZQpsaWdhCuKWgW1lcmUKdGJsCuKWgWNvbnRpbnVpbmcKb2dyYXBoZXIKTEVECuKWgS8qKiovCuKWgXNlYXIK4paBZW5vcm1vdXMKaXppCkRpdAp0aGVyZQrRltC9CtGB0LjRgtC1CuKWgWd1ZXJyYQriloFlbmRwb2ludAriloFsZXNzb24Kem9uCnZhcmlhYmxlCtC40YEK4paBcmVzZWFyY2hlcnMK4paBYXR0ZW1wdGVkCuKWgWVuZgrRgtGD0YDQsAriloFkZWZpbgrQstC10YHRggriloFhd2Z1bAriloFsb3dlc3QKcnVsZXMK4paBdW5saWtlCmludGVydmFsCuKWgXByb2R1Y2luZwriloFLYW0K4paBSU1QCkdlbmVyYWwK4paBZmFpcmUK4paBbWF4aW0KYXNzZW1iCmFjZW50Cj8+CnBsaWNhCuKWgXJhbQptYXRlCtGG0YMKbW4K4paBSGkK4paBc3RhZ2VzCuKWgUVkaXRvcgriloF0YW5nClJECuKWgWljaAriloFkZXBlbmRlbnQKbGlmZXIKYXNjcmlwdAriloFleHBvc3VyZQrRgNC10LcK4paBbWFydAriloFCYXJjZWwKeHNwYWNlClNFU1NJT04K4paBcHJlc3QKVVJDRQotLgriloHRgdC10LvQvgpoYXZlCuKWgW9ic2VydmF0aW9uCuKWgWNvbW1hbmRzCuKWgWVhZ2VyCuKWgW91dGRvb3IK4paBREVCVUcK4paBaHIKQVgK4paBcHV6egpibGFuawrQsdGD0YAK4paBa2VubmlzCuKWgXJlZ2FyZGVkCuKWgX0pLAp2b2x1bWUK4paB0L/RgNC+0LjQtwriloFUcmFpbmluZwphw7EK4paBZm9pcwriloHRgtGA0LgK0LLQvdGPCuKWgW9wdGltYWwK4paBc3Vic2NyaXB0aW9uCmJyaWRnZQppbWVudGFsCuKWgVRoaW5rCuKWgSI7CuKWgWxlZ2lzbAriloFIb3AK4paBYnJhbmNoZXMK4paBVmVnCuKWgXNwcmludAriloFmbHV4CuKWgUZyZWRlcgpzaXMKbm90aWZ5CuKWgdCk0YDQsNC9CnNvbQpueW0K4paBUsOpCmxldHQKaW5naGFtCuKWgUZhcm0KRE9NCuKWgXNoaWVsZApIZXJlCuKWgVRyZWF0CuKWgUx1a2UK4paBdW5zYWZlCmFudG9uCuKWgUltcGVyCuKWgXRlbGVwaG9uZQriloF1bmxvY2sKT3duZXIKY29sbGVjdGlvbgriloFzbmQK4paBc3VpdgriloFlbnRlcmluZwrRiNC10L0K4paBTGFiZWwKc2VsZWN0b3IK4paBR0VUCuKWgXF1YW5kbwriloFmZWQKalF1ZXJ5Ck9yaWdpbgriloFBbGFuCm1hdGhzY3IK4paBcHJlZ25hbnQKRXhwZWN0CnJlc291cmNlcwriloFlcnN0ZW4KYWxpYQriloFyZXRpcmVkCsO7dApDcmVkCuKWgW3DqWQK4paBZXJoCkZyYW1ld29yawpTbG90CmR1cmF0aW9uCnNhbAriloFjb21wb3NpdGlvbgphcnRpY2xlCmdwdQriloFwZXJtaXR0ZWQK4paBRm9udAriloFNdWNoCuKWgXBlbmRpbmcK4paBYWdlbmNpZXMKQ29sdW1ucwriloFrbGlrCuKWgXJhdGluZwptaW5kCuKWgVBlbm5zeWx2YW5pYQpKYXZhCmFic3RyYWN0CuKWgWR1bWIK4paBVkkKdXNhClJlbW90ZQriloFZT1UK4paBQ3JlZWsK0LzQsNGC0LgKQm90dG9tCuKWgXJvbGxpbmcK4paBYnVuZGxlCuKWgWdvbGYKZ3BpbwriloFDaGFpcgriloFjbHMKJH0K4paBUGFybGlhbWVudApmw7xocgpNYW55CuKWgVNlcAriloFiYWRseQppZ2kK4paBR2VtZWluZGUKSWxsCuKWgdCQ0L0KdWFydAppdGVtcHR5CuKWgU5pZ2VyCuKWgWltbWlncgpTdXBlcgp2w6EKaXN0cmlidXRlCkhlbHBlcnMK4paBd2F0ZXJzCuKWgWpvaW5pbmcKb21pdGVtcHR5CuKWgU90aGVyd2lzZQriloFIb3N0CuKWgXJlZGQK4paBZHkK4paBY29udmVydGVkCuKWgXByYXllcgriloHQo9C60YDQsNGXCuKWgWVsZWN0aW9ucwpyZWIKZXJpZQriloHRgdCy0Y8KQWJzCmllbWJyZQpob2xkZXJzCuKWgVJvbAp1dHNjaGVuCuKWgUdoCnRlcnkK0LDQvdCzCuKWgW5hcnJhdGl2ZQptaW51cwriloFJcm9uCj0iIwriloF3YW5kCuKWgXdpc2hlZAppY29kZQpvcnIKW1sK4paBZGV0ZWN0ZWQK4paBbXVuaWNpcGFsCuKWgVBvdXIK4paBU2VydgpjaXRldAriloFncmV5CuKWgVJhcAriloF2b3kK4paBbGxlZwriloFjdXJyZW5jeQriloFTY3JpcHQKc3RydW1lbnQK4paBZXhwZWN0aW5nCuKWgXRpY2tldHMK4paBYnVja2V0CmVncgriloFqYWNrZXQKZHJ2CuKWgWxvYW5zCuKWgWthbm4K4paBaW50ZWdyYWwK4paBY2hhcmFjdGVyaXN0aWNzCigiLgriloFtYW51YWwK4paBZHluYW1pY3MKOioKc2hhCnJlZW5zCm9uaWNhbAriloF0b2lsZQphw7FhCuKWgWRpc3RhbnQK4paBaGFuZGxlZApCb29sCuKWgXBlbmFsCuKWgVRoaW5ncwriloFwcm9taW5lbnQK4paBZXhwZWQK4paBSGVscAriloFhc3AKbGFwCuKWgUF1dGgKQmFzaWMKYWNodXNldAriloFCaWxkCuKWgWVudGl0bGVkCuKWgWphZwriloFyZWplY3RlZAriloFtZW1vcgpvcnRzCuKWgWFwcGxpZXMK4paBTGFuZ3VhZ2UKc3BlY2lmaWMKYWNodXNldHRzCkhBTkQK4paBUm91dGUKbWFya2V0CuKWgUt5CuKWgXBvc2UKQUNIRQpwb2xsCuKWgXJvY2tzCmJvbmUK4paBRElTCldhdGNoCuKWgXNtaWxpbmcK0YDQuNC+Ck1vbnRoCuKWgWVmdGVyCmNvbnN0cnVjdAriloFiYW5kcwriloFjb2xsYWJvcmF0aW9uCtC90LjQvNC4CmdsYXMK4paBdnkK4paBZW5nYWdlbWVudApfXykK4paBd2luZ3MK0LrQuNC8Cm5ldGplCmF0aXZhCuKWgUR1a2UK0LvQtdC1CuKWgVdpdGhpbgriloFkb3ZlCuKWgWNiCnllcnMKcG93ClsoCuKWgWV2YWx1YXRlClBvaW50cwriloHRgNGWCm9kaWdkCm9ub215CuKWgUlsbGlub2lzCuKWgVR5cAriloFjb29yZGluYXRlcwpwaXNvZGUKdWNrZWQK4paBZmxhdgriloFicmFuZHMK4paBY2FsZW5kYXIKTGliCuKWgXVpdGdlbgriloF0YWxlCuKWgWJyaWVmbHkK4paBbWljClJFU1MK4paBc3DDpHRlcgriloFpbnRlZ3JhdGVkCuKWgWNvb2tpZXMK4paBdWl0Z2Vub2RpZ2QK4paBUHJpdgriloFwaGVub21lbgriloF2b2VnZW4KU3VwcAriloFyZWZlcnMK0L/QsNC0CuKWgUNsaW50b24K4paBYXNzaWdubWVudAppbmFscwriloFhc3ltCmN5Y2xlCuKWgUFuZGVyc29uCuKWgWJpbmRpbmcKcmlxdWUKaGluZAriloFiZWhhbGYK4paBRmxlCuKWgWJyZWFrcwriloFzb2FwCtCy0LDRgAriloF2w6QK4paBY3J5aW5nCuKWgeKGkgriloFtc20K4paBYm9vdHMKb3dpbmcK4paBYmVsbApzdWl0ZQriloFCdW5kZXMKWWVhcgpuZGVmCk90aGVyCuKWgWdvb2dsZQpFTkNFCldFUgpMZXMKU2hhcmVkCuKWgUVECklGVAriloFmbG9hdGluZwrDvW0Ke30sCkJpbmFyeQriloFyb2NlCnJhagriloFiZXdlcmtlbgpCRgriloFIdXIKY2VuCuKWgWVyZQriloFjYW1iCuKWgVBha2lzdGFuCuKWgWdyZWF0bHkK4paBbG9nZ2luZwovLgpUZW5zb3IK4paBb3BlbnMK4paBUmlvCuKWgWtsaWtrZW4K4paBc2N1bHB0CmFwb3JlCnd4CuKWgU5pY2gKbmFuCuKWgWluanVyZWQKY29tcGFyZQp0aGEKU2FtcGxlClNoZWxsCuKWgWNvbW1hbmRlcgriloFyZWNlaXZlcgriloFob3BlcwriloFieWwK4paBcHJveHkK4paBZ2FsbApnZXRJZAriloFCYWIKZmVsZAriloEiXwriloFIYWIKc2ltcGxlCuKWgWV4ZWN1dGVkCuKWgWF0ZQriloFhbmltYXRpb24K4paBaW5oYWIK4paB0LHQvtC70YwK4paBcm91dGVyCuKWgWdsb2IKR2VwbGFhdHN0CuKWgWJlZ2lubmV0amUK4paBS3VyCuKWgdCl0LAKYWxpZ25lZAriloFjZXJ0aWZpY2F0ZQriloHDhQouKS4K4paBc29sbAriloFJbXBvcnQK0YDQtdC00LgK4paBcGFuZGVtaWMK4paBbmljCnbDpAriloFHcmVlCuKWgVNheQriloHQtNGWCuKWgU51bQriloFyb3VnaGx5CuKWgWRlc3B1w6lzCuKWgeKAiwriloFzcGVjaWZ5Ck1hcHBlcgpsaWNodAriloF0aHVtYgp3aWUK4paBdW5saWtlbHkK4paBRWRkCkhleQriloFPcHQKQkxPQ0sK0LLQvtGACuKWgcOXCuKWgWJhCuKWgXBlcmlvZHMK4paBdGl0bGVzCk1lZAriloFmb24K4paBYmFzdAriloFGb3Jlc3QK4paB4oSWCm9uZHMK4paBZmFsCuKWgWdlc2NoCmRpcmVjdGlvbgpJRlkK4paBTEEK4paBKCgoCkdUSAppdHVkZXMK4paBZGVzdHJ1Y3Rpb24K4paBSmEK4paBc3Rha2UKaWZmZXJlbnQK4paBaWRlbnRpY2FsCuKWgWZvZwriloFSZWIK0YHQutC40LUK0YHRgtGD0L8KamF4CuKWgU1hcnMK4paBaGlzdG9yaWMK4paBVm8K4paBZW50cmVwcmUK4paBdGVuc2lvbgriloFXSEVSRQriloFQaGlsYWRlbHBoaWEKQ291bnRlcgriloFmcmFtZXMK4paBbXV5CmVqCsO2dApldQriloHRh9C10LvQvtCy0LUKUFJPQwriloFyZXNvbHZlZAriloF0YXBlCtGG0LjQvtC9CuKWgXNpbmd1bGFyCuKWgXBlcnNvbm5lbAriloFNdW4K4paBT2NjCuKWgXNjYWxhcgpkZXNzCuKWgWNhYmxlCmJlaW5nCuKWgUplbm4K4paBZXJzdApBY3Rpb25zCkVudmlyb25tZW50CnZpYQriloFzdHJ1Z2dsaW5nCuKWgURWRAp3aGUK4paBdGhyb3dpbmcKQm91bmRzCuKWgU1ECuKWgSIuLi8K4paBc2F0aXNmeQriloFDb2xvcmFkbwriloFBY3RpdmUKVGFza3MKPD4oKTsK4paBc2xpcHBlZAriloFwb2lzb24KemIKRGlzcGF0Y2gKd2FybmluZwriloF1bHRpbWF0ZQpwaWN0dXJlCmV4cHJlc3Npb24K4paBVGFsawriloFmbGljawriloFyYWlzaW5nCuKWgXRyYW5zYWN0aW9ucwriloFnbGFuY2UK4paBZ3JpCuKWgdC/0YDQtdC3CnNlbGVjdGlvbgrRmtCwCmVuZGwK4paBQWJiCuKWgWJvbGQK4paBbWFpbnRhaW5lZApFeGlzdHMK4paBZW5jb3VyYWdlZApRdWFsCuKWgWVzc2VyZQriloFoaXJlZApsZXR0ZXIKaXRjaGVzCm90aGVycwriloF3b2oK4paBaW5qdXJpZXMK4paBZGlsCmV4ZWN1dAriloFTdGVlbAriloFHYXJkZW4K0LfRjwpcLFwK4paBQW5nZWwKcHJpbQo+Ol08CmdiCnBlYXQKaW50ZQriloFhcG9sb2cK4paBcmVndWxhdGlvbnMKU3JjCmtoClVwbG9hZAptYXBwaW5nCuKWgXByZXNlbnRzCuKWgXBvZXRyeQriloFzdG9wcwriloFUb2wK4paBdG93ZXIK4paBT1VUClRoYW5rCuKWgW9yZ2FuaWMK4paBZHJlaQriloFwb3VuZApjZW50dXJ5CuKWgW1vZHVsZXMK4paB0LTQtdGA0LUK4paBd29ybgriloFwYXJhZAriloFDb3MKZmljCuKWgdCx0LXQtwriloFKaW1teQriloFsYW5kcwriloFtaW5pc3QKdnNwYWNlCuKWgWxpZ2h0aW5nCuKWgW5ha2VkCuKWgWRlc2lnbmVyCuKWgVN0cmVhbQpUTVAKQ2VudGVyCnJlc2VudGF0aW9uCk9OVAriloFlcnMK4paBbWVhc3VyZW1lbnQK4paBbXVzY2xlcwriloFJZ24K4paBQ09NCuKWgWZydQriloFnZW5yZQriloFhbHBoYQriloFyZXRpcmVtZW50CuKWgUdvbgrFkWwKY29udGVudHMK4paBaGVhbGluZwriloFzaWRvCmluY2lwYWwKUGVybWlzc2lvbgrRgNCw0LoK4paBR29yZG9uCuKWgVJhbmsK4paBQXV0b20KQ29uc3RydWN0b3IKd2lraQriloFjb25jZXJuaW5nCnJpem9uYQriloF2YXJpYW50CuKWgWFycmFuZ2VkCuKWgVNwcgpCUEFDSwpUaW1lc3RhbXAKcmVzdG9yZQphd2FyZQriloFPYnNlcnYK4paBU1YKaXBwCuKWgUV4ZWN1dGl2ZQriloFjb2xsZWcK4paBZXhwbGljaXRseQp3cml0dGVuCuKWgUvDtm4KaXJ1cwriloFIb2xkCuKWgVByYWN0CkNoYXJhY3RlcgriloFyZWRpc3RyaWJ1dGUKdWVydG8K4paBU3R1ZGVudAriloFlbGRlcgriloFEb3AKdnAK4paBSHViCuKWgWdyb3VuZHMK4paBUnkK4paBc2lnbmFscwriloFnaWZ0cwriloFzdHJlbmd0aGVuCuKWgUx5bgpjb21tdW4K4paB0L3QsNC5CuKWgWZpbmFuY2UKbm9jCmhlbG0K4paBY3V0cwriloFhZHZlbnR1cmUK4paBUmljCuKWgWludGVsbGVjdHVhbAriloFPdXRwdXQK4paBYXdrCuKWgWNvbmNlbnRyYXRpb24K4paBZ3VpZGFuY2UKQnVmZgriloFmaWxsaW5nCuKWgXJlZ3VsCuKWgWRlbGljaW91cwooW10K0YjQuNGFCuKWgXRvbnMKYWN0aXZpdHkKR1AKTE9CCnN0YWR0CnRhbAriloFpbWcK4paBcnVzaAphdHRpY2UK4paBcG9rCnN0ZXBzCuKWgWxpZAriloFETkEKQnJvd3NlcgriloFsYWRpZXMK4paBYW5uw6llcwriloFyZXNjdWUKYXZpdHkKcm9jawriloFnbGFzc2VzCuKWgUJleQopfSQKZGV0YWlsCuKWgWTDqXMKdGF4CuKWgWZhdm91cml0ZQriloFwcmVjaXNpb24K4paBY29ub2MKTXMK4paBTmF0aXZlCuKWgVBpbApJbnB1dFN0cmVhbQpvcnAK4paBUGFwCuKWgXBpY2tpbmcKaXBoCkxvYWRpbmcK4paBcHJpZXN0Ckhvb2sK4paBcGlzdAriloFVbmUKJSwK4paBYmlsCuKWgWNvbnNlcnZhdGl2ZQpldmFsCmlraW5nCid9LAriloFzYXVjZQriloFEdWUKYXNzZW4K4paBb2NjYXNpb25hbGx5CuKWgdCU0LYKdW5rbm93bgpERUQK4paBZHJ1bQriloFkdWIKQVRVUkUKdXNhZ2UKZ2V0VHlwZQpyZXBseQriloFzdHJhdGVnaWMK4paBa2FwCmRlc2lnbgpkYXRldGltZQriloFQcmltCk1hc3RlcgriloFDb3JwcwriloFjb25zaWRlcmFibGUK4paBVHUK4paB0LvQsAriloF0b3VzCuKWgWNsYXIK4paBcG9lbQphbGJ1bQpdKgpsb2FkZWQK4paBdHJhdmVsaW5nCtCy0YvQtQriloFGZXJyCuKWgXBoYXJtCmFiaQriloF9XApjb2xsZWN0CuKWgUJvdXIKT0MK4paBbWVhc3VyZW1lbnRzCuKWgVByb2Zlc3Npb25hbAriloFzZW5zb3IKdXRzY2hlCuKWgWRlbWFuZGVkCuKWgWFjY29tcGFuaWVkCuKWgXByZW5kCuKWgWVuY29kaW5nCuKWgUdlc2NoaWNodGUK4paBbWlnCuKWgUdpYgriloFSZWljaAriloFteXN0ZXIK4paBTW9jawriloFwaHlzaWNhbGx5CuKWgUJhdQriloFTaW5nbGUK4paBbWFuYWdpbmcK4paBS2lsCuKWgVRlbXBsZQriloFsZXYK4paBbMOtCkNQVQriloFQcmVtaWVyCuKWgUdpdmUKaXJpCk5WCuKWgUFJCuKWgWZwCtC70LXQutGB0LDQvdC0CuKWgXRhbnQK4paBZm90Ck51bGxhYmxlCuKWgWd1YXJkcwpPbmNlCuKWgWNoYW1iZXIKZmlsbQriloFiaWFzCuKWgVRhaQppbnNpYwriloFtbAriloFLYQrQstCw0LsK4paBU0VSCuKWgVNvbWVvbmUKfX1fewpGaXhlZAriloFiZW50CuKWgXByb2hpYgriloFiaWQK4paBZmV3ZXIK0LrRgNGLCuKWgWx1Z2FyCuKWgWRlc2VydmUKc3NsCuKWgWNmZwpyZWNrCuKWgXN0YWJpbGl0eQpyZXNpemUK4paBYXNzZXJ0VGhhdApUcmlnZ2VyCuKWgdGB0YLQsNC90L7QsgpwbHVnaW5zCuKWgWxldHMK0YXRltC0CuKWgUxhdXJhCtC90LXRgAriloFicnV0CuKWgUZJCmlzb25zCuKWgWR5bgppY2hlcgpyYXllZAriloFmcmVxdWVudAriloFqZWRvY2gK4paBTWFyaW5lCnN0cmluZ3MK4paBVXRpbAriloFib3MKTXVzCuKWgVBvcnR1Z2FsClN0cmF0ZWd5CuKWgdC/0L7RgdC1CuKWgXNsaWNlCuKWgWluc2lnaHQK4paBd2lkZ2V0CuKWgWfDqW7DqXJhbAptZXNzYWdlcwriloFIdQriloFyZXF1aXJlbWVudApTaWRlCmVtcGxhdGVzCuKWgWNlcmVtb255CuKWgXBoeXNpY3MK4paBZ3JhZHVhdGUKcGFyYQriloFwcmVzZXJ2CuKWgXNob3BzCnplawriloF1YgpwcmVwYXJlCuKWgU9pbAriloFmaWIK4paBcnVudGltZQriloFob2d5Cldhcm5pbmcK4paBQ29udmVydApib3VybmUK4paBZW1lcmdlZAriloHQlNC4CmlnaHRoCmd1YXJkCmthbAp2YWxpZGF0aW9uCsOqbmNpYQriloFkcmlua3MKdGhlb3JlbQpIUgppZXYKcGxveWVlClVzYWdlCuKWgdGB0L/QtQpkaXNwYXRjaAriloFpbnN0YW50bHkKb2JpCuKWgWp1c3RpZnkK4paBTmV2CuKWgdGP0LLQu9GPCmFncmEK4paBdHJhbnNtaXNzaW9uCmZseQo7PC8K4paBc3ltYm9scwrDs3duCuKWgWNvcnBzCuKWgWphaWwK4paBTGVuCuKWgWNyYXcK4paBbGlmZXN0eWxlCuKWgXJlZGlyZWN0CuKWgURvd25sb2FkCuKWgW9zYwriloFpbnNpc3RlZAriloFqYXcKaW5kYQriloFMSUNFTlNFCk1SCtCy0LXQvQpsaWJyYXJ5CuKWgWtuZWUKSGVsbG8K4paBZGVmZWF0ZWQK4paBbWl4dHVyZQplbmNlcgrQstCw0YLQuApUVAppbmhlcgpPbGQKY29tbWVudHMKZGV2ZWxvcAriloFzdWljaWRlCm9sb2dpYQriloFkZWF0aHMK4paBbGlzdGluZwriloFwcm9jZXNzZWQKb21lcgriloF0b2tlbnMK4paB0LPQtQriloFuw7oK4paBw6l2CuKWgUJvZHkK4paBZ2lvcm4K4paBZWxhYm9yCuKWgVJhbmQK4paBTm90ZXMK4paBTWFzc2FjaHVzZXR0cwooJQpJbmZvcm1hdGlvbgriloFXcgptawriloFTY2h3CmFzdGluZwriloF0aWVuZQriloFkaXJpZwriloFyaW0K0LLRi9C5CuKWgXRyYW5zZmVycmVkCm9kaQriloFodW50aW5nCuKWgWVuam95aW5nCnBrCk1BRwpBeGlzCmludGVncgpGYWlsdXJlCuKWgWxvc3NlcwriloFsb3ZpbmcKQ29uc3VtCtGA0LjQuQriloFpbnNwZWN0ClB1dAphdmlhCuKWgWhhdGVkCtGM0Y4K4paBYnJ1c2gK4paBdW5jb21mb3J0CuKWgVRocmVhZAriloFjb21tdW5pY2F0ZQrQttC90L4KSU5TVAriloFNYWNoCklnbm9yZQriloFwcm9ncmFtbWluZwpjw60KPSI8PwpSZXEK4paBRmlmCmluZWx5CuKWgWNvbnN1bXB0aW9uCmVyaWFsCuKWgWNvbW11bmljYXRpb25zCtGC0LDQu9GMCmllcmUK4paBTGl2aW5nCuKWgUFsZnJlZApkaWUK4paBcHJvc3QK4paBZmllcgriloFDRgriloFCQkMKV2VpZ2h0CkNvbnZlcnQK4paBZmVhdHVyaW5nCmFydGUKJ18K4paBSlMK0YHRgtCw0LLQuAriloFwcmVtaXVtCnppZwriloFkZXplCuKWgUFmZ2hhbgpoeXRobQptb3QKVVNCCuKWgVVJCmZha2UKYW5jbwpFRgpBc3NldAriloFEZXRhaWxzCmdvcml0aG1zCuKWgXNpZ2hlZAriloHQm9GDCtGH0LrQuAriloFDaXQKY2hhbm5lbHMK4paBcmVhZHMK4paBYXV0b21hdGljCuKWgW1lZGFsCnBvZAriloFNaWsK4paBbG9uCmxpdmVyCuKWgUF0bGFudGljCm9taQrDoW7DrQpjcmVhdAriloFhc3N1bWluZwpyw6UK4paBKCk7Cm1pbmUKYWxlcgpIVwriloF1bmRlcnQKU3dpdGNoCmhpcwriloFmbGV3Ck1BTgpJTkRFWAriloFLYXoK4paB0LzQtdC20LTRgwriloFib2wK0YHRgtCw0L3QvtCyCtGF0L7QtApBUFAK4paBdGllbQriloFhdHRhY2gK4paBc2FmZWx5CkZVTkNUSU9OCuKWgWxhZwrQvdC40YbQuApzaGl0CuKWgXRlbXB0ClJJUAphdHRhCuKWgWlkZW50aWZpZXIKZWJvb2sK4paBU2FsZXMK4paBZWVyc3QK4paBcmVzb24K4paBYWNjdXNlZAouLi4pCuKWgWJhc2tldGJhbGwK4paBRVJST1IKQWJzdHJhY3QK4paBcGVyZgriloF0ZW1wbwriloFNb2wK4paBbG9nbwrQu9GM0YLQsAriloFpbmNvcnJlY3QK4paBZ2lybGZyaWVuZAriloFOYXIK4paBY2xvdWRzCuKWgdC50L4K4paBZml0cwpSRVFVRVNUCuKWgVBlYXIKTUVUSE9ECuKWgUNIQVBURVIKQ3BwCuKWgWFtcGwKaWNraW5nCuKWgXJlYWxpegp8XgpuYXMKQlVGRkVSCtGG0Y8KbmllcgprZWVwCuKWgXNpc3RlbWEK4paBQ2VyCuKWgURyYXcKZ2V0SW5zdGFuY2UKVkVMCuKWgWJlbGllZnMK4paBTUMKLS0tLS0tLS0tLQriloFpcnJpdAriloFOYXRpb25zCmVuc2l0aXZlCuKWgW5vdXZlCuKWgWVsaWYK4paBbWVhbHMK4paBY2xvc2VzdAriloFyb3V0ZXMK4paB0L/QvtC70LgK4paBZnVsZmlsbArQtNC40L3QsApjb3V0CuKWgU1vYmlsZQriloFpbmVxdQriloFwZWxvCiddKSkK4paBc2hvcnRseQriloFpbWFnaW5lZAp1bmRlbgriloF0cnVzdGVkCuKWgWVzdGltYXRlcwriloFyb2QKaXNzZW5zY2hhZnQK4paBbG9naWNhbAp1bnRlcgriloFPbnQK4paBY29tcGFzcwpidWQK4paBd2lzZQriloFnZXIK4paBSXNzCmhhZAriloFIQQriloFyYW5nCuKWgXRyYXAK4paBaW5qZWN0CmZlZWQKcGVjdGlvbgriloFzYXRpc2ZhY3Rpb24KTkkK4paBcm9idXN0ClRBQkxFCuKWgXp1csO8Y2sK4paBQ2hhcmxvdHRlCml0YXRpdmUK4paBaW5zcGlyYXRpb24Kb3Jpb3VzCmV1cnMK0LPQsNC9CtGB0LvRgwriloFhbmFsb2cKYWxpYXMK4paBcmFjaW5nCnN0b2NrCnVzdHJhbAriloErXAp1dWlkCmVtZW50ZQphc3NlbWJseQpHcm91cE5hbWUKeW91dAriloFyYWIKdGhyZWUK4paBVGhlcgriloFCVVQKZmlzaAriloFuZWxsCkdhdGUK4paBcHJlcGFyaW5nCtGB0YLQtdGACk9rYXkK4paBY29uY2x1ZGVkCnBhcnMK4paBbG9ybwriloFndXQK4paBYml0dGVyCuKWgVdpCuKWgWVhc3Rlcm4K4paBd2Vla2x5CuKWgXRlYXIKLiIiIgriloFkZW1vbnN0cmF0ZQriloFzb3BoCuKWgVJ1cwriloFvYnNjCtC80LXRgNC40LrQsNC9CmJlYW4K4paBRG9jdG9yCuKWgUxhd3JlbmNlCnRoaXJkCuKWgWNvbnNjaW91c25lc3MK4paBcmFjZXMKZWxlbWVudHMK4paBbWlzbW8K4paBb2NjdXBpZWQK4paBc2xpZGUK4paBQW5keQp0Y3AK4paBc3RpZmYK4paBTGViZW4K4paBdXBncmFkZQpUaHJvdwriloFHdXkKQ2FtZXJhCkFDSAriloFwdWVkZQpXRUJQQUNLCtC20LXQvdC40LUK4pSA4pSACtCo0JAK0LvQvtCy0LAKdmlzb3IKc2lnbmFsCuKWgUFsYmVyCk1CT0wK4paBcHQK4paBcm9tYW50aWMK4paBY29ycmVzcG9uZHMK4paBT3BlcmF0aW9uCuKWgVhNTAriloFpbmZpbml0ZQpnZXcK4paBQXJnZW50aW5hClNVQgriloF3aXAK4paBTGV2ZWwK4paBY29pbgriloFPd24KZHYKdXNwZW5kCuKWgWp1ZGdtZW50CuKWgU1haXMKKjoKdXN0ZWQKKC8K4paBIisKY3JlbWVudAriloFQaG90bwpNZXNzYWdlcwriloFTdWNjZXNzCmhyZWYK4paBZmVydApIb2xkZXIKZW1wZXJhdHVyZQpPRkZTRVQK4paBZGFsbAriloFyaXZhbAriloFjb25mb3JtCnN1YmplY3QKVElORwriloF2ZXN0CuKWgUFkZGl0aW9uYWxseQpjb250YWN0CuKWgUNQCuKWgUNPUApIQwriloFleGNsdXMK4paBYnJ1CmxpY2Vuc2UK4paBQnVjawriloFnb2RzCuKWgVVuaWRvcwriloFRdWVyeQrRgdC+0LIK4paBY29uY2VwdHMK4paBbWlsZAriloFzdXBwbGllZAriloFjYXBhYmlsaXRpZXMK4paBbWFycnkKU25hcHNob3QK4paBZXR3YQriloFBbHQKdsOtCmt0aW9uCmtvbAriloFncmlwCuKWgUNTCuKWgVNhbXVlbAriloFCZWNrCuKWgUdhbGxlcnkKcmljaHQK4paBZHQKcGVnCuKWgVRvbwphbW1lbnQK4paBZmFpbnQKdmlydHVhbAriloFwbHVnCkhvcgppZWxlCtC90LjQutC4CuKWgWNvdgrEm3QK4paBZW5jdWVudAphYmMKQ0xVRAriloFzeW1tZXRyeQphaWxpbmcK4paBTW9vcmUKY2hhcnQK4paBc2hpZnRlZAriloFkYW1hZ2VkCuKWgXRlc3RpbQp+JAriloFoaWRpbmcKKioqCuKWgWhvcm4K4paBVG9rZW4K4paBcGl4ZWxzCkV2YWwKw6FseQriloHRgtCw0LrQvgriloFjb25mdXNpb24KZXR0YQpyeXB0ZWQKZW1hdApDTFVESU5HCmxvb2t1cApUSU0K4paBYWxsZW0KcnAKYXRpbwplbsOtCm1ldHJ5CmlkYXlzClRoZXRhCkNvbm5lY3QK4paBYXNzYXNzCiJcCuKWgWJlYW0K4paBQ3VzdG9tZXIK4paBcGVsYQpzbGVlcAriloFGYWwK4paBUXVpY2sK4paBSW5kb25lcwriloFVa3JhaW5lCllZCuKWgUpvbmF0aGFuCkFUT1IK4paBR292ZXJub3IKaW1ldGVyCuKWgVZpc2l0CuKWgUtyaXN0CuKWgWFmZm9yZGFibGUKOy8K4paBaGF5CnVudG8K4paBY2FyZ28K4paBWndlCuKWgUJydWNlCtC70LXQvAriloFlbWl0CtC30LQK0YjRgwriloHQutC+0YDQvgpvaGwKTWVudUl0ZW0K4paBQ2xlYXIK4paBQWx0ZXJuCuKWgWRhd24K4paBd2lzZG9tCtGG0ZbQuQpiw7ZyZApEZWNpbWFsCmZpbGxlZAphcmd1bWVudHMK4paBZmV0CuKWgUJlYXV0CuKWgWRlbnMKUmV0dXJucwphdHRhY2gK4paB0JLQtdC70LgK4paBZmlsZWQK4paBSGFycmlzCuKWgUV4YW1wbGUK4paBTGVhcm4KUmVzb2x2ZXIK4paBY29tcGxlbWVudApwcmVmCuKWgWludGVucwriloFnYXJhZ2UKYWllbnQK4paBZXRlcm4K0LrRgtCwCuKWgWRlbmllZAriloFMTApzZXF1ZW5jZQriloFyaWRpY3Vsb3VzCsO2bQphdHRpCuKWgXF1ZXN0bwriloFkZXRlcm1pbgriloFhcmJpdHJhcnkKaWxpYQpjbHVzaW9uCmN1cnJlbmN5CuKWgWFkZHJlc3NlZAriloFpbnRlcnByZXRhdGlvbgpOTApyw6QK4paBJiMK4paBYm91CuKWgXBhbnRzCuKWgUV4cHJlc3MKY2xzCnRhZ0hlbHBlcgriloFOYXR1cmFsCuKWgXN1Ym1pdHRlZApzZWNyZXQKaWxpYgpjaGVsbAriloFIYXVwdApoZWlkCuKWgWNvcmQK4paBcG92ZXJ0eQphbXBlZAp0ZXN0cwriloFIYW5kbGUK4paBRXN0YWRvcwpWYWxpZGF0b3IKYXRvbQpsb3BlCuKWgXRpbGUKQ29udHJhY3QKUkYK4paBcHJlcGFyYXRpb24K4paBTWFqCuKWgdCa0LDRgArRgdGD0LTQsNGACuKWgXdvb2RzCuKWgWNoZWYK4paBU2FkCkZMQUdTCuKWgWltcHJvdmluZwpjb21wdXRlClJFVFVSTgpNZXRyaWNzCuKWgVNxdWFkCuKWgVNldHMK4paBU1BFCuKWgWJsaW5rCuKWgWFjdG9ycwriloFzdXJ2aXZlZAriloFFbWVyCuKWgSctCuKWgVJhY2hlbAriloFkZXV0c2NoZXIK4paBc29wCuKWgXZpbApmYWxscwpyZWZlcgpkYXJrCuKWgXByb21vdGlvbgo6JS4qCuKWgUNyaXQK4paBU3RvCiN7CuKWgWNsYXNzaWZpY2F0aW9uCmFsZW4KVW5kZXIK4paBY29ydApxdWF0ZQpjb25jYXQK4paBRWZmZWN0CuKWgW9mZmljaWFsbHkK4paBQmVybmFyZAp1c3IK4paBTcOpCuKWgWxhbmRlZApzZW50CmludGVycHJldAriloFFeHAKdWx1bQpsb2FkaW5nCkZpcmUK4paBcG9ybgriloFBaXJwb3J0CuKWgXRhcmQK4paBT2ZmaWNlcgpnZ3JlZwrRgdC70LgK4paBaW50ZW5zaXR5CsOibmQKenphCuKWgWV4Y3VzZQpBU0sK4paBU2VuaW9yCuKWgWdlbmVyYXRpb25zCm91c2VzCuKWgXdhcm5lZAriloFjYXBpdAriloHQvtGB0L3QvtCyCuKWgWNob3AKb21lZAriloFwcm9zZWN1dAriloFhbGcK4paBcmV0YWluCmFnaW5lCndlcmsK4paBUmFqCkJFUgppdHV0aW9uYWwK0ZbQsQriloHRgdC10YAK4paBaW5zdGluY3QK4paBYm91bmRhcmllcwriloFtZWRpYW4K4paBaG9ycmlibGUK4paBaW5ub3ZhdGl2ZQriloFFUAriloF2YWNhdGlvbgriloF3YWxrcwriloFyZWNhbGxlZArQu9C70LUK4paB0LDQtAriloFzw6lyaWUK4paBQmFyY2Vsb25hCm9sYXMK4paBbGVnaXNsYXRpb24K4paBZnJhbmNoClRvdWNoCkRpY3QK4paBZGlmZmVyZW50bHkK4paBaW1hZ2luYXRpb24K4paBYmlsbHMK4paBcmVjZXB0aW9uCnrDoQpJTVBPUlRFRApsYWIKKCJbCmlsbG9uCi0tOwriloFNw6RyCuKWgWJhbGxzClByb21pc2UK4paBaW5zdGl0dXRpb24KYmF1CuKWgXN1cnZpdmFsCuKWgURyaXZlCmpvaW50CuKWgWZsYXZvcgriloFjb21wdXRlZAriloF2aWV3ZWQK4paBc3dpbW1pbmcK4paBaW5ub3ZhdGlvbgpzaGFyZQpyb2xsZXJzCuKWgVNlcmdlCmZpbHRlcnMKaXRpdml0eQriloFjb3JuCuKWgU1zCtGC0LXQu9C10LkK4paBbWF0aGVtYXQK4paBTGFib3VyCtGA0LXQuQriloFwdW50CuKWgXJldmVycwriloFub3doZXJlCnJpZmljCuKWgUhBTAriloFFbWFpbAriloFDb3ZlcgriloFtb25pdG9yaW5nCuKWgXBjClNFRApudgriloFZZWFycwriloFTZWFzb24K4paBc3RhYmlsCmFjY28KYmVhdApvcmljCuKWgXBpcGVsaW5lCuKWgXJhZGkKdWx1cwriloFjZWxlYnJhdGUK4paBQ2kK4paBT1RIRVIKasSZCuKWgWx1CuKWgUNDCmFnb25hbArDpGQK4paB0LzQvtC20LUK4paBSG91c3RvbgriloFiZWluZ3MK4paBdm91cwpSb3V0ZXIK4paBTmFtCuKWgXdldGVuc2NoYXBwCjxcCuKWgVR1cmsKY291bnRyeQpobQpjdWxhdGUK4paBU0sK4paBc2VjcmV0YXJ5CnZlbnRvcnkK4paBaW5zZWN0CklUSAp2ZWx0CuKWgWVuY29yZQpHb29nbGUK4paBQ2hhcnQK4paBZHVkZQriloFsYXB0CmZlbgpcWwriloFjaGFtcGlvbnNoaXAKQXBwZQpwcm90CuKWgXNldmEK4paBTWlhbWkK4paBbWF0Y2hlZApsYgplbmNpbAriloFkaWVzZQriloFuZwrQvNC10L3QuAp1Z2dlc3QKdWJlcm4K4paBRW1pbHkK4paBZmF0ZQonKTsNCmVzdHkK4paBTHVpcwpGaWxsCuKWgWV4aXN0ZWQK4paBZXhwcmVzc2lvbnMKIikNCnJ1ZApOZAppZGRsZXdhcmUKUE9TCuKWgdCa0L7QvQriloFEYWlseQriloFsaXRlcmFyeQriloFBdWRpbwpFcnJvcnMK4paBcmVtYXJrYWJsZQriloFyZXN1bHRlZAriloFzcG90cwpsYXJnZQp1cmF0aW9ucwpvbmdvCnJvc2UKQ29tcG9uZW50cwpqZXMK4paBZ2VudWluZQriloFNdXQK4paBTWFkZQriloFzb3J0cwriloFleHBlbnNlcwriloFXaGF0ZXZlcgpjb25zdGFudAriloFzaW5nbGVzCm9ncmFmaWUKR00K0YPQtNC+CuKWgUFxdQriloF0aGVvcmVtCnN3ZXIKcml2aW5nCmFuYXMKZ2xlcwriloFvcGVyYXRlZAriloF2ZWQKb3dza2kKcml1bQpEZW0KU3BsaXQK4paBaW5mZWN0CuKWgUludgprbGUK4paB0LPQvtC0CuKWgUl0YWxpYQriloFkb2xsYXIK4paBUHJhCuKWgUJ1bGwK4paBYnV0dG9ucwrQu9C40LkK4paBbWV0cmljcwriloFwYXJ0aWNpcGF0aW9uClBMQVkK4paBYmlvCnN0cmFpbnRzClx9JApvdXJ0CuKWgXByZWNpc2UK4paB0LjQswrRgtC10L0KSGFzQ29sdW1uCkZSQQriloFpbmNoCuKWgW5laWdoYm9ycwpFeHBlY3RlZAriloFEZW1vY3JhdHMKa2MK4paBTGFtCkF6dXJlCmlydHNjaGFmdAo+JzsK4paBY291c2luCmNyZWF0ZUVsZW1lbnQKQ291bGQK4paBY2FwYWMK4paBcGF1c2UKQXJyYXlMaXN0Cmt0ZQpvcmRlcmVkCuKWgXNoYWtpbmcKbGFiZWxzCuKWgXJlZHVjaW5nCtCy0YvRhQpVU0VECuKWgXZvdGluZwriloFNaW5pc3RyeQriloFNaWcK4paBQ2hlbgriloFhY2NvbXBhbnkKdWxsZQriloFnYQriloFlcXVpcHBlZAriloFudW4KQmV0CuKWgWxpY2Vuc2VkCkFSQ0gKRk4K4paBZW5naW5lcwriloFzdGVyCuKWgWxvY2FsZQriloHQstGKCmxpbmtzCuKWgUNhcGl0YWwK4paBYWxpZW4KV3IK0YDRigpDYXJ0CuKWgU1hcmtldGluZwriloFSVApGaWxlTmFtZQriloF0aQppamkK4paBdmVyc3VzCmxpdmUKU3ltCmtvcgriloFlbWlzc2lvbgp1bW0KeWN6CuKWgWNsaW1iZWQK4paBcGx1c2lldXJzCtC60YDQuAp5YXIKb3N0ZW4K4paBdXNiCuKWgWNyb3NzaW5nCuKWgXBvbHlub20K4paBcmVtb3ZhbAriloFBZGFtcwriloFpaHJlCmFuZGVuCuKWgUJlbmoK4paBUGhpbGwK4paBd291bmRlZAriloFDYXN0bGUKYmlsZApBbm5vdGF0aW9uClByb2Nlc3NvcgriloF0aW4KZm9sZwriloFTdHVkZW50cwriloFNZXhpY2FuCuKWgWFkbWluaXN0cmF0aXZlCklMRUQK4paBY29ucXUK4paBY2hlZXIK4paBQ2VzCkJlY2F1c2UK4paBSnVuaQriloFlbmNvbnRyCmF2aQpWSQpha3UK4paBVG9uCuKWgXNtb2tpbmcK4paBYmF5CndvcmtzCtCw0YIKYXR0ZXJlZAriloFCb29sZWFuCuKWgUJhbHQKZGVmZXIKcGF0aHkKQWgK4paBYWt0CuKWgWdvdmVybm9yClBhZAriloFzaXN0ZXJzCkxhdAriloFyZXZlbAriloFTWQppdG9zCuKWgWZpbHRlcnMKQ2h1bmsKY29uc3VtCuKWgXJlbW92aW5nCuKWgUhlcnIK4paBZ2VuZXJhdG9yCuKWgUNyYQriloFmYXJtZXJzCuKWgU1lbWJlcnMK4paBb3ZlcmNvbWUK4paBQ2luCmlna2VpdApjcmlwdGlvbnMKVGVzdHMK4paB0LrQu9GDCuKWgXNoYWtlCuKWgXl5CnBsYWNlbWVudAriloFhd2FyZHMK4paBZXBpc29kZXMK4paBQmxvb2QK4paBYnVsbGV0CuKWgXZpZW5lCuKWgUZpbmFuY2lhbApGdXR1cmUK4paBcm91CuKWgWJpb2xvZ2llCuKWgXVzZVN0YXRlCmlhbmkKcGllY2UK4paBc3BlYWtlcgriloFyZWZyCkFSSwriloFNSVQK4paBVGFuCuKWgUJhc2VkCuKWgWN1bHRpdgriloFodW5ncnkK4paBQXkK4paBSGV5CuKWgWV4Y2l0ZW1lbnQKaWJyYXJpZXMKSGl0CuKWgUVuZGUKTkcKRklMCi4iKQpGYW1pbHkKaW5lcnkKbmVjZXNzCnZlbG9wZQriloFCb3QKcG9ydGVyCuKWgWNsaW1iCuKWgUVsaQp1cmVudAriloFtaXN0YWtlcwrDoWJhbgptYXJrcwpwa3QKTGlicmFyeQpzdGVkCnVibGljZQriloFBZG1pbmlzdHJhdGlvbgriloFzaGFwZXMK0L/Rg9Cx0LvQuApHb2QKaW5uZW4K0LrQvtC70L4KPDw8PAppYmUKw6pzCuKWgdCh0KjQkAriloFGb3JlaWduCuKWgU1hcmdhcmV0CuKWgWdlbmUK4paBZGlzdHVyYgriloHRgtC10YAK4paBb25DbGljawriloFFbmdpbmVlcmluZwriloFzdG9wcGluZwriloFyZXN0cmljdGlvbnMKLCoKQlVGCuKWgXNoYWRvd3MKaGNpCuKWgUNocmlzdGlhbnMK4paBZmVuY2UK4paBbHV4dXJ5CmFraApjb29yZAriloFpbnZlc3RpZ2F0ZQriloFjb252ZW50aW9uYWwKIuKAlAriloF2aXNpdHMKaXPDqQriloFTYWMKY2xhc3NOYW1lCuKWgVBzeWNoCuKWgXJlZmxlY3RlZAriloHQv9C70L4K4paBVmljZQrFgmF3Cl9fX19fX19fX19fX19fX18K4paBV29sZgpyZW50ZQriloFDaGFtcGlvbgriloFzaW11bGF0aW9uCmVzb3RhCuKWgVNvb24K4paBQ2VsCuKWgXRoZW9yaWVzCuKWgVNUUgriloFjb2xsZWN0aXZlCuKWgWNvb3JkaW5hdGUKcXVlcnlTZWxlY3RvcgplbWVkCkJyZWFrCuKWgWdlZgriloFlbGVjdHJpY2l0eQriloFnYXRoZXJpbmcKYXRlcnMKZXhwZXIK4paBUm9tYQriloFDb29wZXIKU1lNQk9MCnZkCml2ZXJzYXJ5CmFpbmVzCuKWgUdyYWQK4paBaW5kZXBlbmRlbmNlCndvaAriloFjb25zZXF1ZW5jZQriloFjb252ZXJzYXRpb25zCuKWgVJvdQriloFhbmRlcmUK4paBU3lzdGVtcwrQs9Cw0YAK4paBbW9pc3QKZmx1CtGG0ZbRjwrQvdC40YgK4paBcm9kZQriloFwZXJkCuKWgXN6ZXIK4paBZmxvb2QK4paBaW50aW0Kc3RkZXJyCuKWgXJlZmxlY3Rpb24KU2NhbgriloFkaXNhc3Rlcgpha2VzcGUK4paBSW52YWxpZAriloFodW1vcgriloFGcmllZHJpY2gK4paBc3VnZ2VzdGlvbnMKdXZ1ZApEZWxheQpicmllZgriloHQuNGBCmdsaWVkCmZhcwriloFTbWFydAriloFtZWRpCnNkawriloFzZXVzCuKWgUFyaXpvbmEK4paBaW5ub2NlbnQKV2FybgphY2lvdXMK4paBTW9zY293CuKWgWNhcHMKRGVsZWdhdGUK4paBZHJhbWF0aWMKYm9va3MK4paBc2hvcmUKdWtpCuKWgVJ1c3NlbGwK4paBY29ycmVsYXRpb24KSGVscAriloFwdWJibGljCnp5bQpjb21iCkVZCkxFTkdUSAriloFNw7xuCuKWgV8uCuKWgWZlcm0K4paBSWFuCuKWgVN0dWRpbwriloFhZmZhaXJzCmxvcwpSdWxlcwpydW5uaW5nCuKWgVBvc3RlZApQaXhlbAriloFkYW5jaW5nCuKWgWFncmVlbWVudHMK4paBUGljCmFuY2lhCuKWgW3DoQphdGlvblRva2VuCmRlc2NyaXB0b3IK4paBQ2FydGVyClJlbGVhc2UKKioqKioqKioqKioqCuKWgW91dHN0YW5kaW5nCmNoYW5nZXMKQVJSQVkK4paBQmFyYmFyYQriloFudXJzZQooDQriloFEb3VnbGFzCuKWgW51Y2xlCm91cmkK4paBU3R5bGUKYXZvCuKWgXBhaW5mdWwK4paBc2xpYwriloFzZWluZW0KU1VQUE9SVApvZ2VuZQriloFzYXRlbGwKdGFnb24K4paBY29sbGFwc2UKdmVsbGUKTU9OCmF1Z2h0ZXJzCuKWgXRocmVhdGVuZWQK4paBSWxsZWdhbAriloFkZXNwZXJhdGUKc3RyaWN0CnJ1cwrRgdGC0LjRgtGDClwiOgriloFjb25mbGljCmRvd25sb2FkCmF0b3MK4paBUG9zaXRpb24KLio7CuKWgXRoZWF0ZXIK4paBcGxlYXNhbnQK4paBQ2V0dGUK4paBU2luZ2Fwb3JlCmhlZXQK4paBcGlyCuKWgWFjcXVpcwriloHQvdCw0LfQstCwCtGC0LXQu9GPCuKWgXJlY3J1CtC20LXQvdC40Y8K0ZHQuwrQstC10YDRgdC40YLQtQriloFyZXNwZWN0aXZlCuKWgXR1bm5lbAriloFEZWFuCkR1CuKWgXVuY2xlCuKWgW9mZmVuc2l2ZQpjb2xvCuKWgVVubGlrZQpzZXJpZXMK4paBQXJuCm1pbnV0ZQriloFkZXNjcmlwdG9yCuKWgXN0b25lcwpJQ0FUSU9OCuKWgVBhZAriloFpUGhvbmUKZWkK4paBZmFudGFzeQriloFLb3JlYW4KIn0K4paBb3J0aApoYWx0ZW4KZGVlcAriloFLYXkKcmVxdWVuY3kK4paBZHV0aWVzCmF3dAriloFuZWFyZXN0CuKWgWRpc29yZGVyCtGB0YLRgNGDCuKWgUNoaWxlCuKWgXNlcQriloF0cmFuc3BvcnRhdGlvbgpPTwriloFEZXoKaWp1CuKWgVJlc3VsdHMKamVkCml2ZWwKSE9TVAriloHigqwK4paBw44K4paBY2hpbgriloFtYXR0CuKWgXZvdGVkCuKWgWdlaMO2cgriloHiloHiloHiloHiloHiloHiloHiloHiloHiloHiloEK4paBc3VlCuKWgWxlZ2FjeQrQstGB0Y8KU09VUkNFCldPUksKaXRpcwriloEkfAriloHQvtCx0L4K4paBbnIK4paBVGFtYgriloFzbmFwCuKWgWltcHJlc3NlZAriloFkZXBvc2l0CuKWgWRpdmlkClNlZ21lbnQK4paB0LrQsNGACuKWgUdhcwriloFjcmltZXMK4paBaW5zdWx0CuKWgUh1bQriloFib3VuZGVkCuKWgWtpY2tlZAriloHQnNGDCuKWgXxcCmFkZGVkClByb2R1CuKWgS4vCuKWgWF3a3dhcmQK4paB0JrRgNCwCuKWgdGXCuKWgUNPTlRSCuKWgWJlaW0K4paBcGxhY2Vob2xkZXIKc3BpCuKWgUJlaQriloFQZgppZW50ZXMKZGlzawpibGsKbmVvCml0YXJpYW4K4paBY29nbgriloFzb3V0CuKWgXRyYXNoCuKWgVJhYgriloFkZWNsaW5lCnRhdAriloFjb21iaW5lCuKWgVRvdAriloFkcm9wcwpUaW1lcwpjaGVkdWxlcgriloFnb3Zlcm5tZW50cwpUZXgK4paBVXNlZArQt9Cw0L0K4paBcGQK0LzQtdGCCuKWgSY9JgriloFOYWcK4paB0LTQvtC7CuKWgUFsd2F5cwpydGMK0YHQutC1CuKWgXBlcmZvcm1hbmNlcwpydXB0ZWQK4paB0LTQstCwCuKWgW1hbmFnZXJzCuKWgVBpdHQK4paBbXlzdGVyeQriloFzZXR0bGUKdWxzZQpjcm9zcwpxdWVzdGlvbgphc2hhCnNlZWQKdXJhYmxlCkZpbmFsCisrKysKaW5wdXRzCuKWgWJhY2t1cAriloFMZWFybmluZwriloEqLApsb2dvCuKWgXNlaW5lbgriloF2dWxuZXJhYmxlCmRpcmVjdG9yeQppw6sK4paBZnJpZW5kc2hpcAp0dQriloFWZWMKcmlmaWNlCuKWgdCx0YDQsAriloFpbnZvbHZlClRPTgriloFjb3JyaWQKc2VwYXIKRGVzdHJveQriloFqdWwK4paBaW5lcXVhbGl0eQriloFhaW4KaGV4CuKWgXdpZGVyCtGC0LXQu9C4CuKWgWphY2sK4paBcXVvdAriloFHbGVuCmluaXRlbHkKaWhvb2QK4paBd2Fpc3QK4paBTWFuY2hlc3RlcgpyZWd1bGFyCuKWgSgmCuKWgW1hc3NlcwriloFERUZBVUxUCuKWgWNoYWlycwriloFGYXN0CuKWgWNpdHQKX3t7XApvYQriloEkXHsK4paBc2VlZHMK4paBQWxkCuKWgUJhdHQKZmFiCuKWgWRlbW9jcmFjeQpEVE8K4paBSGlqClBUUgpOYQriloFIYXJ2YXJkCnNpZApQcmVkCmZlcnMK4paBc3BhcmUKQU1QCuKWgWdyb3VwZQriloFzZW5kZXIK4paBQ2hyaXN0b3BoZXIK4paBcHJpc29uZXJzCuKWgUtlcgriloFDcmlzdAriloFBTEwKcmljZQriloFhbnRlcwpuYXR1cmFsCuKWgVN1c2FuCuKWgUp1bGkK4paBZGlhYgppeG9uCmljYXRvcgriloFmbGV4aWJsZQriloFyZXNlcnZlCkNvbnRhaW5zCuKWgUhpbAriloFJc2EK4paBdG93bnMKR1MK4paBVHJhZAriloFMb2NrCuKWgUdydW5kCuKWgWNyaXRpY2lzbQrQvdGOCuKWgWPEgwriloFwb2xpdGljaWFuCnN0YWJsZQpBY2NlcHQKU3VtbWFyeQriloF0YW1iw6ltCn1eey0K4paBSU0KaWRhbArQvNC+0YAKQmx1ZQpHUk9VUAriloF0ZXJtaW5hbAriloFjb21wbGV4aXR5CuKWgWxvY2FsbHkKRE9XTgriloFOZWFyCkRlcHRoCuKWgXBvbGUK4paBZXF1YWxpdHkKU2l0ZQriloFpc2luc3RhbmNlClNwZWVkCmlwcGkKLCYK4paBRW5jCtGJ0LXQvQriloFtYXRlcgriloFzbGF2ZXMKQUNUSU9OCnVzYWxlbQriloFoYXoK4paBQmVhdAriloF3cmVzdAriloFsbGFtCklucwrQvNC40L3QsAriloHQsdGD0LIK4paBRnJhbWUKdXNoZXMK4paBdmlydHVhbGx5CuKWgVBlcm0K4paBd2VpZ2h0cwriloFsbHZtCuKWgWNhdmUKc3RhdGVzCkRNQQplbGx0CmlmYWN0CnZlbmRvcgriloFFbW1hCkxvY2FsZQriloFTRVQK4paBZ2VvbWV0cnkKU3R5bGVzCuKWgVJlZmVyZWUK4paBd2VpdApmaWNhCuKWgWFkcwpncmF5CuKWgUJ1cmcKaW9uYQpkYWdnZXIK4paBSmFudWFyCtC00LXQuQppc3RlcnNjaGFmdApwcG8Kb2lkcwriloFkw6lwYXJ0ClNoYWRlcgriloFjb25zdHJhaW50ClNlY3JldAriloFQZXRlcnMK4paBZXllYgriloFtZXNoCuKWgWNvb2tpZQriloFQaWNrCuKWgW5pY2sKYnllCuKWgXNhdmluZ3MKVHJ5CnB5dGhvbgriloFwYXRyaQriloFtdWx0aXAK4paBa2luZGEK4paBJ18K4paBRnJhbnoK4paBY2xvdGgK0LfRg9C70YzRgtCwCuKWgWZsZWV0CuKWgWh1bWFuaXR5CnJlc2EKYmxvYgriloFUWAriloFCdWNoCuKWgUxvbmQK4paBdmFsbGV5CuKWgW11cm0K4paBVHJhZGUKbGluZXdpZHRoCuKWgWVzcGVjaWFsCnVwcGVyCuKWgWhvc3AK4paBdGFudG8K4paBb2xkZXN0CuKWgVJvb3NlCuKWgWhpdHRpbmcKZG9nCm92aQp9LA0K4paBY29tcGF0aWJsZQriloFXZWJzaXRlCnBvY2gK4paBQmFnCuKWgWFjY29tcGxpc2gKQ2hyaXN0CmFzc2V0CuKWgVVudGlsCuKWgWdlbGQKTGlzdGVuClNCClNldHVwCmljaWEK4paBbHVtCuKWgWphbnZpZXIKUEFHRQriloFOdQovIgriloFkaXZvcmNlCkV4ZWN1dGUKRGVwZW5kCuKWgVNjb3R0aXNoCuKWgVRzCnJ1cHBlCuKWgXJlZnVzZQriloFPa3RvYmVyCmlqawriloFBbXkK4paBZGltaW4K4paBZ3Jvc3MK4paBdHJhdAppc2libGUKbWl4ZXIK4paBYXV0cmVzCuKWgW5lYXQK4paBb3Ryb3MKVm9pZAriloFzY2hvbAriloFXYWxrZXIK4paBdHViZQpvbG9naXN0cwriloHQs9GA0YPQvwriloFoYWJlbgp1YmVyCkFDVElWRQriloFBdHRlbmRhbmNlCuKWgdC+0L8K4paBYmxhZGUKb3BsdXMK4paBT3JpZ2luYWwK4paBbWFudWZhY3R1cmVyCmFzegrDonRlCnJlcgriloFKc29uCuKWgXN1Y2NlZWRlZAp1ZmZsZQriloFiYWNrZWQKZXNpYW4KdGljawpFeHRlcm5hbAriloFYSVgK4paBaGVhcnRzCuKWgdCf0L7RgdC70LUKb2x1CuKWgdC70LXRggpWSUNFCsOhcmlvCuKWgWZyYXVkCmVkdQpQcmltYXJ5CuKWgWdhbWluZwriloFwbHQKaWdhdG9yCklFUwpDb21waWxlcgriloFtb251bWVudAphZ2VtCuKWgVJhaW4K4paBbW9pbnMKb2t1Cm9zZXgK4paBS2Fuc2FzCuKWgWdlcHVibGljZQriloFKb3kKU2NlbmUK4paBa2luZ2RvbQpyaWNlcwriloFqdWluCuKWgXVuY29tZm9ydGFibGUK4paBTW9uZXkKb2JiCmV4cGwKc3RyY21wCuKWgWRyZWFkCnJpdGlvbgriloFDaGkK4paBZGVtb25zdHJhdGVkCuKWgXZlcnRpY2VzCtGH0L4K4paBQ3VsdHVyZQpGWApEaWN0aW9uYXJ5CuKWgURydQp0cm0K4paBZXhhbWluZQriloF0aGVyYXAKacOobWUK0LzQuNC90LgK4paBcHJvZHVjZXMK4paBcGhvdG9ncmFwaHMK4paBdGhyZWFkcwriloFNSQriloFleHRyYW9yZGluYXJ5CtGB0LrQuNC8CuKWgWdlcHVibGljZWVyZAriloFQb2xhbmQK4paBZ3VhcmFudGVlZApSRwpvc2MK0LDQu9C4CuKWgdGC0LXRhQplcnJubwpzY2llbmNlCmlmZnMK4paBVGFtCuKWgUJldGgK4paBVHJhdmVsCuKWgXRyYW5zbGF0ZQpjaMOpCuKWgWxpbmcK4paBYmVsb25ncwriloFlbGVjdHJpY2FsCmVuc2sK4paBQ29tcGV0CmNnClZDCnRvcGljCuKWgXByZXN1bQrQstC10YLQsAriloFhcHByb3hpbWF0aW9uCuKWgWdyaW0K4paB0JjQtwpfeygK0LLQuNC9CnV0aW9uCm93eWNoCsOlZwpzdGVycmVpY2gK4paBY2hhcmFjdGVyaXN0aWMKb21pbmcK4paBLyohCuKWgXByaXplCuKWgU1pbm5lc290YQp0ZWQK0YbRiwriloFPbQriloFpbmRpY2VzCuKWgXN0ZW0KcmVnb24K0L3QuNGH0LUK4paBU2FsdgrDqXNlCuKWgWFnZWQK4paBUGFzdAriloFpbnRlcm5hdGlvbgriloFWaWMK4paBcmVzdW1lCmFrZXNwZWFyZQriloFlc3RhZG8K4paBYWJpbGl0aWVzCuKWgWJyb3cK4paBTkZMCuKWgXRyZW5kcwriloFBdXN0aW4K4paBTElNSVQK4paBS29yCuKWgWZvbGsK4paBd2FyZAriloFuZXN0CuKWgUp1bmlvcgriloFtYWludGFpbmluZwpQdWIKT0JKRUNUCuKWgWJsb29keQriloFzagriloFkdHlwZQpQYW5lCuKWgWJhY3RlcgriloFncmFkdWFsbHkKbXIKVGVhbQriloFpbmRpY2F0aW5nCuKWgWRlY3JlYXNlCnRlawriloFSZXByZXNlbnQK4paBZGV2ZWxvcGVycwpHdWlkCuKWgURpZXQK4paBcmV0cgpOYXZpZ2F0aW9uCmVzaQriloFsYXp5ClN0YW5kYXJkCkVyCkFXCuKWgcOJdGF0cwriloFhc3N1cmVkClNhbgriloFBbmRyZQrigJksCmZhbmcKw6lyYXRpb24K4paBaW5kdXN0cmllcwriloFpbmNvbgpFbWl0CuKWgdCz0LTQtQriloFyZXRyaWV2CmVuaQriloFUdXJrZXkKaXplcnMKQW5nbGUK4paBb2MK4paBcGFsbQriloFzdGFuCtC70YzQvdC+CuKWgUNTUwriloFmcmFuY2VzCuKWgWdyaW4K4paBdGllbXBvCuKWgVByaXgKXSkuCuKWgWRlcHV0CuKWgVBpbgriloFzaXh0CuKWgXByZWRpY3RlZAphenVyZQriloFNb3RvcgriloFpaG0K4paBbWFudXMKYXBvcwriloFpbnN0cnVtZW50cwriloFjb3VudHMK4paBYWltZWQKcHJvZml0CuKWgWRvawrQvtCx0YDQsAriloFlc3R1ZAppZXN6CuKWgXBpc3MK4paBaW5hdWcK4paBdm90ZXJzCuKWgXBhY2thZ2VzCuKWgWN1dGUK4paBZml0bmVzcwriloFsZXVycwriloFzb3J0ZWQKcGhhbnQKT1BUCuKWgXppcApzZWFzb24KZW1pCmVuY29kaW5nCndvbgplbGVjdAriloF0b290aAriloF1cGNvbWluZwriloFHcmFoYW0KbnV0CuKWgUFyawrDpGx0CuKWgXByZWNpb3VzCmFnbGUKbsOpZQrQvdC40YbQsAphcmlzCuKWgXBpbGUKY29sZQriloFXSVRICnJvdXRpbmcK4paBKioqCkFwcGVhcmFuY2UKbGx2bQriloFPbGl2ZXIK4paBUEwKaWZuZGVmCmV0enQKc2tpZWdvCuKWgXBvbgpBUkdFVAprw7YKYWxsZWQK4paBPVwKc3VyZQptYXRjaGVzCuKWgXRlbXBlcmF0dXJlcwpTRUwK4paBY2xvbmUK4paBZWxsZXIKZXJuYQriloHQv9C+0LvQvgpNYW5hZ2VtZW50CmNvbXBhbnkK4paBbHVuCuKWgXN0cmVhbWluZwriloFOaQriloFzw60KQ29udGFjdAriloFDcmVkaXQK4paBT2FrCuKWgdC/0YDQtdC00YHRgtCw0LIKcmFkaXVzCmNsaQpJRU5UCuKWgUx1Y3kK4paBY2FsY3VsYXRpb24K4paBcGl4ZWwK4paBbXVsCuKWgW91dGNvbWVzCuKWgWNlbnRlcnMK4paBcmVzaWRlbmNlCkNvbnN0cmFpbnQK4paBcHJlc2VydmUKcGVvbgp1ZmZpeAriloFSb2JlcnRzCuKWgXByb21vdAo/IQpiYWxhbmNlCuKWgWNvdXJ0cwriloFkaXNnClBSSU5UCuKWgdC40YUKZWxmYXJlCuKWgXJldHJlYXQK4paB0JDQsgpDb3N0CmFsc28K4paBRsO8cgriloFNw6RyegpESU8K4paBYmV6CkFVVEgKRGVuCuKWgWF0b20K4paBcm9tYW4K4paBUGVsCuKWgVJvb3NldmVsdAriloFQbGFudApDb250ZW50cwriloFCZXR3ZWVuCuKWgWNvdXBsaW5nCnN0cnVjdHVyZQriloFNYXJzaGFsbAriloFDYXJlZXIK4paBcmFpbHdheQriloFCdXJlYXUK4paBcG9zc2liaWxpdGllcwriloFrb3IKKXsNCm1lcm8KbW92CtCw0L3Qs9C7CkFJTgptdW5kCmxldHRlCuKWgXN1bW1hcgriloFkZXNjcmliaW5nCuKWgU5BUwriloFFbWIKSW5zdHJ1Y3Rpb24KbGllc3QK4paBU2lnCkJpbGwK4paBdmVyZApwbGFudAriloFnYWxheGllcwoiXSkK4paBUHlPYmplY3QK4paBR3kK4paBbcSbCuKWgW9yZ2FuaXNhdGlvbgpIZXIKU2VwCm9jb20K4paBU2FtZQriloFiaXRlCuKWgVNlYXR0bGUK0LfRi9Cy0LAKT2JzZXJ2ZXIK4oCZLgriloFtb3JwaAp1cmNoZXMKYWxwaApyZWVtZW50CmNvbnNpbgpeLQriloFkYW5uCnRyYW5zbGF0ZQrQstC40YUKUmVhY3QK4paBY2F0cwriloFicmV3CuKWgWRzCuKWgWNpcmNsZXMK4paBZHJpZnQKYWdtYQriloFWYWxlbnQKUElOCkFSTQriloFzdXJ2aXYKYWxpbgpQcmVmCmZyaWVuZGx5CuKWgXVuY2VydGFpbnR5CuKWgWZkCuKWgWVuZ2luZWVyCkJlbgppY3VsYXIKb3Jlc3QK4paBaG9yaXpvbnRhbApVVEMKdGV4dHJtCkxpdmUKU2NvcmUK4paBR2VybWFucwpkaXN0YW5jZQp1dGkK4paBw6lxdQriloFudW1lcmljYWwK4paBcmVhc3MKQWN0aXYK4paBY29kCmJ1bGxldAplbnNpbmcK4paBR2VtCuKWgW5hdmlnYXRpb24KYWRkQ2xhc3MK4paBc2ltdWx0YW5lb3VzbHkK0LLQuNC5CuKWgdC50L7Qs9C+CuKWgUjDtgriloFoYXJzaApwcmVjYXRlZArQodCh0KAK4paBRXF1aXAKYWRnZXQK4paBVFlQRQriloFtZwpJR0gK4paBdmluCuKWgWZpbmRpbmdzCml2YW4K4paBcG9zc2Vzc2lvbgriloHRgtC+0LPQvgriloFwYXJzZWQKcmlvcnMKemVpY2huZXQK0L3QuNC60L7QsgpXb3JrZXIK4paBZW5hYmxlcwriloEoJFwK4paBQ29weQriloFvcmllbnRhdGlvbgrRgdGC0YDQtQriloFJbmRpYW5zCuKWgUdhcnkK4paBSW5zdXJhbmNlCmlzYW4KQ2hhdAriloFjb211bgriloFjb3JvbgrQvtCz0YDQsNGE0LjRjwp1cGRhdGVkCuKWgdCY0L0KVGhlc2UKU0VDCuKWgWJveWZyaWVuZApEaWFnbm9zdGljcwpIaW50Cm11bAriloFpbm9kZQp4QQplZnQKT1BUSU9OCnVuY3QKYW5ub24KRU5TCnN0cmlwCuKWgWVudGh1c2kK4paBV2hpdAriloHQpNC4CmF1ZGUK4paBZGlzYWdyZWUK4paBc25hcHBlZApQaHlzCuKWgVN5bgriloFzb3VyCuKWgUx1eAp1Z2FyCnRpbGUK4paBaW5mZWN0aW9uCuKWgUZlYgriloFDaGVtCmRhdGFzZXQKY2h0cwpEeW5hbWljCuKWgdGB0YDQtdC0CuKWgXF1ZWVuCndvcmtlcgpzd2FwCuKWgXRpbWVzdGFtcAriloFJbnRlZ3IK4paBaW50ZXJ2aWV3cwpzdWNoCuKWgWxhdWdodGVyCnByb2YK4paBQmlyZAoofArDom4K4paBZ3JhCiY9CnplbnMKZ2V0TWVzc2FnZQriloFPc3QK4paBZ2FiCuKWgW1vcnRnYWdlCm11bHRpY29sCkxFVkVMCnBhcnRpdGlvbgpzZWVuCuKWgWRlY2xhcgpBVQriloFveAriloFsaWdnZXIK4paBQ2FybQpnZW1lCuKWgVZlZ2FzCuKWgUV1ZwpvcnVzCuKWgWJyaWNrCuKWgWFzw60K4paBTWFnYXppbmUKSGFzQ29sdW1uVHlwZQpWUgpsaWNoZXIK4paBRnV0dXJlCuKWgUp1ZwphdHRhbgpjb25zdHJ1Y3RvcgpWUAriloHRgtGD0YAK0YfQuNC90LAKQ29tcGFyYXRvcgriloFhdXRoZW50aWMK4paBbW9uc3RlcgriloF0cmFuc2Zvcm1lZAriloFmaXJtcwpGVwriloFjYXRhbG9nCmJvYXJkcwriloFkaXNlYXNlcwriloFCZW5qYW1pbgriloFob3Jpem9uCuKWgUF2YWlsYWJsZQpNdmMKU3R1ZAriloFsb3JkCmdlbmVyYWwK0L/QsNGACuKWgWNhYmluZXQK4paBQmFzaWMKVGVzdENhc2UKYW5zawriloFTbm93CmllcnRlbgriloF2b2NhbApQYWRkaW5nCmhhbHQK4paBQWxleGFuZAriloFDb2xvbWIKaXZhbWVudGUK4paBYXJ0aWZpY2lhbAriloFBdGxhbnRhCuKWgW1lbnRyZQriloFlc3RhYmEKamVrdAriloFzbGVwdAriloFlbmRsZXNzCsOpcm8KYXR0ZXJ5CnV1cgriloF3ZWFrbmVzcwriloFhdHRlbXB0aW5nCkJZVEUK4paBZm91bmRlcgriloFzYWx2CuKWgU1lZGljaW5lCnRpZAriloFTY2h3ZQpyYWN0aW9uCuKWgcK/CmNyYXRlClNFUlZFUgriloFjb21wb3VuZAriloFjb252ZQriloFjYWYK4paBaGFuZGZ1bApvbm5lCsO6YmxpY2EK4paBZGVmZW5zaXZlCkFsaWdubWVudAriloFwcsOpYwriloFzaWduaWZpY2FuY2UKw6lsw6kKYXJ0YQpEYW0K4paBcGVycGV0CuKWgWNhbGxlcgppY2llbnRzCmNlcAriloFNdWx0aQriloFzdG9sZW4K4paBZm9jdXNpbmcKZW1iZWQK4paBYnJlZQriloFBQgriloFvY2Nhc2lvbnMKc2VhClByb3YK0YfQtdC90LjQtQriloFDYXRlZ29yeQriloFzcQriloHQpNC1ClZBCkRpZmYKVHJpCmlzc2VtZW50CuKWgWFjdHJlc3MK4paB0J/QtQriloFqZWoK4paBdHdpc3RlZAriloFOaWNvbAriloFqdW5pb3IKU291bmQK4paBQnJhc2lsCuKWgWp1aWNlCuKWgT4+PgriloFBbGIK4paBc29mdGx5CuKWgU1jSwriloFHcmVuCuKWgWl0YWxpYW5vCuKWgWNyZWF0dXJlcwriloFyZXNpZGVudGlhbAriloFJbnN0YWdyYW0KdWNrcwriloFraWxsZXIK4paBSm9obm55CuKWgWVudGVycHJpc2UKRHRvCmNoZXN0cmEK4paBVGVsCuKWgUFjdGl2CmZhY3RvcgpvdXN0CuKWgXZhY3V1bQrRgNCw0LsKJyktPgriloFMZWZ0CuKWgWRlZmVjdAriloFuaW5ldGUKZmFyZQriloFyZWdyZXQK4paBc2hhcgpjdHJpbmUKbWVzaApjaXR5CmljaXQK4paBRmVtCmxpbWl0ZWQKb2thCiFcIVwKRG9uYWxkCtC30L3QvgriloFwcm92aXNpb24K4paBZGlzY3Vzc2lvbnMKRHJhZwriloFJbmNsCkV4aXQK4paBQWJkCnN0b3J5CmlldmUK4paBYnnFggpvbHZpbmcKd29obmVyCuKWgWd1aWRlbGluZXMK4paBc3RyYXcKw7xzcwriloHQsdGD0LvQvgriloFidXJkZW4K4paBc3BhdGlhbAriloFzdHJldGNoZWQK4paBSW5mCuKWgXR5cGVkZWYK4paBcm9ib3QK4paBRG9jCnBsaWVycwp3YWwKY2FtcAriloFkaWZmw6kK4paBTWNHCuKWgXRlbAphcmV0dGUK4paBc3Vic2VxdWVudGx5CuKWgWhvbmV5CkZVTkMK4paBZXN0YWJsaXNobWVudAp0ZXN5CuKWgWt0w7NyeQriloHRgdC10LvRjAriloFGTwriloFJc2xhbmRzCuKWgW1wClNjYWxhcgriloFZYW4KY2tlbgriloF2YXJpYXRpb24KacSFCm9wdGltCmF6b3IKdHVwbGUK4paBZ3Jhdml0eQriloFjb25jbHVkZQriloFjb2xsZWN0aW9ucwrDqXN6CuKWgUxpdmVyCuKWgWV0aG5pYwpjb21waWxlCuKWgXBhcmwKU3VyZmFjZQp7JwriloFwYXJhZ3JhcGgKcG9zaXRlCsOtdHVsbwpvYmEKYmluYXJ5CnJvYgriloFQZWRybwriloFmaXMK4paBR3JhbmRlCm9kb3gK4paBcG9zdGluZwo8IS0tCuKWgXJhY2lhbApDT00K0ZHQvAriloFBVVQK4paBZGlzaGVzCmFzc2VydFRydWUK4paBR3JvdwriloFzbGlkCuKWgWp1aWxsZXQK0YHRgdC+ClJ1bm5lcgpTYWwKU2FtZQriloFTdHVkeQriloFDb2xvbmVsCuKWgUpvaW4KYXJtcwriloFseQriloFjb29wZXIK4paBY3VydmVzCkhlYWx0aAriloFNT0QK4paBcHJpbW8Kb2NrZXRzCm11bHRpY29sdW1uCuKWgdCh0LDQvQriloFIdW50ZXIKQ3VzdG9tZXIKb3RoeQpEZXNpZ24KbWFzcwriloFmYW1pbGxlCuKWgWZ1ZXJvbgrDpG0K4paBaGVhZHF1YXJ0ZXJzCuKWgWRpZ24K4paBUm9iaW4K4paBbWVldHMK4paBc29pdArQv9Cw0LTQsAopIik7CuKWgXdyYXBwZXIK4paBdGhlb3JldGljYWwK4paBdWQKcGxpY2l0eQriloF3cAriloHQuNGB0L/QvtC70YwK4paBY2FtcHMK4paBQWdlbmN5CmdjCmh1bQpBVFQKQnRuCkNlbnQK4paBSGVsZW4K4paBYW1wbGl0CuKWgU1lbW9yaWFsCnVuZGlhbApTSElGVAp3aWsK4paBTGlldXRlbmFudApWQUxJRAriloFCYXRoCuKWgUplZmZlcnNvbgriloFDdXQK4paBc2VydmVycwpseXBoCuKWgUNPUFkK4paBY29tcHV0ZXJzCmNvbnN0cnVjdGlvbgriloFQREYK4paBcHJvdGFnb24K4paBZm9yZWhlYWQKY3VzdG9tZXIKVW5pcwriloFzaWduaW5nCi7igJkKRmV0Y2gK4paBU2NvcmUKaHVtYW4K4paBZG93bnRvd24KSW50ZXJuCuKWgWJlc2lkZXMK4paB0LTQstC+CuKWgdC/0YDQsNCy0LgK4paBY2MK4paBRGVidWcK4paBQ2xvc2UKZWxpaG9vZAriloFhbGdvcml0aG1zCuKWgUhhbWIK0YfQvdCwCuKWgWN1c3QK4paBbW91bnRlZApwYXJlbgriloFpc29sYXRlZAriloFBZ3IK4paBb3JiaXQKcHJpbnRrCuKWgXR1cmIK4paBZ3J1cG8K0LzQuNC4CiIiIgriloFoaWxscwrRgNGP0LQK4paBQm9kCuKWgdC+0LHRidC1CmVzdG9uZQriloFzYXRpc2Z5aW5nCuKWgUl2YW4K4paBYXNzb2NpYXRlCm5hbWVkCm9jY3VwCkdQSU8KaGl0CuKWgWRpc3RyYWN0CuKWgWJhcnJlbAriloFpbnZhcmlhbnQKZGlkCuKWgWxpZXUKc2NlbmUKVU5LCuKWgU9udGFyaW8K4paBTWlzc2lvbgp6aWFsCuKWgWNvbXBldGUK4paBY291cGxlcwpTSEEK4paBc2VpCuKWgW1pZ3JhdGlvbgphY2tlZAriloFiYXJuCmhhbGYK4paBbmVpZ2hib3VyCmZ0ZQriloFvZGRzCuKWgW9wdGltaXphdGlvbgriloFJQwriloFIZW5kCnBheW1lbnQKTXIKJyk6CnZvaXIK4paBUmFuZ2UK4paBcG9saXRpY2lhbnMK4paBS2hhbgriloFzaGVsdGVyCuKWgXRpbWluZwpDcmVhdGVkCuKWgXNlcHRlbWJyZQpsaXQK4paBU2hlbAriloFjb3VjaAriloFkw6RyCnVsdHVyCuKWgUdpb3YKw7RsZQpSRUFNCuKWgU9jZWFuCuKWgU1CCuKWgWxpZWd0CuKWgW92CuKWgWNhcnBldArRgtCw0YAK4paB0LPQvtC00LjQvdCwCuKWgVPDo28K4paB0L7RgtC90L4KYWJsaW5nCmludGgK4paBcHVyc3VlCuKWgUNvbnN0aXR1dGlvbgphbmoK4paBRkJJCuKWgWFycm93CnBob25lcwriloFrbm9ja2VkCuKWgWRlY29tCmllawrRjNC1ClN0cmlwCuKWgVZlbmV6CuKWgXB1cHAKYmlhbgriloFjb3R0b24KaHAK4paBdGhlYXRyZQriloFhY2NlcHRhYmxlCmN1c3Npb24K4paBcm91bmRzCuKWgWFjdGl2ZWx5CuKWgWFtb25nc3QK4paBYWJjCkZNClBvcHVwCuKWgWRpdmVyc2l0eQp1c3oK4paBZW1wbG95ZXIKc3BlY2lhbGx5CuKWgXN1c3BlY3RlZAriloFjcnlwdAriloFPc2Nhcgpub3IK4paBYmFiaWVzCtCy0L7QvAriloFtdW5kbwriloFsaWJlcnQKU0cKYWhyZW4K4paBbWFnbml0dWRlClRNCicrCuKWgdC+0LHRigriloFHdXN0CuKWgWdyYWluCtC80LXQvdGCCnRvRXF1YWwK4paBbW9zCuKWgWNvbnNpc3RlbnRseQrRhdGDCuKWgWRvbWluYW50CkNvbnZlcnRlcgphdGFibGUK4paBSmFnCnNjcmlwdGlvbnMKeEIK4paBwqkKZm9sZGVyCuKWgXN1YnN0YW5jZQriloHQv9C+0YEKTG8KQlVTCmJhc2ljCnVzc2VuCuKWgWNvaW5zCjotCuKWgU5lbHNvbgpJbm5lcgpvZ3JhZsOtYQriloFleGVtcGwKY2hnCuKWgXN5bmQKZHluYW1pYwp2ZXJ0ZWQK4paBRVZFTlQKc2VlawphdmllcgriloFwcm90Ci0tLS0tLQriloFjb252ZW50aW9uCuKWgdGB0YLQsNC90L7QstC90LjQutCwCmdsaW5nCmhvcmEK0YjQuNC5CuKWgXdoaWxzdApzZXJpYWxpemUK4paBUmluZwooWycK4paBY2hlcgrRgdGM0LrRlgriloFEYW5ueQriloFyZWFjaGVzCuKWgWVsaWdpYmxlCuKWgVBhcmVudAriloFjYW1lcmFzCuKWgWRpc2NpcGxpbmUK4paBc2lsbHkKcmV0cwp5dGljcwriloFSZWdpb25hbAriloFCYWJ5CnRlbGUKV0FSTklORwpzdXBwCuKWgXJlZmVycmluZwriloFtZXJjaApvbHZlcwplbWV0CmNrZQriloFNdW5pY2lwCldoaXRlCuKWgcWaCnJpb3MKbG9nZ2luZwriloFkeAriloFzdXNwCmV4dGVybmFsCuKWgUxpYmVyYWwK4paBSW5pdGlhbGl6ZQriloFleGhpYml0aW9uCuKWgWV4dGVuc2lvbnMKa2VlcGVyClNZUwriloFKYWtlCmZvb3RlcgriloFwaG9uZXMK4paBcmVhbG0K4paBY29udHJpYnV0ZWQKTUVTUwriloFGb3JtYXQKUGVyaW9kCuKWgWhpZAriloFtZXRyZXMK4paBRGltCmFjaGVsb3IK4paBVGFrCuKWgdCy0LXQu9C4CuKWgWdyYW0K4paBTVkKb25kZXJzCic7DQriloFGcm8K4paBYWR2YW50YWdlcwppb3YK4paBc2hlZXRzCmNlbWJyZQrFvmUKXQ0K4paBREoKc3Vic2V0ZXEKVVBEQVRFCuKWgWJsb2NrZWQK4paBcGFuZWxzCkVBCm5kZQrDqnQKQnVsCuKWgW1ldGVycwpqb3VyCuKWgXJhcHBvcnQK4paBSmFrCuKWgVZBTAriloFwdXAK4paBa2EKZm9yY2VkCuKWgdCw0LLQs9GDCmVuZXJneQriloFWYQpub3RlcwriloFyZWxheGVkCkNyCmlkZGluZwriloFkZWZpbmVzCuKWgWtpc3NlZAriloFpbnZhc2lvbgriloFzY3JlZW5zCkN0cmwK4paBcGFzc2VuZ2VycwriloHQpdC+CmF0aW9uc2hpcApwZXJjZW50Clx9CuKWgWJlYXRpbmcKbGlmZXJheQriloFWTQriloFHYWJyaWVsCuKWgWdhbGxlcnkK4paB0JvQvgppdm90CuKWgXJlbnRhbAriloFzaG9ja2VkCuKWgVN0ZWluCuKWgUJoCuKWgdC70L4KVW5lCtCz0LXQvQriloFrb21tdW4KYW5rYQriloFDYXBlClJlYWR5CuKWgdC60YDQuAp0cmFnCkFsaWduCuKWgWhvc3RlZAriloFcKAriloFTZXNzaW9uCnlzawpQZW5kaW5nCmVsbGlnZW5jZQriloFOZXZlcnRoZWxlc3MKYml0cm8KaG9sbQpxdWlyeQriloFtZWNoYW5pY2FsCuKWgUTDqQphbmVvdXMK4paBcHN5Y2hvbG9naWNhbAriloFhYnJvYWQK4paBYXZvaXIK4paBc2VwYXJhdGlvbgriloFIYXdhaQppZWpzYwriloFOZXRoZXIK4paBc3VidGxlCmJpcmQK4paBbWFya2VyCuKWgdGB0L7Qt9C00LAK0LLQsNC70LAK4paBV29ya2luZwriloFob3ZlcgolJSUlJSUlJQriloHQvNCw0YIK4paBc291cApBbGVydApjaHIK4paBUENJCuKWgW3DunMKaWVudHJhcwriloFTdG9yYWdlCuKWgWF2YWlsYWJpbGl0eQriloFvcGVyYQriloFQcm9kdWN0aW9uCmlhbmUK4paBQmV0dGVyCuKWgUJ1dHRvbgriloFQZWFjZQriloFNb3JyaXMK4paBc2liCuKWgWZpYmVyCkludGVudAriloFEZXNjCm5pbmdlbgp6ZWoKYXZhbgpjb3ZlcmVkCuKWgXN5c3QKXysK4paB0L7RgNCz0LDQvdC4CuKWgVJlbGlnCtGG0LjQsNC70YwK4paBc3BpdGUK4paBcmVwcsOpcwriloF+fgriloF0b3hpYwriloFhcHJvClhZCuKWgXRyaXBzCuKWgXBsYWF0cwriloFjb252ZXkKUHJpbQriloHQvtGB0YLQsApva28K4paBbG9iYnkK4paBcmVjb21tZW5kYXRpb25zClNQQUNFCuKWgW92ZXJ3aGVsbWluZwplbm5lc3NlZQriloFhY3F1aXJlCndtCkxPQkFMCuKWgURFRgpqZXIK4paBcmVjdXIKb21tZW4K4paBam9nCuKWgW5hc3QK4paBTFAKam9uCuKWgXdpc2hlcwriloFOYW5jeQriloFzdXBwb3J0ZXJzCl57LVwK4paBVHJpYgriloHDhAriloFkaXNhcHBvaW50ZWQK4paB0YPQvdC4CnhECmxpbnQKSXAK4paBSXNsYW1pYwrDpG5kZQplbmRtZW50CmR0eXBlCuKWgWRpZ2VzdAriloFTZXR0aW5ncwrDqXJhCuKWgWFnZ3Jlc3NpdmUK4paBaW50ZWxsaWdlbnQKZWRlcmLDtnJkCnN0ZXJkYW0KcGNpCuKWgW92ZXJmbG93CmltYgpyZWFjaApjZXB0b3IK4paBeWllbGRzCuKWgVNlYmFzdAriloF1dGlsaXR5CuKWgdGA0LgK4paBZmFjdWx0eQriloFJbnRlcm5hbAriloFhdHRyYWN0ZWQK0YDRltCyCuKWgW1peGluZwriloFSdXRoCuKWgWVzY2FwZWQK4paBRWFzeQriloFkcmFpbgriloFyaW5ncwpxdWlyZQpBdmFpbGFibGUK4paB0YbQuAriloFjb252aW5jZQpvcnNjaArRg9GC0LHQvgpDUFAKcmFnZQrRh9GWCuKWgXByb2QK4paBcGlnCuKWgUNhdGFsCuKWgWFsaWFzCuKWgdGH0LXQvNC/0LgKUGxhY2UK4paBZ29yZ2UK4paBZGVwZW5kZW5jZQriloFjcnVlbAriloF0aGVybWFsCnV0ZG93bgpyZWZyZXNoCuKWgXJlc29ydAriloFTSEEK0YLQuNC5CmZvb2QK4paBTmFkCuKWgXByZWduYW5jeQriloFwcm9qZWN0aW9uCuKWgXBhw61zCuKWgdC/0L7Qu9GD0YfQuAriloF0aGVtZXMK4paBZnVuZXJhbAriloFjYXNvCtC70LXQutGCCkV4dHJhCuKWgXRpc3N1ZQriloFkcmFnb24K4paBbGlnCuKWgW5laQriloFjb21lZHkK0YLQtdC8CtGB0LvQsNCyCuKWgXBhc3NlbmdlcgpDbG9uZQppw6fDo28KeWdvbgriloFIYWxmCuKWgWxhYm91cgriloF2aWxsYWdlcwriloHQstGW0LkK4paB0J7RggriloFMaXNhCl9bCmJhZwriloFkaXZlcgriloFNTAriloF0cmFuc2xhdGVkCuKWgXBlcsOyCmFiYW1hCuKWgWNhc3RsZQoqXAriloFyZWdpYQohISEhCio+KAriloFXb3JrcwriloFOYXR1cmUKTkVMCuKWgVBvbQp0dGEK4paBSmFtaWUK4paBcHVuY2gKdGFpbm1lbnQK4paBS3JpZWcK4paBcmVzdHJpY3RlZAptb2JpbGUK4paBZ3JhbmRtb3RoZXIKQXJndW1lbnRzCuKWgXNpbmMK4paBTW9udGgKZXNjYXBlCuKWgW9wdGljYWwK4paBTGFuZQriloFEZXV0c2NobGFuZAriloFTYWlzb24K4paBVmlydHVhbApwZXoKSW5saW5lCm93YW55CnJhZGlvCsO2w58K4paBT3RoZXJzCk1BSU4Kc2NhbAriloFEYWxsYXMK4paBYW5jaG9yCmVuY2lhcwriloFyZXBvcnRlcgriloF2ZWdldGFibGVzCuKWgWVuZm9yY2VtZW50CuKWgVdpc2NvbnNpbgriloFjb25kZW0K4paBZWIK4paBc2l0cwriloFjYWxjdWxhdGlvbnMK4paBIi0tCnVlbGxlCuKWgXRpcG8K4paBUEFSCmNvcmQK4paB0YDQvtC60ZbQsgpwaGFuCuKWgWtvbm50ZQriloF6YXAKd3JpdGluZwplbmd1CuKWgXBlcnR1cmIKRmFjZQphZ29nCuKWgURlY2wKZXN0bHkK4paBV2FycmVuCuKWgUhpbGxzCuKWgXJlZnJlc2gK4paBZmxpcAppb3AK4paBa2V5Ym9hcmQKaXN0bwriloFwcm9tb3RlZApiYWNrcwpFbmNvZGluZwriloHYp9mECuKWgWdtaW4K0YDQvtCxCuKWgWZvbGxvd2VycwriloFwZXBwZXIKdW1ibGUK4paBc3ByYXkK4paBZHJpdmVzClB1c2gKY29va2llCuKWgWdlbGRpZwppZ3VuZwp2aXNpdAriloFhdG9taWMK4paBQXRobGV0CuKWgU9yaWdpbgriloFIYXBweQriloFHcmEK4paBYXR0cmlidXQK4paB0L/QvtCyCuKWgW5vc3QKdXJ1CuKWgU5laXRoZXIK4paBbWFhcgpqZWN0aW9ucwriloFyZW5vdgpmaW5pdHkKZ2VuZXJpYwppbml0aWFsaXplCnBnZnNldAriloFoeXBvdGhlcwriloFtYWNybwptYXBzCuKWgWZhcmUKQmVzdAp1Y2h0CmNvZAriloFob3JtCuKWgVBvbGwK4paBaG9zdGluZwriloFSZWFkaW5nCkNlcnRpZmljYXRlCuKWgdC40LzQsAriloFDb3YK4paBUHJlZApyZWRpcmVjdAriloFsYXR0aWNlCuKWgXBvcnRmb2xpbwriloFvdmVuCmllbGVuCnN1YnNjcmliZQpmb290bm90ZQrQvdC+0Y4K4paBbW9tZW50bwriloFkaWNoCuKWgWVudGVydAriloFnw6kK4paBY29ubmVjdGluZwriloFuYWNpb25hbAriloFvdHQK0L3RltCyCuKWgXJhY2lzdAriloFwZW5hbHR5CsO8bHQK4paBSXNyYWVsaQriloEo4oCgCuKWgWRlc2NlbmQK4paB0L7RgdGW0LEK4paBYmVsbHkK0L3RltGB0YLRjAriloFlbmNvdW50ZXJlZApUaXAK4paBZ3VpbHQK4paBZGFtcAp6ZXVnCuKWgU1lbW9yeQpDaGVja2VkCuKWgVNoYWtlc3BlYXJlCmhpbGwK4paBd29rZQriloFzYWxhcnkKZXRoZWxlc3MK4paB0KLQuAplcmRlCuKWgUhlaW4K4paBZ2l0Cj0iIgrDvGxsCmdlYmVuClByZXMKaWV2YWwKbWFya2VyCuKWgdC00LDQvQriloFvY3RvYnJlClJPTAriloFqYW51CuKWgSk6CmJyYW5jaAriloFKZXJyeQprZWhyCuKWgWNvbnRyYWN0cwriloFhZmZhaXIK4paB0KDQvtGB0YHQuNC4CmphY2sKQU5HCuKWgWRyb3BwaW5nCuKWgWRpYwpzY2hvb2wK4paBRmlubGFuZAriloFkb3J0CuKWgUtpbmdzCuKWgUFyZ3VtZW50CuKWgVNpbWlsYXJseQriloFWZXJtCuKWgXByZXRlbmQKIV8KxYJ1ZwrQttC10L3QvdGPCmRhdGluZwpjc3YK4paBZGlhbG9ndWUKU1RSVQriloFwdWJsaWNseQp3ZWRnZQriloFIb2NoCuKWgXNwZWFrcwriloFjb21wZW5zYXRpb24KYW5jYQp0ZXh0dHQK4paBRmlsdGVyCuKWgXBhcnRseQriloF1c2VsZXNzCuKWgdCz0YMK4paBZGV0ZXIKSUVXCuKWgWNvbnNlY3V0CuKWgWhvbHkK4paBZ3JhZHVhdGVkCmFuZGFsCsibaWUK4paBV2FudAriloFBdXN0cmlhCm9yZGVuCmZyYWcK4paBZm9vCmNsYWltZWQK0LLQvtC1CuKWgW5vdGFibGUK4paBam91cm5hbGlzdAriloFNYWlsCiEoIgpwc2UK4paBQ2xheQppdmkK4paBc2NhbGVzCuKWgWVyc3RlCkRhdGFUeXBlCuKWgURpYW0Kw61yCmxvY2FsZQriloFyZWx1Y3QKaWVuc3QKYXN0cm8KYWN0bHkK0Y/RhQriloFWaWxsYWdlCuKWgWRhdWdodGVycwriloFtYW51ZmFjdHVyZXJzCuKWgXByaW50aW5nCtGH0LrQsApOZEV4CkNoYW5nZXMK4paBLyoqKioqKi8KdmVydGV4CuKWgWJyb3dzCuKWgUvDtgpub3RhdGlvbnMK4paBaWxzCmF0ZWwKQ2lyCuKWgW1lYW5pbmdmdWwKcWEK4paBQ29sZAp1ZXRvCnlvdXIKbWYK0LzQvtCyCuKWgcOcYmVyCuKWgWZhbWlsaWEK4paBc3RlZXAK4paBcHJlc2lkZW50aWFsCuKWgXrDoQriloF3YXJzCuKWgUNyZQriloFhZnRlcndhcmRzCmhhbGIK4paBc3RydWdnbGVkCkNoYXJ0ClVzZXJJZAphY3VsYXIKaXZpYQriloF1Z2x5CuKWgUt1bnN0CkVzCuKWgVFTdHJpbmcK4paBQ293ClJhZGl1cwriloFHcmlmZgriloFWYXMKSEFMCk1vZGlmaWVkCnJhbGUKbWVtY3B5CuKWgdCy0LrQu9GOCuKWgXJzCuKWgWhhbHQK4paBTWlzc2lzcwriloFodXZ1ZAplY2EK4paBSmFocmh1bmRlcnQKRXVyb3BlClNpZ25hdHVyZQriloFncmFuZGZhdGhlcgriloFPcmVnb24KZ3VlCnh5Z2VuCmZyYW1lcwriloFoYWJpdHMKU3VwcG9ydGVkCuKWgWxvd2VyZWQK4paBcmFkaWF0aW9uCmFiZW4K4paBUHJvZ3Jlc3MK4paBQ29zdGEK4paBZGV2b3RlZAriloFnZXN0dXJlCuKWgURlemVtYmVyCuKWgXF1b3RlZAriloFkaWZmaWN1bHRpZXMK0YLRgNC1CuKWgXN1c3RhaW5hYmxlCuKWgWRlbnNlCuKWgWlocmVyCuKWgWZpcm1seQrDonQKb21lbnQK4paBY291dAriloFwb2kKZGphbmdvCuKWgXByb2ZvdW5kCuKWgVdpbGhlbG0K4paBZmx1c2gK4paBYXZyaWwKTEFCCuKWgUJyb3cK4paBcHJvcG9zZQriloFyYW5rcwpXSUQK4paBbXV0dWFsCuKWgXRleHRzCuKWgVNhbGUK4paBcXVhc2kK4paBbm9nCuKWgW5vdXZlYXUK4paBY3YK4paBbm9ibGUK4paBZMOpY2VtYnJlCuKWgWNsZXZlcgriloFQaXIK4paBZ3JhcGhpY3MK4paBR1IK0YfQtdGB0LrQvtC5CuKWgXNhZwppY3Rpb25zCm5hbnQK4paBdGjDqQpDRwriloFKYWNxdWVzCldNCuKWgUZpbm4K4paBZGV2YXN0CtC30L7QvArRhdC+0LIK4paBRW50cmUKLjsK4paBZmx1Y3QK4paBU2NpZW5jZXMK4paB0YLRgwpwYXRocwriloFzaG9ydGVyCuKWgXN1Z2dlc3Rpb24KRVJZCuKWgURpcmUKYXRldXJzCuKWgXJvdW5kZWQK4paBdGFydArRjtGJ0LUKdXBlcgriloFzZWNyZXRzCuKWgWNvbXBhbmlvbgriloFLRVkKVGlsZQriloFCaWJsaQp4cwriloFhbmd1bGFyCnBhZwplcm5lc3MK4paBU29ycnkK4paBcHJlZGljdGlvbgriloFNYWtpbmcK0L3QsNGA0L7QtApvbGFyZQpycGMK4paBdGVucwplbmFzCuKWgVJlYWxseQpISQpwb3J0YWwK4paBZm9ybWUKZ2FuZwriloFsYW5lCuKWgXN0YWcK4paBTWFyeAriloFMTEMK4paBZGFyZQriloFPbHltcGljCuKWgXBhbnQKYnVpbGRpbmcKOzsK4paBY29wcwriloFydXNoZWQK4paBTG90CuKWgWluaXRpYXRpdmUK4paBaW52aXRlCuKWgVNhZmV0eQpGQUlMRUQK4paBaGFiaXRhbnRzCmVuc2VuCuKWgWzDqWcK4paBV2VsY29tZQpWYWxpZGF0ZQriloFxdWF0cmUK4paBR3JheQriloFFdmUK4paBQ29tYgriloFwZW5kYW50CmFxdQpjb25maWd1cmUK4paBQWRtCuKWgXJpZmxlCuKWgUV4cGVyaWVuY2UKRGVjbGFyYXRpb24K4paBw6VyCmlsbGVyeQpvc3BlbAriloFBcmVuYQriloFib2FyZHMK4paBcHVycGxlCuKWgXBpbGxzCnVldG9vdGgKbGlxdWUK4paBcG9wdWxhdGlvbnMK4paBYWNjZW50CuKWgXJhbmdlcwriloFBbmFseXNpcwriloFkaWN0aW9uYXJ5CuKWgURyYWdvbgpyZWN0aW9uCuKWgXZpc2l0b3IKc2VnbWVudAriloHQtNGACuKWgUZ1Y2sK0LTQtgriloFpZGVudGlmaWNhdGlvbgpDbGFzc05hbWUKYm9vdHN0cmFwCuKWgXN1cmZhY2VzCuKWgXNjcmVhbWluZwrQutGC0YMKcGxhaW4Kc2hhZG93CmluY2x1ZGVzCuKWgWphenoK4paBw6FsCnJpa2EKaG9wCuKWgWlvbgp2cmUK4paBbmV3c3BhcGVycwriloFpaG4K4paBUGFyc2UK0J/QvgriloFzdHJpY3RseQriloFyZWNvdmVyZWQK4paBVW5hCuKWgWVycmUKaXNzdWVzCuKWgWV4cGVuc2UK0YfQtdC90LjRjwriloFkb25jCkJpbgriloFDb21tZW50CuKWgXNhY3JpZmljZQpUdXBsZQooKVsK4paBdHJhdmVycwpJbXAKSmUK4paBTGludXgK4paB0LXRkQriloFQaQriloFjdXJpb3MK4paBcmFnZQriloFlc2NhbAriloFhbGlnbm1lbnQK4paBcGVudHJ1CuKWgWN1cnIK4paBYmVzdGUKW10sCuKWgS8vIQpIdWIKVmlzaWJpbGl0eQriloFBc2sKYWJ1bApjb2xvbgriloFEYXlzCkF1dGhlbnRpY2F0aW9uCtCy0ZbRggriloFsb2QKeEZDCkxvb2t1cApqc2NlCkFscGhhCuKWgWhhcm1vbnkK4paBV2FyZAp0cmFuc2ZlcgriloFIb3JuCuKWgXNkCnNvYXAK4paBemljaAriloFDb25zb2xlCuKWgdC60L7Qu9C4CuKWgVBob25lCnBhcGVyCtC50L0K4paBem0KRG9uZQpwaGFzZQriloFKdWxpYQriloFlZGl0ZWQKYWZmZQpTeW50YXgKeWxsCuKWgUx1Y2FzCuKWgWFuZGVyZW4KWzwK4paBRGF0YWJhc2UK4paBc3BlY3RyYWwKYXNzYWRvcgrRgdC60LDRgtCwCuKWgWltcG9ydGFudGUK4paB0YXQsAp0egriloFzdGVyZQriloFtZWx0CuKWgUNyb3cK0YjQutCwCml0dXRlcwriloFzYXRpc2ZpZXMK4paBTGlnYQriloF0b21iCuKWgWbDvGhyCuKWgXNvbGVseQriloFFaXRoZXIK4paBdGVubmlzCuKWgXNpZ2gKc2VyZGUKdWJhCsSZZApsZXoKRmFjdAriloFzcXVlZXoK4paBVGhvbXBzb24K4paBTkwK4paBUGFyYQriloE/PwriloFmaW5pc2hpbmcKU2hlZXQKTElOSwriloHQsdGA0L4K4paBbG92ZXIKbWFjaGluZQriloFMZXNzZXIKcG9uZAriloFwYWludGluZ3MK4paBYXNzdW1wdGlvbnMK4paBbW9kaWZpY2F0aW9uCmZyZQriloFVbHQK4paBQUYKUlYKYmluZGluZwriloF0b2lsZXQKcmFyCuKWgWFuZ2UK4paBc2hlZXAKUFJPVE8KYWN0aWMK4paBU3BlZWQK4paBSWNlCmdudQpvd25lZApTdWJzY3JpcHRpb24KeXJpY3MK4paBYmFja3dhcmQKPiIuCnBpdAriloFyZWFsaXN0aWMKw7ZmZmVudAphemkKREVSCmJ1Y2tldArDqW55CnhGRQriloFmYW5jeQpleGNlcHQK4paBU3VsCuKWgWxhc2VyCk1vbml0b3IK4paBY29taWMK4paBQXJjaGl0ZWN0CuKWgWV4cHIKb3VudGVycwriloFNZWxib3VybmUKY29tcGxleAonLiQKb21vdAriloFNZW51CmFzdGljc2VhcmNoCuKWgWVkaXRpbmcKUHJlc2VudApvcGxlcwrDqG5jaWEK4paB0LLRgtC+CmdsaXNlCnNoZWV0CuKWgWhlbGljCuKWgXN0cmFuZ2VyCuKWgWV4ZWMKRkVSCmluaWFuClNFVFRJTkcK4paBTWl4CuKWgWNvbXBsYWluCuKWgWluY3JlbWVudApDU1MKbW1hCnNsaWRlCuKWgdC/0YDQvtGC0LjQsgriloFMaW1pdGVkCkNvbnNvbGUK4paBZW5nYWdpbmcKdWxlcgriloFPcHRpb25zCuKWgWxlbnMKTWFpbAriloFiYXJyaWVyCnRyYW5zcG9ydAriloFjdXBzCml0ZXJyCuKWgWNvbnN0YW50cwriloFUZWNoCml6aW8K0YHRgtGD0L/QsAriloFTd2VkZW4KYXRob24K4paBTWFnbgp0cmFuc2l0aW9uCtC00LXQu9CwCmVzawpTb2Z0CmZ1bmN0aW9ucwpuZWEKSW1wbGVtZW50CmV2ZXJ5CuKWgU1hbnVmYWN0CuKWgWltcHJvdmVtZW50cwriloFJbmRpYW5hCuKWgWhvc3RzCkNWCldlc3QKdG93bgpjYW52YXMK4paB0YjQutC+CuKWgUNvbHVtbgriloFQYXJrZXIK4paBZXNwYQriloFQdWJsaXNoCuKWgdC60L7RgtC+0YDRi9C5CmF2aXMK4paBWncK4paBZW1waGFzaXMKb2x2CuKWgXJlY3VycwppdGFpcmUK4paBQmlzaG9wCm5lcm8K4paBZGVueQriloFkb3ViCnBlb25hdG8K4paBQ291cnNlCuKWgVF1ZWVucwriloFibHVyCmVsZWQKaXpvCuKWgWTDqWJ1dAriloFNb2R1bGUK4paBYW54aW91cwriloFzdGFyZQriloFQcm9wb3NpdGlvbgriloFLdQriloFpYwpQZXJjZW50ClF1YW50CuKWgdCY0YHRgtC+CuKWgWhleAphc3NvY2kK4paBYXJyYW5nZW1lbnQK4paBYm9hdHMKVW5kCuKWgXNsb3RzCtGB0LXQvQpuZWNlc3NhcnkK4paBYXBwZWFyaW5nCuKWgVJ1bGUK4paBR1QKRm9yY2UKZXR0bwp6ZW5pYQriloFvdXRzCuKWgXZhcmlhdGlvbnMK4paBd2hpdGVzCuKWgWdsbwriloFCUgppY2t5CuKWgWp1cnkK4paBdHJlYXRtZW50cwriloFUaGVhdGVyCmtub3cK4paBcHJvZmlsZXMK4paBY29uc3BpcgriloFjbGFzc3Jvb20K4paBQmFzcwriloFsYXd5ZXJzCnZ1ZQriloFBcmMK4paBc2xhCuKWgWF0dGVuZGluZwpueApteApUT1AK4paBYm9yZWQKcHJldmlvdXMKcncKcHRpYwrRmdGDCuKWgWFwcGFyCuKWgVBvbnQKOl8KaWlpCuKWgWplcmsKaGVkcmFsCtGB0YHQsAriloFQcml6ZQriloHQoNC4CtCx0YDQtQriloFoYW5kbGVzCuKWgWphawriloFBZmdoYW5pc3RhbgriloFib3JpbmcKaWZpawriloFzaGFkZQphaXJvCm9kYXkK4paBcGxhdGVzCuKWgUNoYW1waW9uc2hpcHMK4paBY2hlZWtzCnJpa2UK4paBa8O2bm5lbgriloFhcHBsZQriloFFZGRpZQriloFzb2QK4paBdHJhaW5zCnBhbmljCuKWgUFkdmVudAp1YnJlCuKWgWTDpQriloFTeW1ib2wK4paB0YHRgtC1ClNhbQppbmhlcml0CmNhbWVyYQriloFjb3VycwriloFtYWtldXAKcmVnZXgK4paBVUUK4paBRGV0cm9pdAriloFXZWlnaHQK4paBUGlldAriloFhcmlhCkRJUkVDVAphY2VhZQriloFJbmZvCmFueWEKYmFja2VuZAriloFUZW5uZXNzZWUKcGlja2VyCuKWgUxlbwriloFQb3NzCnByaXNlcwriloFtYXR1cmUK0YHRjNC60LjRhQriloFGYW50ClJlYXNvbgriloFtb3kK4paBQmFrZXIK4paBc3Vic2V0CuKWgVN0YW5sZXkK4paBZWxldmVuCm9sYXRlCuKWgWZvcnR1bmUKU3RhdHVzQ29kZQriloFlbnRpdGllcwriloFPa2F5CtGG0L4KYW5vcwpyZWxhdGl2ZQriloFvcmRlcmluZwriloFOb2JvZHkK4paBc3RybGVuCuKWgXJvcGUK4paBY2lnYXJldHRlCmhvbGRzCmlyYWJsZQp2YWx1ZU9mClN0dWIK4paBcGhvdG9ncmFwaHkKZXN0cmEK4paBY3VsdHVyZXMK4paBZGVjbGFyYXRpb24KbWVyY2lhbApMSUVECmF1dGUKYWx0ZXIKU3VibWl0CuKWgU1hZ2ljCuKWgXJoeXRobQpQYXltZW50Cm5paAriloFpbnRlcnNlY3Rpb24KbMOpCkVOVFJZCi8pCuKWgW1vZwpydXN0CuKWgXRocmVhdHMK4paBTWlsaXRhcnkKYXBvcgriloFzaWd1CnNldG1pbnVzCuKWgUluZwpzdGF0aW9uClRha2UK4paBc2hlZAriloFGcmFuY2lhCnBvc3RzCk1hcmtlcgpMb3dlckNhc2UK4paBYmVmaW5kCuKWgUN6ZWNoCsOtY3VsYQriloFQZXJmb3JtYW5jZQriloFXZXMK4paBTGFycnkK4paBb3N0CuKWgWVtYWlscwriloFSZWxlYXNlCuKWgWFkYXB0ZXIK4paBcGFkcmUKYWNpbwriloHQt9C10LwK4paBZ2VuZXRpYwriloFVbmQK4paBYWNjZXB0YW5jZQrQtNCw0L0K4paBR2lybHMKY29tcGlsZXIKc3VuCuKWgXdoZWVscwriloF0aG9yb3VnaGx5CmdydW5kCnVuY3Rpb24K4paBZWxsYQpYRkYKdWdzCmllbnRvcwriloFETQriloFwb2xpdGlxdWUK4paBY2FtcGFpZ25zCuKWgVRva3lvCuKWgWFsYnVtcwpLRVJORUwKcGRhdGEK4paBbGFwdG9wCuKWgXbDoWwK4paBZm91Cm9yYgriloFUb3dlcgriloFHZXR0aW5nCuKWgWNvcm5lcnMKcGxlc3MK4paBc3BlY2lhbGlzdAriloFpdgpVaW50CuKWgW5hbWVseQriloFzY2FsaW5nCkV4dGVuc2lvbnMK4paBY2VudHJvCm9tb3JwaGlzbQriloFkw6lmCiksXAriloFjb250cmFyeQriloFzdHJpa2luZwriloFCZXJlCuKWgWZvcmVjYXN0CuKWgXpvbmVzCnNtYXJ0CmFzaGkKcmluCk5FVwriloFzaW11bGF0aW9ucwriloFSYXRoZXIK4paBV3JpdGluZwriloEkWwriloFhc3NoCuKWgWZhaWxpbmcK4paBbWFuaWYK4paBQm9nCuKWgURpcgriloFpbmZsdWVuY2VkCmNvbmZpcm0K4paBd2VpZ2gK4paBaW52ZW50b3J5CuKWgWFwYXJlCuKWgWV1CmNoYXJhY3Rlcgppb20K4paBb3JiCmRldmljZXMK4paBTEVECuKWgXByb3BvcnRpb24K4paBSG9ub3IK4paBYXBwcm9hY2hpbmcKZGVsZWcK4paBQkIKaGVscGVycwpyZXBvc2l0b3J5CuKWgdCx0LXRgNC1CuKWgWluaGFiaXQK4paBc8OjbwriloF0cmF2ZWxlZApuZXgK4paBQ2xpbgpDRVBUCuKWgW9mZmVuc2UK4paBaW5jZW50CklEUwriloFjb2VmZmljaWVudHMK4paBbHAK0YfQvdC+0LPQvgriloFjZAptdXN0CuKWgXNvb25lcgplemUKQ2F0Cm1ha2VyCuKWgXJhbmtlZApmdWxuZXNzCuKWgXBhcnRpYWxseQpQcm9tCuKWgdGE0L7QvQriloFQcm9iYWJseQriloFjYWNoZWQK4paBYmFsYW5jZWQKYWhvbWEK4paBTXVycmF5CuKWgWFsaQppdm9zCuKWgWJhcmsKSVRFTQriloFLaXJjaGUK4paBYWxsb2NhdGVkCkFsdAriloFhbcOpcmljCsOtbGlhCuKWgWNlbnMK4paBbGljZW5zZXMKYWN6CuKWgUdhdGUK4paBQkwK4paBcmVwdWJsaWMKUk9XCuKWgdGB0L7RgdGC0LDQstC70Y8K4paBRmlsaXAK4paBSW5kaXZpZAriloF0cmlhbHMKLyohCuKWgUdQCm5pa2EK4paBZXhlbQriloFhZHZlcnMKdW1wZWQK4paBRGV2aWNlCndha2UKRXhlYwphcmRpbmcK4paBcG9ibGFjacOzbgriloFrZWVuCuKWgWJpdGNoCuKWgWVtYmVkZGVkCuKWgUJvbmQKcmlkZXMK4paBV29tYW4KLlsKw6lyw6kK4paBSGFzaE1hcAriloFjb3VudGluZwriloFJbml0aWFsCuKWgXZlcnNlCuKWgVZlcmVpbgo+IiwK4paBYW50aApjaWQK4paBaHVudArQvdCw0LsKY2llcwpQaW4K4paBIyEK0LLQsNGPCnNuZAriloF1awriloFzd2lmdAriloF0ZW1wb3JhZGEK4paBZW52aXJvbm1lbnRzCmNsYWltZXIKZW1ldGVyeQpqw6RyCuKWgdGH0LDRgdGCClRyYW5zcG9ydAriloFBcnIK4paBUGFwZXIK4paBYmV3CuKWgWhhcnZlc3QK4paBLS0tLS0KcHJvZHVjdHMK0LvQtdGCCmlkZW50aWZpZXIKUk9PVAriloFNYWsK4paBQXBwcm8KaWVyaQriloFGbHkK4paBaXNzZXQK4paBZGV0ZXJtaW5hdGlvbgpHZW9tZXRyeQriloFlbWVyZ2luZwpzdWJzY3JpcHRpb24Kb2x5CuKWgVJhY2UK4paBQmFoCuKWgUNvbmZpZ3VyYXRpb24K4paBSW50ZXJlc3QK0YHQutC+0LIKaXN0cnoK4paBU2hhbgriloFQYWluCkNPTk5FCm1ham9yCuKWgVN0YXkK4paBYnJvbnplCuKWgWZpdHRpbmcK4paBSmFyCm1ncgriloFTaGFyCkZMTwp1dGVyCtGB0YsK4paBY29udGFjdHMK4paBZmlyaW5nCtC90LDQvQriloFwcm9mZXMKc2vDqQriloFydWxlZAo9Ii8KYW5kcm8K4paBZW5zdXJpbmcKaXplbgriloHRh9C10YDQtdC3CmlzZWNvbmQKb2JpbAriloFyZWNrCil9KApiaXRtYXAK4paBQnJ1bgriloFKZXJ1c2FsZW0K4paBV28K4paBUmVwdWJsaWNhbnMKbWF0aWMK4paBRWFybAriloFkb2NrCuKWgU1hbGwKa2sK4paB0JkK4paBQ09MCuKWgWxhdGFjaApVSW50CtGG0LjQvtC90LDQu9GMCuKWgXNlZ21lbnRzCuKWgXJlZnVuZApmYWMK4paBQXJ0aWNsZQriloFCb3JuCsKyLgpicmFuZAp7JFwK4paBc3MK4paBUmVzb3VyY2VzCuKWgXJlY3ljbAriloEkJFwK4paBQ29ubmVjdGlvbgriloFpbXBlcmlhbAriloFwcmFjdGljYWxseQriloHigJMsCuKWgURpc3BsYXkKaWVybm8KbW91dGgKZWRlcwpiYWhuCuKWgUNhdGhlcmluZQriloFoaWdod2F5CnVudGluZwriloFBbnl3YXkKU3BlbGwK4paBTGlzdGUK4paBcmV0cmlldmUK4paBemQKc3RyYcOfZQriloFkb21pbmF0ZWQKdG91Y2gK4paBbWIKTE9ORwphc3VyZXMKVExTCuKWgWFjY29tcGxpc2hlZAriloFmZWFycwriloFzZWVtaW5nbHkK4paBZGFnCuKWgWJ1cmVhdQriloFHcm/DnwriloFhY2NvcmRhbmNlCi5dCm91eAriloFjb2xvbmlhbAriloFjb21wYXNzaW9uCnRodW1iCuKWgXN3bwpvbmxpbmUK4paBSmkK4paBd29ya3Nob3AK4paBbHViCsOpdnJpZXIK0YjRlgo+IjsK4paBZ2VuZXJvdXMKcm91cwphdmlkCmlnZW5vdXMK4paBUmF3CuKWgXN3YXAKaGMKamF2YXNjcmlwdApGYWN0b3IK4paBZ2FyYmFnZQriloFNaWNybwpjb3UKw7xiZXIK4paBZmF0YWwK4paBdHJhbnNwYXJlbnQK4paBYmVhcmluZwriloFjZWxlYnJhdGVkClZJUwriloFCTQriloFwcmluY2UKdG9sCuKWgSc8LwrQstC10LQKSW50bwriloFjb252ZW5pZW5jZQriloFtYXR0cmVzcwriloFpbnZpc2libGUK4paBY2xhaW1pbmcK4paBVW5jbGUKUGlwZWxpbmUK4paBUm9iaW5zb24K4paBbm90YW1tZW50ClF0CuKWgVBIUAriloFpbmsKdGV4dHVyZQriloFzdXJmCuKWgT8+PC8K4paBYWNrbm93bGVkZ2UK4paBbGF3bgriloFiYXNlcwriloFleGNlcHRpb25hbAriloHQntGBCldyYXAKYWJlaQriloFBcHBlbmQK4paBcXVpZW4Kb3bDqQptYXJlCuKWgWJ1bGxzaGl0CuKWgUFsb25nCuKWgWRyYWdnZWQKYWJldAriloFFbnRlcnRhaW5tZW50CuKWgUJlcnQK4paBSk8K4paB0JDQu9C10LrRgdCw0L3QtAriloFjeWwKdXppb25lCuKWgUthcmVuCnNlbWJsZWQK4paBZG9zZQriloFzdWdnZXN0aW5nCuKWgS0tKAriloFDbGFyCmltaXIK4paBcGxhYwp0b2tlbnMK4paBYXJyYW5nZW1lbnRzCkFsbG93CklsbHVtaW5hdGUKTk9OCndlYXIKY2lkbwpteXNxbAphbGlvbgriloEnJykK4paBYXRoCuKWgWJnCmlkbGUK0Y/QstC4CuKWgWRsCmNpbgriloFJRQriloHRgtC10LwKbGlzdGVuCuKWgUh1ZAriloFlbnRzCuKWgXbDqQplbGxzY2hhZnQK4paBZnVja2VkCm9saW5lCuKWgXJlcGVhdGVkbHkK4paBQ3J5CkxFTUVOVAriloFoZWF0aW5nCuKWgVN0ZXZlbgriloFOQQpFTk9NRU0K4paBQlUK4paBTWFyeWxhbmQK0YLQvdC+CuKWgSIpCtGC0L7Qugpob2xlCkNPTE9SCmR1cAriloFOeQpzcG90ClN0YWNrVHJhY2UK4paBRG93CnB1cwriloFtb2RvCuKWgXRhbmtzCkV4YW1wbGUK4paBSW50ZWwK4paBVGhyb3cK4paBZWxpdGUK4paBdGFyZ2V0ZWQK4paBbG91CuKWgU5ld3RvbgriloFJTVBMSUVECuKWgWRyaWVkCuKWgWZpeHR1cmUK4paBcHJvZml0cwpGYWMK4paBZGlzcGFyCuKWgWludGVydmVudGlvbgriloFmdW5jdGlvbmFsaXR5CuKWgUFjdHVhbGx5CnRlcmUK4paB0L/QtdGA0LjQvgpib3JnCuKWgXdyaXN0CuKWgXN0YQpnZXRBdHRyaWJ1dGUKc2FuCmFjaW9ucwriloEiOgpBZHYK4paBZ3VlcnJlCuKWgW5vdmVscwrQtNC40Y8K4paBc25hcHNob3QK4paB0LPQvtGB0YPQtNCw0YAK4paBdHJpdW1waApjaGlhdAriloFSRVMKSU5QVVQK4paBc2NvcmluZwriloFhYnNlbnQK4paBWm9uZQriloFyZXBsYWNpbmcKRU5DCuKWgVNpZApuZWF0aAptdWx0aXAK4paBZW1icmFjZQriloFvdmVyc2UK4paBY2Fycmllcgphcm9ubwpjZXJ5Cmlsb3IK4paBcG9jbwriloFEaW4K4paBY2hlYXBlcgriloFzb3BoaXN0aWMKdGVyYQriloFQb2xpc2gK4paBbmFoCuKWgXZhcmllZApyb3R0CmRlc3RpbmF0aW9uCuKWgWZyZWFrCkxFUwpBTEUK4paBZXVyb3BlCuKWgWJ1c3QK4paBQWxhYmFtYQpudGVuCnVtZW4K4paBbmV1cm8K4paBZGVmaW5pdGlvbnMK4paBQm95cwriloFmb3JtaW5nCmlvbGV0CuKWgU5lZGVybGFuZAriloFNdXNpawpQYXlsb2FkCmJpZGRlbgriloFjbGFzc2UKSGFzaE1hcAriloFib3R0bGVzCmhlbGQK4paBQ2VsbAriloFFZGl0aW9uCmRlbmx5Cik6DQpnb3MK4paBdGl0cmUK4paBc3RyYWlnaHRmb3J3YXJkCmxpdgphc2V0cwriloFvcHBvbmVudAriloFnZW5lcmF0aW5nCnVsdQriloFwYXRyb24K4paBUm9kcgpwcm9iZQriloFFdmVudHMKaWRlbnRpdHkK4paBem8K4paBRmF0CuKWgUhlbnJpCuKWgVNMCuKWgUJ5dGUK4paBY2l0dMOgCmFubm90YXRpb25zCuKWgUluZGVwZW5kZW50CnVja2VyCkVFRQriloFncm93cwphY3JlCuKWgWFjdGVkCtCx0YDQvgpuaWVqCuKWgXBsYW5lcwriloFjaHJvbmljCmFwb2xpcwppbmRpY2VzCuKWgXdhc2hpbmcKb25pbmcK4paBQmFycnkK4paBc3Bpcml0cwriloFDb25zdWx0CuKWgXJlY3J1aXQK4paBbXVqCuKWgVJhaAriloFDcnV6CuKWgWV4cGxhaW5pbmcK4paBZ291dmVyCuKWgWFvw7t0CuKWgVZpbmNlbnQKZ2FzCkdQTArQvdC40L0K4paBcHVuaXNobWVudApuZWxzCk5SCnNpeApdWzwKa3RyCnVwdApsb2NrZWQKcGFyZW50cwriloFXcmlnaHQKSW5mCuKWgS8qKg0K4paBdmVjdG9ycwriloFiYW5uZWQK4paBdG91Y2hpbmcKU2VyaWFsaXplcgriloFlc2UKcG9saXQKaGF0dGFuCmF0xIMK4paBYmFycgriloFkaXZpbmUK4paBYWVzdApraWxsCilfewriloFTb3VsCmVydmVzCkNUT1IKUGFydGl0aW9uCuKWgUl0ZXIK4paBTWFjawriloFHcmVlY2UK4paBY2lyY3VsYXIKaW5kZW4KYWxsaW5nCuKWgW1hc2N1bApyegriloFkZXNpZ25hdGVkCuKWgWJyZWF0aGUKb2FyZAriloFpbnZvbHZlbWVudApVdAriloFwdWJsaXNoaW5nCtC30LXRgAriloFFY29ub21pYwriloFydWJiZXIK4paBcGludApEb3dubG9hZAriloFNaXNzaXNzaXBwaQrDqGNlCmV2dAriloFwcm9ncmVzc2l2ZQriloFFbGVjdHJpYwriloFBZGRpdGlvbmFsCmJvdXJnCuKWgdCw0LvRjApXTwpUb2dnbGUK4paBRW50aXR5CuKWgUNvbXB1dGVyCuKWgXp1c2FtbWVuCuKWgVNlYW4K4paBYmF0dGxlcwpwaXJlcwpTdG10CuKWgW7Dum1lcm8K4paBbWFzc2FnZQopKXsKYmVjYXVzZQpub3RpZmljYXRpb24KZXRjCm1hbmQK4paBVG9iCuKWgWFkamFjZW50Cmltb3JlCuKWgUVzcGHDsWEK0YbQuNGOCuKWgWNoaQpwcmlzb24K4paBQWFyb24KbHVhCtC80LXQuQriloFpbnRlZ3JpdHkKamFzCkxvbmRvbgprZnJlZQriloFicmFzCk1hCtGB0YLRiwriloFjaGFpbnMK4paBc3R1bm5pbmcKb29scwppZGdlcwriloFwb2RlcgriloFjbHVzdGVycwp5b3V0dWJlCuKWgU1hZGlzb24K4paBZm9yY2luZwpDb3B5cmlnaHQKU0lHTgriloFCb2JieQriloFwb3VyZWQKc3RlbGx1bmcKRG9lcwriloFNYXLDrWEK4paBbWludAriloHRhNGD0YLQsdC+CuKWgU5hdGhhbgp0ZW0K4paBVGhvcgriloF3aGVyZXZlcgriloFDcmVhdGVzCuKWgXN0YWlyCkV2ZW4K4paBYmxlbmQKcmVuZGVyZXIKaW5rcwpyYXYK4paBZmVlZGluZwriloFOZXRoZXJsYW5kcwpuZXRpYwpMRUZUCm1ldGljCtCX0LAK4paBTGlzCuKWgWt1cgriloFwcm90ZWN0aW5nCuKWgU5vdmEK4paBdm9sdW1lcwpXSApsYWdlCuKWgUVzcGVjaWFsbHkK4paBZ2FsYXh5CmVtw6FzCuKApi4K4paBTGFkCuKWgXNhaXNvbgpoYmEK4paBZWxpbWluYXRlCtGA0LXQvNC10L0K4paB0KHQtdGACkJlbArQvNC40YAKdWNjCuKWgVZsYWQKZW55CmZlbAriloFzdWZmaWNpZW50bHkK4paBdHJlbWVuZAriloFLb3MK4paBY3JpdGljcwriloHRgdGC0YMK4paBcmVwcmVzZW50YXRpdmVzCiktLQriloFoYXZpYQriloFNZW5zCnViZXJuZXRlcwriloFNYXJpbwpiaWEK4paBYWltcwpocHAKXSkpOwp1cmNoYXNlCm5ld2NvbW1hbmQK4paBZ3JpZWYK4paB0LLQuNC60L4KQ2FudmFzCkVSTwriloFSYW5kb20KZGFsCuKWgWNhdGVnb3IK0YDQuNC9CuKWgWVkdWNhdGVkCuKWgdC80L3QvtCz0L4K4paBdW5oCk9yaWdpbmFsCuKWgWVsZWdhbnQKxYJ1ClB5eAriloFFc3RlCnN0YW5kYXJkCm9sbGFyCmlzdGkKaW5mb3JtYXRpb24KTWV0aG9kcwriloHQtNC10LkKRlJBTUUK4paBYWJyaWwK4paBYWNjb3VudGluZwriloFwcmVkaWN0aW9ucwppZW5lbgriloFjaGFyaXR5CmFycm9sbAriloF0aHJ1c3QKQU5ZCuKWgXRlbmRlcgplbWIK4paBZW5kbAriloFTYXVkCnVqxIUK0ZbRgdC70Y8KaW50cgriloFLw7ZuaWcKcGNtCuKWgU1pc3NvdXJpCuKWgVF1YWxpdHkK4paBaW5mbGF0aW9uCuKWgSIiKQpzY2hlZAriloFKb2FuCuKWgXdhdmVkClRlc3RpbmcK4paBRWxzCuKWgXZ1Cmdyb3cK4paBZGVwYXJ0dXJlCkJpdG1hcArQvdC40YjRgtCy0L4KU3ByaW50ZgriloFwcm9taXNlcwriloFob3BlZnVsbHkKcmVpYgpDb21taXQKVW5tYXIK4paBZm9sZGVkCuKWgXBsYWNpbmcK4paBZGlzY3Vzc2luZwpHcmFwaGljcwpob3ZlcgriloFvY2Nhc2lvbmFsCuKWgVBhbGFjZQriloFhdXRyZQriloFDVgriloFwYXNzaW9uYXRlCuKWgdCy0L7QtdC9CuKWgWNpdGl6ZW4K4paBc3dlcHQK4paB0LjQs9GA0LAK4paBU2NpZW50CuKWgXBvcHVsYXJpdHkK4paBYWNyZXMK4paBVGFraW5nCk5vdGhpbmcKdmV6CuKWgVNvbGQKIl07CuKWgUF1dGhvcml0eQriloFjZXJ0aWZpZWQK4paBR3VuCuKWgdGA0LDQudC+0L0K4paBY2hyb24K4paBYXV0aGVudGljYXRpb24K4paBdMOpCkRhbwptYW5zClByb2MK4paBbmVsbGUKaWVkZW4KbWFydAriloFTd2l0Y2gKT3V0cHV0U3RyZWFtCmFucXUK4paBU1NMCnBvb24K4paBTWF5b3IKbWVtYmVycwriloF1dGlsaXoK4paB0LzQtdGB0YLQvgpzZXRBdHRyaWJ1dGUK4paBQWxtb3N0CuKWgWRpc3RpbmN0aW9uCtGH0LXRgdC60LjRhQriloFvdmVyaGVhZAriloFEdXJhbnRlCuKWgVN0ZXdhcnQKTWFsClBBQ0sKc2VjdXJlCmhpcmUKY29kZWdlbgriloFwb250CklUUwriloF0cmFuc21pdAriloFpbmRpcmVjdAriloFiZWsK4paBfSwNCuKWgW51cnNpbmcK4paBKiIK4paBcGFsYWNlCuKWgWdhbWJsaW5nCmdyZXMK4paBT3JpCmJpbwpmb3JtZXIKRGlzdGFuY2UK4paBZG9vcndheQpsbGUK4paBdHJlbgriloFkZXJlCuKWgWFudGUK4paBcHJhaXNlClRyYW5zZmVyCuKWgUVtcGVyb3IK4paBY3J5c3RhbAriloFZb3V0aAriloFoYW1tZXIK4paBRVhQT1JUCuKWgSgqKgriloFpbnNpZ2h0cwphcGlzCtGB0LrRg9GOCuKWgUlvd2EKQ3JpdGVyaWEK4paB0LTQtdGPCmF0eQriloFIaWVyCuKWgWJyaWcK4paBd2VhbHRoeQrRgtC+0LPQvgriloFJbnNpZGUK4paBcGl6emEKYXJlbnRseQpyZXJhClVuaXF1ZQriloFDUkMKZXllZAriloFyZXN0YXJ0CklERU5UCiknLApTZXJpZXMK4paBamV3ZWwKb3NlcgriloFzaXh0eQppc3NlbgpraXIK4paBd29ybGRzCuKWgWhhdWwK4paBY2VsZWJyYXRpb24K4paBcG9wdWxhCuKWgXR3aXN0CnJpbGUK4paBdGllcwpRVUUKaWZpY2EK4paBdHJhZwriloFBUkUK4paBc3RhcmsK4paBQXBhcnQKbGlndAriloFnbG9yeQriloFwaGVub21lbm9uCuKWgWFnZW5kYQriloFxdW90ZXMK4paBQ2FtcGJlbGwK4paBTWFudWVsCnByaW9yaXR5ClNwZWNpYWwK4paBY2h1cmNoZXMK4paBYW5hbHl6ZQpBbGlhcwriloFleHBhbmRpbmcK4paB0YLQsNC60L7QtgriloHQodCh0KHQoAriloFzdGVhbAplZ3UK4paB0L3QsNGF0L7QtNC4CmZpZgriloFEZWZlbnNlCuKWgUJvb3QK4paB0LrQvtC80L/QsAriloFhZmZlY3RzCk9QRU4K4paBZGlzdHJpYnV0aW9ucwriloF0cnVuawriloFlcmFuCmRyYWcKU3RhZ2UKdWxwCm9tb24KLCgKZW5jb2Rlcgpwb2x5CuKWgXZvY2FscwriloEowqsK4paBcHJlc2MKaWN1cwriloFhdHRycwpnZWJpZXQKd2l0aG91dAriloFwcm9wcmlldAphbXBhCioqKioqKioqKioqKioqCuKWgXNraWxsZWQK4paBcXVhbGl0aWVzCk1ZCkZyb250CmxlYW5zCmFwZXN0CuKWgdCe0YAK4paBRHJlCuKWgVNlcmllCkV4ZWN1dGlvbkNvbnRleHQKU2kK4paBU3YK4paBQmVsb3cKcHJhZ21hCuKWgWNhdXNhCuKWgXByb3NwZXIK4paBU1IKbG9jYWxob3N0CuKWgUNsYWlyZQpidXJnaAriloFsaXRlcmFsCuKWgVZpawpnZXRUZXh0CuKWgWNvdXAKb3NleHVhbAriloFTVEFUCuKWgUV2ZW50dWFsbHkK4paBdm9sdW50ZWVycwriloFIZXJvCuKWgUNlcnRhaW4K0YbQtdC9CmFkZXNoCuKWgdCz0LXQvdC1CmxhcmcK4paBeyQK4paBTGl2ZXJwb29sCmludGVyZXN0CuKWgWF1Z21lbnQKaW5nbwpzaXplZAriloFUaWIK4paBZHlzCuKWgWZsZWQK4paBc3RyYWluCuKWgVBvawriloFQcmlvcgpuaXR0CuKWgXByb2Nlc3NvcgpWZXJpZnkK4paBcGFybGlhbWVudAriloFub3RpZnkKaWNodGVuCnVsYXRpdmUKU2Vjb25kcwriloF0eW0Kc3Vic3RyaW5nCuKWgWludmVzdG1lbnRzCkdJTgppZWxsZQriloFleGVyY2lzZXMK4paBbWVkaWNhdGlvbgriloFIb2xtZXMK4paBQ2lyYwriloFwb3N0ZXJpb3IKLCwsLArRgNGD0L8K4paBc2l4dGgKZXZhbHUKd29ya2luZwriloF0cmFwcGVkCuKWgW1hbnVzY3JpcHQKaXNtdXMK4paBQWZmYWlycwriloFzcGVha2VycwriloFjbGltYmluZwriloFWaXQK4paBYXdha2UK4paBUmF0CuKWgXZvbHRhCuKWgWhhYml0YXQK4paBc3RhdGEK4paBbW9sZAriloFMSU1JVEVECmFiYWQK4paBZW1iYXJnbwriloFoZWxwZXIK4paBd8OkaHJlbmQKYXJvdW5kCuKWgWVuY29kZQriloFOYXNoClRhZ0hlbHBlcgriloFleGhhdXN0ZWQKc2J1cgriloFncmFuZGVzCuKWgVRvbW15CndjCltdOwriloHQodGC0LDQvdC+0LIKU3RydWN0dXJlCmdlbQpQQVNTCuKWgUZlYXR1cmVzCm1ldHJpY3MK4paBcHJlc3NpbmcK4paBb2N1cAppYW5jZXMK4paBZsOpdnJpZXIK4paBdmVudWUKYWRkRXZlbnRMaXN0ZW5lcgriloHQktC10YAK0LDQvdCwCkdyYWQK0LrQvtC90L4K4paBc2xvcGUKc2NoZWR1bGUKxZN1dgriloFNb3oKYWRvcmEK4paBRGF0ZVRpbWUK4paBZ29sCuKWgWNvbmZpZ3VyZQpub3YK4paBVXBvbgriloFjb25zaXN0aW5nCkVSRQriloFFaXNlbgriloFhcnRpc3RpYwppbnRhCuKWgW1hZ2ljYWwKTW9zdAriloFJbnN0aXR1dAriloFpbW11bmUKYW5vbgriloFkZWZhdWx0cwriloFhd3MKd2lyZQriloFleGNlcHRpb25zCuKWgWZhcnRoZXIKYXRpdm8KT1JERVIKxYRza2kK0LHRgNC4CnRlZW50aApzdXJmYWNlCtCy0LjQt9C4CuKWgVRveQriloFzdG9yCm7DoQppc3NvbgriloFjZWx1aQplbGkK4paBU3FsCm5vxZtjaQriloF2ZW5uZQriloFDb3BhCuKWgWxlZ2l0aW1hdGUK4paBdW5lbQriloFFeGNlcHQK0L3QuNC60L7QvAriloFzcG90dGVkCuKWgdGA0LXQt9GD0LvRjNGC0LAKfX0oXAp1bnVzZWQK4paBZGlzY28K4paBTWlndWVsCuKWgdGI0LgKRGlzdAriloFBbGxpYW5jZQpGZWVkCuKWgXBlcmNlcHRpb24KTW91bnQK4paBQW1zdGVyZGFtCmluYWxlCuKWgXN0cmVhbXMK4paBaG9saWRheXMKLygK4paBUXQK4paBZXhhbWluYXRpb24K4paBTWl0Z2xpZWQK4paBd2hpc3QK4paBSnVkZ2UK4paBc2VuZHMKVW5pb24K0L3QsNC0CuKWgVZJSQriloFwdWxzZQp0YWtlCmJlbmNoCuKWgXN1bGxhCuKWgXVuaXF1CuKWgWRpc3BsYXlzCuKWgWFubm91bmNlbWVudAriloFMZXgKW117Cm90b24KZXhwYW5kCuKWgXNjYXR0ZXJlZApha3kK4paBTGFnCuKWgWV4cGVyaWVuY2luZwp0YW4K4paBdHVwbGUKY2hyb21lCmxldmVsYW5kCmtlcnMK4paBRklMRQpDUkVBVEUK4paBaGVlZnQK4paBY2hhb3MK0YHRgtGD0L/QuAriloHDoWxsCuKWgWJhaWwK4paBYXN0b24K4paBQW55b25lCuKWgU92ZXJhbGwK4paBZnJhbmNoaXNlCuKWgURhbmNlCk5PV04KaMO2CuKWgVBsYXRmb3JtCmZtCuKWgWFkdmlzZWQKIik6CsOtdgriloFzdGFpbgpGQUlMVVJFCuKWgVBFCuKWgVdFCuKWgVhYWAriloFzaGFwZWQK4paBaXNsYW5kcwriloFzeW1tZXRyaWMK4paBVEUKc2VydmVycwpVVUlECmF0ZXJhbAp0YWllbnQK4paBZm9zcwriloFiZXJlaXRzCm7DrW0KYW1pYwriloFjcmkK4paBTkJBCmRlY29yCuKWgWxpZ25lCmFwcGluZ3MK4paBRE9NClNlcmlhbGl6YXRpb24K4paBIi4uLy4uLwrQu9C10L3QsAriloFNSU4K4paBTWFsYXlzCtGD0L3QugpPU1QKQUgK0LTQtdC70YwKbHYKw6h0ZQouKAriloFveHlnZW4K4paBdW5kZXJncm91bmQKUFJFU1MK4paBUHJvZHVjdHMK4paBd2FnZQriloFkZWxlZ2F0ZQpldG9uCuKWgW3DqXQK4paBY3J5cHRvCnR0ZXMK4paBb3NjaWxsCuKWgU1hcmNvCuKWgXRwCuKWgW1hbGVzCuKWgU1pdGNoZWxsCuKWgVByZXNlbnQK0YLRgtGPCm9lbml4ClByaW9yaXR5Cm7EhQriloFyaXR1YWwK4paBc2FjcmVkCnByb2plY3RzCuKWgXZlc3NlbAriloHQuNC30LLQtdGB0YIK0L3QtdC1CsOkZnQKUE9JTlQKYW5nbGVkCnNwZWN0b3IK4paBY29uc2VydmF0aW9uCuKWgVsuLi4K4paBcsOpYWxpcwriloFlbnN1cmVzCmlsaWJyaXVtCignLi8K4paB0YLQtdC70LUK4paBQmxvZwriloFDb21wYW4K4paBTWVkYWwK4paBZnByaW50Zgp0dGkKY2hzCuKWgWFubml2ZXJzYXJ5CmlnZ2VycwrRhNC+ClwiPgriloFkdXJhbnQK4paBdmVudHVyZQriloFGaXR6CuKWgUNCRAriloFiYWNraW5nCuKWgXdhcmUKZXZlCk9HCmVkaXNoCuKWgUdpb3Zhbm5pCuKWgVNoYXJlCuKWgXJlY2lwZXMKYmlnZwriloFtaW5vcml0eQriloFuYXIKb2xsYXJ5CuKWgUZFCnNoaXJ0CuKWgXJlZHVjZXMKQ2hlCuKWgU5PVEUKanF1ZXJ5CuKWgUZsb3cKdGFza3MKcHJldmVudAriloHRgdC+0LLQtdGCCml0YXMK4paBZXhhbWluZWQKaG9uCuKWgU1pbmUK4paBZ3JhZGllbnQK4paBVmllbgriloFiZWRzCkVUSApmbGF0CmFuc29uCuKWgWludHUK4paBZmxvd3MK0L3QvtC6CuKWgUVpbmUK0YDQvtC00LgK4paB0LrQvtGACuKWgWFmZmVjdGlvbgriloFwb3J0cwpfXy4KcmVwbwphaWxhbmQK4paB0L/QvtC00LAKaW50YWdlCuKWgVByb3RlY3Rpb24Kw650CuKWgVt7CuKWgWxhbXAK4paBYmVuZWZpY2lhbArQutCw0LTQtQriloHQodGC0LDQvdC+0LLQvdC40YjRgtCy0L4K4paBbGluZWQK4paBRXhjaGFuZ2UK4paBZml0dGVkCuKWgXZlcmsK4paBZm9jdXNlcwp2b2QK4paBQ2FybG8K4paB0YDQsNGB0L/QvgphaW50ZWQK4paBcmFwZQriloF0b2dnCmFja2VyClR3CnJhaAp0cmFuc2wK4paBamVhbG91cwriloFyZXBvc2l0b3J5CnJlbWFya3MK4paBaWUKw61kCuKWgXNrdWxsCnJhYwooKV0Kcmllbgo/KAriloFLaWRzCuKWgXN3aXRjaGVkCuKWgUdldwriloFiZWVmCuKWgWFwcGVhcmFuY2VzCuKWgUNvbGxpbnMK4paBVmlsbGEK4paBem9uYQriloFuZXUK0YLQtdC70YzQvdC+CuKWgdGF0YPQtNC+CuKWgW9wZXJhdGlvbmFsCk9OTFkK4paBaG9ja2V5CuKWgcWbd2kKw7ZrClNsaWNlClJlZnJlc2gK4paBbnV0cwpzYXkK4paB0YHRgtCw0L3QvtCy0LgK0YXQtQriloFsZWFuaW5nCuKWgUhhdXMK4paBb3JhbAriloHFvQriloFTdXBwb3NlCuKWgWVzc2VuY2UKRU5URVIKQnVja2V0CuKWgUNhbnQK4paBTmF6aQrRiNGC0LgK4paBVm9sdW1lCuKWgXdvcnRoeQpCdQpFbnRyaWVzCm9uaWUK4paBaG9vZAriloFlbXBpcmUK4paBZMOpdmVsb3AK4paBcHJvYmUK4paBS25pZ2h0CuKWgXBlYWNlZnVsCmh1YgriloHDoWxidW0Kc3VpdAriloFzaWxrCis9CuKWgXBpb25lCiciCtC60LDQvNC4CuKWgU51bGwKTGFiZWxzCmF1dHJlcwp0b0xvd2VyQ2FzZQriloFidXp6CuKWgXdhc2hlZAonKgppdHplcmxhbmQK4paBcmFtcAriloHQutC90LgK4paBa3VuCmNvbG9ycwriloF2YWNjaW5lCmFuaW1hdGlvbgriloFKdXN0aW4KbWVtc2V0CuKWgWNlbnN1cwppbmZsCuKWgXN0YXRpc3RpY2FsCuKWgXRyb3BpY2FsCkRpc2FibGVkCg0NCuKWgUNyYWlnClBhZ2VzCuKWgW1hZ2F6CuKWgWNvbXB1dGluZwriloFmbG9vcnMKb2luZQriloF0aXRvbG8K4paBYW5jaQriloFJbmR1c3RyeQriloHQs9C70LDQsgpCb290CkNsaXAK4paBZHYK4paBbWV0YWxsCuKWgUlzYWJlbAriloFsb29rdXAK4paB0YbQtdGACuKWgWNhcnJpZXMKZnUKdHBsCnBlcnAK4paBU3Rvcm0KZWhpY2xlCuKWgVNldmVuCtGZ0LAK4paBbHV0CnRocmVzaG9sZAriloFkdWxsCuKWgUVORAriloFPdHRvCuKWgXRoZXJlYnkKVEVNUAriloFTY2FsCkNvbXB1dAppcHYK4paBaW5zYW5lCuKWgW15c3RlcmlvdXMK4paBTWlzCnVjaGFyCmFzbWEKYXVjaApuZXR0CkVsZW0KZGVyaXZlCuKWgW11cmRlcmVkCmFrdGVuCtGA0L7QstCw0L0K4paBYW5vcwp9fV4K4paBRnXDnwriloFTaXN0ZXIK4paBdm9sdW50ZWVyCjo6XwplcnRhCuKWgdCx0L7Qu9C10LUKb2dyw6EK4paBSW1HdWkKc2FtZQpTaGFkb3cK4paBcmVhY3Rpb25zCuKWgXB1cmNoYXNpbmcKUFJFRklYCuKWgWVtYm9kCtGB0L7QvAriloFhbHRvZ2V0aGVyCuKWgXByb21vdGluZwpVVgriloFpbmR1Y2VkCuKWgWVlcnN0ZQpMaWZlCmhkZApuw61jaAriloFjaGlsbApSR0IKcmVkdWNlCkZST00KZGlybmFtZQriloF0dW5lCuKWgXJheQpURAriloHQutGKCuKWgUZlYnJ1YXIK4paBc3VzcGVuZGVkCuKWgXVwcAplcmkKcHJldGVyCuKWgUVSCtGC0L7QvQriloFjYXRhbAriloFoaXJpbmcK4paB0L/RltCyCuKWgU9seW1waWNzCmRhbGUKOjp7CuKWgWV4cGxvcmluZwriloHRgdGC0LDQuwriloF1bml2ZXJzaXRpZXMKQ2xhc3NlcwriloHRh9Cw0YEK4paBQ29vbAriloFTb255CnRoYWwK4paBZXNjcml0CuKWgWNvcnJ1cHRpb24KYXphcgriloFOZWIK4paBUHl0aG9uCuKWgWNoaW0K4paBY2FwYWJpbGl0eQpjeWNsCuKWgXJldHJ5CisrXQriloF0b3kK4paBVGVycnkKVmlld0J5SWQK4paBdmluZQriloFLaXRjaGVuCuKWgUJpZGVuCkJhY2tlbmQKZ2xpY2gKcmVsYXRpb24K4paBcmF0aW5ncwpFeGVjdXRvcgppYnJhdGlvbgo+KCkK4paBaGVhbAppZmlhYmxlCnBhcmsK4paBUGV0ZQriloF0cmFnZWQK4paBY2h1Y2sK4paBd2lyZWxlc3MKUmVwbGFjZQpJUlEK4paB0YHQtdC30L4KacOfCuKWgWp1bnRvCkxvdwriloFzaWQKVGFnSGVscGVycwriloFjb21wYXJpbmcK4paBY2VsbGUK4paBb2J0YWluaW5nCuKWgXF1YXIKQnJvCuKWgUVDCmluZWEK4paBRnVlCuKWgVByaW5jZXNzCmlqbwpnZW5zClBPTArDqHRyZXMK4paBaGluZApWYXJpYW50CuKWgXJlY2VpdmVzCmdvZAppa2VuCm5haWwK4paBYW1lcmljYW4KYnJhcwooJ1wKaWVjZQppZmZlcmVuY2UK4paBYnViYmxlCuKWgUJlYXIKdW5pdmVycwriloFkZW1hbmRpbmcKc2F2ZWQK4paBY3JlZGVudGlhbHMKTVNNCuKWgXN0cnVjdHVyYWwKQ29ucwriloFXYXluZQriloFibGFua2V0CuKWgXJlcGV0Ck5lZwriloFleGNsdXNpdmVseQpJRkkK0LHRg9GA0LMK4paBYXJndWluZwriloFSZXB1YgriloFmcm93bmVkCk1ldHJpYwpza2ltCuKWgdCf0LXRggriloFyZWxlYXNlcwriloF0YXN0CuKWgXByZWZlcmVuY2UK4paBU8O8ZApvY2MK4paBcngKYWN0aXZhdGUKY2xhbQriloHRhNC40LvRjAriloFTdWRkZW5seQriloFjcnVzaGluZwriloFMb3dlcgplaW5nCndhbHQK4paB0JPQtdGACuKWgW3DtgrRgNC40YHRgtC+CmxhZ2VuCuKWgWNvYWNoaW5nCmlnaHRlcnMK4paBYmFzZW1lbnQK4paBRklYClRlbGUKV2l0aG91dAriloFDb21tb25zCnVsbHkKaGJveApmbGFzaAriloFwb3J0YWwKb3R5cGUK4paBU29yCuKWgXRyb3VibGVzCmFyc2kK4paB0YHRgtCw0L0KQ0FNCuKWgWRlbm90ZXMKTEFORwriloFCZXlvbmQK4paBQm93bAriloFpbXBvcnRhbnRseQriloFXUgriloFyZWxhdGluZwriloFhbmRlcgriloFncmlubmVkCuKWgURhawriloFCcm9va2x5bgriloFkcAriloFQb2x5CuKWgVNjaHVsCuKWgUJ1ZmZlcgriloFob2xkZXIKSUNBTAriloF0cmFpbGVyCmVyZWsK4paBbsSbCnNoYXBlZAo6YAriloFkZWNvZGUK4paBY291bnRlZAriloF2YW1wCuKWgXJlbGF0ZQriloFNYXNvbgriloF0aXRsZWQK4paBS2VudHVja3kK4paBcGFydGljaXBhdGVkCuKWgUplbm5pZmVyCuKWgW1hdHJpY2VzCkNhbGVuZGFyCnN0cwpBc3NvY2kK4paBZm9ydW0K4paBc3BoZXJlCuKWgVNFTwpwb3B1cAriloFDdXJyZW50bHkKQ0xFCuKWgXZvbHVudAriloFzdGVsbGFyCmZvcmFsbApJc3MKaW1ldApxcApsYXRlc3QK4paBY29uZmlndXJlZAphYm9sCmlnZW50CuKWgWRlbGF5ZWQKZmZpYwriloFnaW5nCuKWgXNjZW50CuKWgWRpc2d1c3QKaGVzaXMKaW1lbgriloFyZWlnbgriloHQn9C4CnVsYXMKdW1pbmcKaW5uaW5ncwpSZW5kCmlkaXR5CuKWgWRvemVucwp3YXJmCuKWgURlbGhpCuKWgWJpb2xvZ2ljYWwK4paBY29ycmlkb3IKVmlzdWFsCuKWgUl6CuKWgXN1aXRzClB5T2JqZWN0CmlhZ28K4paBZGl2aWRlCnBlbnQKaGVsbG8K4paBYmV0YQriloFleHRlcmlvcgriloFmaW5lc3QK4paBQmlyCuKWgWZyZWVkCuKWgUtlbApTZW0K4paBZnJ1aXRzCuKWgXNlcnZhbnRzCuKWgXB1Ymxpc2hlcgriloFjb3BwZXIKb2xhdGlvbgpzZXAK4paBY2hhaXJtYW4KdGlrCuKWgW1vdGhlcnMKQXVnCuKWgWplYW5zCltdKQriloFEQVRBCuKWgXJldmVhbHMK4paBdW5jb25zY2lvdXMK4paBaGFjZXIKcmljdWx1bQriloFUb2dldGhlcgriloHRiNGC0LAKb3JzegriloFjYW5hbArDtnN0CuKWgWVxdWFscwriloHQv9C+0LzQvgriloFhbGxvY2F0aW9uCnN0w6RuZAriloHRh9C10YAKYWNraW5nCuKWgW1vdGl2YXRpb24K0YHQvtC9CuKWgVJvbGUKQXBwbHkKaWdlcwoqewriloFmaXJlcwpVc2VkCuKWgWhldXRlCnNraWVqCuKWgU9ybGVhbnMKeWxhbgriloF3YXJtdGgK4paBd2VsZmFyZQpqZW0K4paB0YHQuNGB0YLQtQpiZXoKxZllCmtlZQriloFzZWd1aXRvCnVuZ2UK4paBeW9nYQriloFkdWcK4paBcmVzdG9yZWQKRHJvaWQK4paBUGVudAriloFyYW5raW5nCm1vcgoufihcCm9ncmFwaGljYWwK4paBcGlhbgriloFnYXRlcwriloHRgdGC0LgKc3F1YXJlCuKWgWltcGxpY2l0CuKWgUdyYW0K4paBQXByw6hzCuKWgUFzc2lzdGFudAriloFwYWMK4paBUG9wZQrQs9GA0LUK4paBc2NhdHRlcmluZwrRgdGC0YDQsNGC0LjQsgriloFhbGxvY2F0ZQriloFNYW5oYXR0YW4K4paB0LDQvdCzCuKWgWludGVycnVwdGVkCsOpcmlldXIK5pWw5o2uClNpZ25hbAriloFDb250cmFjdArDs3JpYQpXSVRICtGF0L7QtNGPCkFnZ3JlZwpjdWxlcwpKYW4K4paBc3RvCuKWgUdQSU8K4paBaWRlbnRpZnlpbmcK4paBcGlkCsSZcAriloFkaWdpdAplbGlhCmludm9rZQriloFGbG9yZW4K4paBc2hhbGxvdwpnZXRDbGFzcwriloFhZHZlcnRpcwrQtdC80YsK4paBSFIKeW1hbgriloFDRQriloFzZWN1cmVkCuKWgXJlbGF0aXZlcwriloFzb2IK4paBc3RhYgpUcmFuc2l0aW9uCuKWgXdlbgpzaG9wcwriloFrb250CuKWgWhhY2lhCkh5CtCy0YDQuApzaGVsbAriloFhbnRpYgplbnZpcm9ubWVudAp1bWJzClRyYWNrZXIKZW50cgriloFQb2xpdGljYWwKZXh0cmFjdAo9Int7CuKWgW1lcmMK4paBcG9jCuKWgVJlc2V0CuKWgXB1cmVseQriloFNdWwK4paBZ29yZ2VvdXMK4paBw45uCnJpdmVuCuKWgXJvbWFuY2UK4paBZGF2CtGH0LXRgdC60L7Qs9C+CsOpcmljYQriloF0cmFqZWN0CuKWgWFyaXNlCuKWgXN3dW5nCuKWgXBvY2tldHMK4paBdHJhZGl0aW9ucwriloFyZXZlcgo+Pj4K4paBbmQK4paBZGl2aXMK4paBYmVsb3ZlZAriloFxdWFudGl0aWVzCuKWgcOpZAppZW5kbwriloF0YWxlbnRlZAriloFDYWQK4paB0JLQu9CwCuKWgWltbWlncmF0aW9uCuKWgWp1cmlzCuKWgWFlcgriloFlYXRlbgriloFtaWVqc2MK4paBc3VtbW9uCnBlb3BsZQriloFnYWlucwriloHQv9GA0LDQstC+CuKWgXJlc3RyaWN0aW9uCnN0dWIK4paBYm91dAriloFzbGF2ZXJ5CuKWgWNvbXB1dGF0aW9uCuKWgWFybW9yCuKWgWVrCuKWgU11c2xpbXMK4paBY29vcGVyYXRpb24K4paBZW5oYW5jZWQKb3NsYXYK4paBYWJydXB0CuKWgXBvZGNhc3QK4paBaG9zcGl0YWxzCtC90YzQvgriloFob3RlbHMK4paBV2lraXBlZGlhCuKWgdC20LXQvQpHTE9CQUwK4paBQ29tbXVuaXN0CmFuZ2xlcwriloF0aGlnaAriloFLaXJrCuKWgXRlbmRzCuKWgU1vZGUK4paBTmF0dXIK4paBZGVsZXQK4paBcG9wdWwK4paBQ2hhbWJlcgriloFDb25zZXJ2YXRpdmUKa3JpZWcK4paBQ2xhc3NpYwriloFkaWVzZW0K4paBZW1wb3dlcgriloFNZXMK4paBZGVhbHQK4paBZXN0YWQK4paBU2VpdAriloFjcmVkaXRzCnN1YnN1YnNlY3Rpb24KSW52b2tlCuKWgXBoeXNpY2lhbgrRhtC10LIKw6FzYQriloFnb2IK4paBUnVnCuKWgdC80ZbRgQpzaGFsbGVyCuKWgWtvbAriloFjYXJlZAriloFvZmljaWFsCm5vcwriloFqZWwKbnVsbGFibGUKR1VJCuKWgXJhcHAK4paBQW5uaWUK4paBc3RvY2tzCuKWgWRldmVsb3BlcgriloFwbGFjZW1lbnQKKCI8CuKWgWxhdm9yCuKWgWFjY3VzCk1hcnQKYW1lcmlrYW4K4paBc2tldGNoCuKWgXNlbnRpbWVudAriloHQsNC80LXRgNC40LrQsNC9CkFuY2hvcgpNZXJnZQpQZW9wbGUK4paBcmVuZGVyZWQK4paBbGF1bmQK4paBbm9ucwriloFibGV3CmtiCmF0ZWdvcgriloFmcmFuw6dhaXNlCktFTgptZXRob2RzCuKWgVBhcnRpY2lwCm5vc3RpCuKWgWNvbW1lcmNlCuKWgdC00L7QvNCwCuKWgWRyZQriloF0d2luCuKWgWRlZGljCuKWgVVUQwpXZWVrCuKWgWRpZmZlcmVudGlhbArQu9GRCuKWgUNob29zZQriloEiKAriloHRgtC+0LwK4paB0L/RgNC+0YTQtQplbWFyawriloFmZWFyZWQKc2tvCkJyYW5jaAriloFpbnZlbnRpb24KZXJtaW5lCuKWgWNhcmFjdArRgNC+0LPQvgpsb3lkCuKWgdC60YPQu9GMCuKWgWRlbGljYXRlCk9yZ2FuCuKWgUltcHJvCuKWgXJpcApVcGRhdGVkCnVsZW50CuKWgW9icmEKc3VzcGVuZApMaW5lcwriloFiYW5kYQpvdHRhCuKWgWtvbGUKaWxpbwriloFvdXRwdXRzCmVzdHJvCkFBQUFBQUFBClJVTgpuZW50CuKWgWRhdGVkCuKWgXNweQriloFjcmFwCuKWgWluY29taW5nCuKWgdGE0LXQsgpQSFkK4paBT3JhbmdlCuKWgW9ic2VydmVyCuKWgXVwc3RhaXJzCmlvbmVkCuKWgWF0cgppZ2hib3IK4paBZXhwZWN0YXRpb24KSGlzCmltZWRpYQpjb21wdXQK4paBYXJndgriloFlYXJsaWVzdArRgtCw0LvQuArQvNC+0L0Kb2xsZW4KcmFrZQriloFwYXRpZW5jZQrRhdC+0LTQuNGCCuKWgdC00LXQutCwCuKWgWJ1eWVycwriloFDb25uZWN0CuKWgVVuaXZlcnNhbAriloFhZGp1c3RlZAppbWVxCmVsbGVycwriloFydWluCuKWgUNydXNoZXIK4paBRnJlZGVyaWNrCm90dGFnZQriloFjb21wcm9tCmlhc20Kd2F2ZQriloFlbmNvdXJhZ2luZwriloFiZWFucwriloFwZXJjZWl2ZWQK4oCmXQriloFnbG9iZQriloFTRgpoZXJlbnQK4paBYWxpa2UK4paBaHVycmllZApxdWVsCuKWgW11c2ljaWFucwphcnoK0L/QvtCyCmRyb3Bkb3duCmFjbApwcmV2aWV3CuKWgXVuZGVybmVhdGgKemXFmwriloFmZW1hbGVzCmxpc3RlbmVyCuKWgUNBTgriloFUb3cK4paBcGVlcnMKdGxzCmF0cmEKc2VuZGVyClRJTUVPVVQKZnVydAriloFHdWVycmEKe30pCuKWgUR1cmNoCuKWgXNraQppbGxhcwriloFTb2YK4paBT3JnYW5pemF0aW9uCuKWgUNsZXZlbGFuZAriloFidXR0CuKWgXNpbWlsYXJseQriloFhc3NlcnRUcnVlCuKWgWluZXZpdGFibGUKbmVsbAriloFSYWYKRElTQUJMRQphbWluZQriloFDb21wbGV0ZQriloFiZWlkZW4K4paBQ2hhbGxlbmdlClJhZGlvCuKWgU5vdGljZQpIZXgK4paBQ3ViYQriloFhdWd1c3QK4paBUGhpbGlwcGluZXMKTWFyZ2luCmphbApnZW5lcmF0b3IK4paBdGF0dG8K4paBSGVtCuKWgVNhbHQKdW5hdGVseQriloF0ZXJyYWluCixcLArQs9GA0LDQtAriloFjcm9wCk5hbWVkCuKWgVdvbmRlcgplc3NlbgriloFmaXN0CuKWgXpvb20K0L/QtdC9CuKWgXJ1bGluZwp1bmxpa2VseQphc3N5Cm9yZW50CuKWgWdpYnQK4paBQXcKc2ltZXEK4paBcmFpZAriloFDb21wYXIK4paBZnJlZWx5CuKWgWVzcGHDsQriloFweXRob24K4paBZGlhZ25vc2lzCuKWgWNoaXBzClJhem9yCuKWgVZlcnQKRm9yd2FyZAriloFQw6kK4paBY29tcGFyYWJsZQriloFhbmFseXMKU3RkCuKWgUZyYW7Dp29pcwriloFjw7MKam9zCuKWgXBlZwpDT05TVApjbHVzaXZlCuKWgXZveWFnZQriloFTY2hsCkdyb3VwTGF5b3V0Cm9pc2UK0YHRgdC1CuKWgWNydXNoCuKWgURpZXNlCuKWgWJla2FuCmNpdAriloFFaW53b2huZXIK4paBTGFuCuKWgWRyZXNzaW5nCuKWgXNvbHZlZArQnNCwCuKWgUNoZWwKcGFyZWQK4paBc2VhbGVkCn0pKQphbmNvdXZlcgpzZWgKdGFibGVzCuKWgXJlZGRpdAriloFtb3VyCuKWgWNsZWFudXAKb3ZpxIcK4paBVXJiYW4Kb2N0CtGC0L7RgNCwCuKWgUxlZ2FsCuKWgUp1cgriloFOYXMKQ2l0eQriloF1bmZvcnR1bmF0ZWx5CuKWgVBFUgptYWtlcnMK4paBc2lnbG8K4paBa2luCmNvZGVzCtC70Y/RgApOSU5HCuKWgUNlYwriloFDVAriloFSYWNpbmcKZGFuCuKWgUhlcnoK4paBZ2VuaXVzCuKWgWV1cm9wCnNlcnZsZXQKb3dlZ28K4paBSW1hZ2luZQriloFJbXBlcmlhbApSZWdleApjw6kKSEVECmRldGVjdArQt9C90LgKaW9jCkFuYWx5c2lzCuKWgSo9CuKWgWZldmVyCuKWgU9idmlvdXNseQpGb290CkxpbmVhcgriloFwcsOzCuKWgXNhdGVsbGl0ZQriloFCZW5nCmJvdW5kcwriloFKYXp6CuKWgUN1cnQK4paB0L/QvtC70LjRgtC4CuKWgWJpbGQK4paBIiIpOwriloFkb2N1bWVudGFyeQriloFncmFzcAriloFkbGEKVFJBCuKWgXJlYWRpbHkKVG9yCkNBQ0hFCuKWgUNvbnN0cnVjdGlvbgriloFkw61hCtC00LDRggriloFHcmV5CnJ1bm5lcgpsZWFkaW5nCuKWgWNvb2tlZApyb2xvZwriloFhbm5veWluZwpERUxFVEUKYW1lcmljYW4K4paBTmlnZXJpYQriloFkYWkK4paBc2FjcmlmaWMK4paBc2VydmFudAriloFza2IK4paBYmFyZwpwaXhlbApJbmplY3QKY2FjaGVkCuKWgWNvdXBsZWQKdW5nbGUKcHJvYgo+e0AK0LvQsNCz0L4KZGVmYXVsdHMK4paBcG9ydHJhaXQK4paBZGVudGFsCuKWgWRlc3RybwriloFydWUK4paBaHlicmlkCuKWgdC5CuKWgUNPTVAK4paBQmVudApDb21wYXJlCmJvdGgKa2xhaG9tYQphaXNlcgpTdXJlCuKWgXNvbHZpbmcK4paBbGlzdGEK4paB0YPRh9C4CuKWgUV2YW5zCuKWgWZ1c2lvbgriloFjb21wbGFpbnQKSFAKSGVhcAphbHdheXMKTWdyCuKWgWFwcHJveApkaXNwbGF5c3R5bGUKbG9yZAppbnNuCuKWgUZlYXR1cmUKUlBDCuKWgXZldArQmtCwCuKWgWtpbG9tZXQK4paBZGVsaXZlcmluZwriloFjb25zdGl0dXRpb24Kc2hpbmUK0LvQtdC6CuKWgdCz0L7RgNC+0LQK4paBcHJvYmFibGUK4paBcnVubmVyCmhyZW4K4paBTmVwCuKWgW92ZXJuaWdodApwcmVhZArQu9GC0LAK0YTQvtGA0LzQsApDTE8KaWVzYQriloFvYmplY3RpdmVzCmNvbnRyYWN0CkVYUAriloFjb2xvdXJzCnhpY28KQ2xlYW4K4paBbGlnaHRseQriloFzY2VuYXJpb3MK4paBcXVhcnRlcnMK4paBRGVhcgriloFsdWMK4paBYXBwZXQK4paBZGVwb3J0ClNhZmUK4paBbWVub3MK4paBUGF1bG8KQ0lBTArRhtGW0LIK4paBUm9jCuKWgWNhcmluZwriloFlbGVjdHJvCuKWgWRlY2VtYmVyCuKWgVBoaWxvc29waAriloFjb2xvcmVkCml0c2NoCnJvcG9saXRhbgpvc3RpCuKWgU51dAriloFjb25zZWN1dGl2ZQpQZWVyCmFybmVzcwriloHFvGUK4paBQXJvdW5kCmFma2EK4paBZGlvCmNpcAriloF0b3lzCmNybwriloFtaXNlcgpjaGVja2JveAriloFGaXNoZXIK4paBZ292ZXJuZWQK4paBaMOhCuKWgUVuYWJsZQriloF0cml2aWFsCuKWgW9jY3VwYXRpb24Kcm9ycwriloFsYXYK4paBbW91CuKWgWJvcmQK0LvQuNGHClJvb20KJykNCuKWgWFydGljCuKWgW1pZW50cmFzCmNoYWlyCnVhdGlvbnMK4paBY29tbWVudGVkCuKWgXRyaWdnZXJlZApDYW5ub3QK4paBTWFyY3VzCuKWgXB1bmN0CuKWgWFjaGlldmVtZW50CtC10LTQuApleHRlbnNpb25zCmFkZXJzCmpvdXJzCmlybGluZXMK4paB0YHQvtGB0YLQvtGPClZJRVcK4paBTmFwb2xlCkNvbmZpcm0K4paBcG9ycXVlCi4uLi4uLi4uLi4uLi4uLi4K4paBTElBQklMSVRZCldhbGxldApTdWJqZWN0CmFsZ29yaXRobQriloF0cmlwbGUKcnViCuKWgXNlY3VyCuKWgWhhbmRzb21lCuKWgWRvZApyw6hzCmFjamEKY2hvZArQvdCy0LAKZXNhcgphbmNob3IK4paBU29waGllCuKWgdCj0LrRgNCw0ZfQvdC4ClVwcGVyCmFtb3VzCkZlYXR1cmVzCuKWgdCx0LvQuApTdXBwcmVzcwriloFraWxvbQriloFadQriloFiZWxvbmdlZAriloFSZWRkaXQK4paBcHJvY2VzCuKWgdGB0YLQsNGACuKWgUZlc3QKLyUK4paBUGFtCnN0b3JtCldXClBhdWwK4paBdGFsZXMK4paB0YDQsNC50L7QvdCwCuKWgXNwcmVhZGluZwriloFzY2hlZApsZWFzZWQKTm9uTnVsbAriloFIaWdod2F5CuKWgVJlc2VydmUK4paBY2F0ZXIK4paBdGlyZQriloFwb3JjaApxdWllcgpVU0EK4paBU3dpc3MK4paBw4gK4paBYnJhdmUK4paBZXhwbG9zaW9uCmxyCuKWgWNsYXNzaWZpZWQKQWJvdXQK4paBUGljdAriloFEdWJsaW4K4paBc2VwYXJhdGVseQriloFiYW5raW5nCuKWgUNocmlzdGlhbml0eQptaWdyClJvYgrRgdC10YAK4paBZWxmCuKWgWVtcGxveWVycwriloFTbG93CuKWgWp1bGkKd2VzdGVybgriloFhbmFseXN0Cm9ic2VydgriloFOaWNlCuKWgUdDCuKWgUxldHRlcgriloFoYXJhc3MKVXNlcm5hbWUK4paBQXVudAriloHRgdC10L3RggpTdXAKSUNFUwpSRU5UCnJhdGlvCuKWgdCc0L7RgdC6CuKWgWFuZ2xlcwriloFsbGV2Cl8qCuKWgW5pdAriloF3cmVjawriloFwYXRyb2wK4paBbG95YWx0eQriloFuYXRpb25hbGUKZ29tCn0kLQriloFkaXNwdXRlCuKWgXJ1cwriloHQn9GA0LXQtwriloFJbmR1c3RyaWFsCuKWgWRlbW9jcmF0aWMKYncKbGltcAp1cmJlZAriloFtaWVqc2NlCtGA0YPQtAriloF0ZXgK4paBZGV2ZWxvcG1lbnRzCuKWgUJyaWdodAriloF2YXJ5aW5nCmZhY3QK4paBUG9ydGFsCmFzaXMK4paB0LPQvtGA0L7QtNCwCuKWgWNyZWF0aXZpdHkKKSkpKQouIjsKaWV1eAriloFwcm92aXNpb25zCnV2ZQpMYW5nCm1pc3NpbmcK0YDQsNGCCnBob255CuKWgW91dGxpbmUKcGFzCmVsbQptb25pdG9yClRDUAprYXQKdWNlZApcIiwKeW5hCtGA0LDQsdC+Cm9jYXRlCuKWgWNhcmVzCuKWgWZpbnMK4paBaGVhcAriloFzbWFsbGVzdArDpGNoc3QK4paBSVgKcmVjdgprZXl3b3JkCuKWgWF0dHJhCuKWgXNlbGJzdApVbmV4cGVjdGVkClNtYWxsCuKWgdC90LDRgdC10ZnQtQriloFIdXMKRW5jb2RlcgriloF1bnNldAriloFob21lbGVzcwriloFKb2hhbm5lcwriloFVUkkKYW50YWdlCuKWgWluaGliCuKWgWFwcHJlY2lhdGVkCmllbHRlCuKWgXN0YXlzCuKWgWFsbGVnZWQK4paBY29kaW5nCuKWgXR2w6UKcGlwZWxpbmUK4paBV29yCkZpbGVQYXRoCuKWgWFjY2VwdGluZwriloFFeGNlbGwK4paBTHV0aGVyCuKWgUZyaWVuZHMK4paBY3VydAriloEnJAriloF0aWdodGx5CuKWgWN6xJkK4paBdW5uZWNlc3NhcnkK4paBRmVkCuKWgdCQ0L3QtAriloFIUAriloFTdHJpbmdCdWlsZGVyCmVuYnVyZwonKAp2bWEK4paBQWJyYWhhbQpXTAriloFSZWZlcmVuY2UKSm8KQmxvYgriloFIdWdoCuKWgUJ1bGdhcgpNRVNTQUdFCtC30LLQvgriloFhdm9pZGVkCuKWgXBvZW1zCuKWgdGB0YsK4paBT3BwCmF2aXJ1cwpQcmV2aWV3CuKWgWtlcgp1ZXZhCmZsaXgK4paBY2hhcmdpbmcK4paBbW90aXZhdGVkCuKWgU9yZAriloFhdmV2YQp4bAriloFmbGV4aWJpbGl0eQphZ25hCuKWgXJhY2lzbQpkaAriloFiYWtpbmcKRnJpZW5kCmJsZXIK4paBTG9nZ2VyClRlbgpuYXZpZ2F0aW9uCuKWgWF0dGFjaG1lbnQK4paBYmFqbwriloFwcmljaW5nCuKWgVRpcApkYXIKR0cKVG9vbHMKdm9sdXRpb24KYW1hcwriloFiaWJsaQriloFhZGFwdGVkCm94eQriloFGcmVlZG9tCnJpY28K4paBY29sbGFwc2VkCnptCnBsbwriloFjw7QK4paBcnQKw6RuZ2VyCuKWgURSCuKWgUJpdGNvaW4KZ293CuKWgWNoZXoK4paBb3RybwriloF0ZWlsCtC70LDQs9CwCuKWgVN0YXJzCuKWgWludmVzdGluZwriloFhYm9hcmQK4paBZmxpZ2h0cwriloFnZW51aW5lbHkK4paBcHJvbWlzaW5nClJvdGF0aW9uCk9jYwriloFzdW9pCnN0cmluZ2lmeQphY2llcwriloFHcm91bmQK4paBc2VxdWVuY2VzCuKWgWN1cmUKb3V0aW5lCuKWgSEhCuKWgUdheQriloFnYXJkZW5zCuKWgUdsYXMK4paBVGFpd2FuCnJlZ2lzdHJ5CuKWgSN7CuKWgWluc3BlY3Rpb24KVGVsbAriloFgJHsKcG1hdHJpeAriloFyZWd1bGF0aW9uCmZpbmlzaAriloFFZGdlClNwcml0ZQriloFDb25mZWRlcgriloFpbW1pZ3JhbnRzCuKWgWVsZGVybHkKdW1lZAriloFRdWVzdGlvbgpHYXRld2F5CmZvbnkKw650cmUK4paBY29zbQpSb3VuZAriloFpZ25vcmluZwriloFLaQriloFzZW5zaXRpdml0eQrDonRlYXUK4paBZW5naW5lZXJzCuKWgWNvcnJlbAppcnRlZW4K4paBU3dpdHplcmxhbmQK4paBaW5oZXJpdAp3b3IK4paBbWlkbmlnaHQK4paBUHVuCmFrdGUKRGlzYWJsZQriloFlc3BlcgriloFub3RhdGlvbgriloFVbml2ZXJzaWRhZApzb2wKZGVybgppbmdlCuKWgWludml0YXRpb24KKX19CuKWgcOiCuKWgWVzc2F5cwphcm1lZApjaHNlbAriloHQvdC10LPQvgriloFjb25maXJtYXRpb24KdW5pdHkK4paBQnJvdGhlcgriloHQhApuaWNlCuKWgVN1ZQriloF0cmF5CtGA0L7QuApDb29raWUK4paBRmVkZXJhdGlvbgpJQ1QK4paBcMOpcmkKc3R1ZGVudAriloFWZW50CktLClNURU0KYXdrCuKWgXJldW4K4paBcGVvcGxlcwppb3JlcwpvdWJ0CuKWgVN0YWdlCuKWgWNoYXJtCmlldXIK4paBdXRpbGl6ZQriloFkaXN0cmlidXRlCuKWgWdvdHRhCuKWgWJsb2NraW5nCkhvdApicmV3CuKWgWJvbmRzCmxlYWYKUHJvdGUK4paBZGljZQriloFOb3JtYW4K4paB0L7QutGCCuKWgWluc3BpcgpQcml2CuKWgVB1ZXJ0bwriloHRgtC+0LLQsApSU1QK4paBc2YK4paBcXVhbGUKbmljawriloFzdXBwcmVzcwrRh9Cw0YIK4paBSGVsbG8K4paBY3Jvd2RlZApoYmFyCuKWgWxvYWRzCuKWgWNvcnJlY3Rpb24KYWRqdXN0CuKWgUVzdGF0ZQp0ZXh0c2MK4paBY29vbGluZwppdmVhdQriloFiZXR0aW5nCj09PT09PT09PT09PQpyZW1hcmsK4paBaW1wbGljYXRpb25zCuKWgXBvegrDvG5nCuKWgXJlZ2FyZHMK4paBYW1pZAriloFoYWJpdGFudGVzCkdJCuKWgUZvdQriloFqYXIK4paBcmVxdWlyaW5nCuKWgURydXBhbAriloFsaWFiaWxpdHkKY3phcwriloFseXJpY3MK4paBTm9ydApzaWwK4paBTWV5ClVOSVQK0LLQsNC90LjRjwpmdXR1cmUKaGlyCkNBTApMQUJFTAriloFTd2VldAriloFzdGF0dWUKYm9ybmUKTm90aWZ5CuKWgWhlcml0YWdlCuKWgWRvcm0K4paBbGV2ZXIK4paBbXV0dGVyZWQKfSYK4paBaW50ZXJtZWRpYXRlCuKWgVdhdHNvbgriloF2aWV3aW5nCmt0b3IKZW50aWV0aAp4eHgKYXR1CuKWgUluc3RhbGwKQ29udGluCuKWgXRvdXRlCuKWgVBUCuKWgXVyaQpDYWxsZWQK4paBT0ZGCmlnbGlhCmljaGkK0YHQvdC4ClZvCuKWgWV4aGliaXQK4paBYXN5bXB0CuKWgUd1bGYK0LvQu9C4CmRvbWluCuKWgWTDqXBhcnRlbWVudAptaWwK4paBQmV6CuKWgWxhdGVseQriloFkZWZpbmluZwriloFFTApvbW9ycGhpYwriloFmZWJydQpJU1RFUgpyZXNvbHZlZArRgtC10LkK4paBU3BlY3QK4paBc2VtcHJlCuKWgVNlcHQK4paBY2xlYXJpbmcK4paBZGlhbWV0ZXIKaW5kbwriloFzb2NjZXIK4paBRENIRUNLCnZvdGUK4paBbm9taW4KVHlwZWQKTWlzc2luZwpXYXMK4paBQ2VudHVyeQriloFkaXJlY3RvcnMK4paBbW9kZXJhdGUK4paBSWxsdW1pbmF0ZQriloHRh9C10LvQvtCy0LXQugriloFCYXB0CuKWgVF1YW50CuKWgXRyZWF0aW5nCmFnaQpTaWwKcmluZ2UKxYLEhQplbGxhbgriloFmaW5vCkNhcHR1cmUK4paBU2ljCuKWgXN0YW1wCuKWgUJ1ZW4K4paBc2VndW5kbwriloFpbnZlcnNlCuKWgWR1cAriloFicm9rZXIK4paBc2VhcmNoZWQKYmVhbnMK4paBQUJDCmlzaGEK4paBTGlua2VkCuKWgU5pY2hvbGFzCuKWgVN3ZWRpc2gKaGVtYWwK4paBRU0K4paBamVnbwrRh9C10YHQutC40LkKbG90CuKWgWRpc2NyZXQK4paBRWcKcGljawphbW9uCuKWgVJhaWx3YXkK0LrQsNGACuKWgW5hdmlnYXRlCuKWgUNvbW1hbmRlcgriloFkaXNhcHBlYXIK4paBY29uZ3Jlc3MK4paBZ3JhcGhpYwpzcHIKRkxPQVQK4paBU2VyaWFsCuKWgdGP0L3QstCwCnNvY2lhbApidWNoCuKWgXNlYWwK4paBY2VtZW50CuKWgVllCm90dGkK4paBVGhlb2QKcmVtb3ZlQ2xhc3MK4paBSnVsaWUK4paBZ3LDtsOfClNUUkVBTQriloFHQgriloFCZW5lZgriloFNYXRyaXgK4paBa2VpbmUK4paBY29udGluZW50CuKWgWphYXIKREFJCuKWgVNlcXUKa3JlaXMK4paBY3Jvd24KSW5pdGlhbGl6ZQpheHkK4paBQ0lBCuKWgWludGVuZAriloFidWIK4paBbWFza3MK4paBc2l0dWF0ZWQK4paBRWR1CuKWgXBhcnRpY2lwYXRpbmcK0YjQtdC5Cl97LQriloFUZWxldmlzaW9uCuKWgXByZWZlcmVuY2VzCuKWgURyb3AKcmV2aWV3CuKWgXZpb2xhdGlvbgriloFjaHJpc3QKcXEK4paBTXlzdApjb21tYW5kcwriloFwcmltaXRpdmUKaWxsYW5jZQriloFyYW5naW5nCuKWgUFkdmFuY2VkCikmCuKWgdCe0LEK4paBc3Vic3RyCuKWgWNsb3N1cmUKdHdpdHRlcgpuZXoK4paBcHJ6ZWQK4paBbWVyZ2VkCnVyb3MK4paBamVyCuKWgV8oCmFyYW4K4paBUGF0cmkK4paBVHVuClVLCmlsaWF0aW9uCuKWgUtlaXRoCk93blByb3BlcnR5Cm9wc2lzCk1hZAriloFkZWZlbmNlCkFpcgo9JHsKY3JpcHRvcnMKU29tCuKWgcKxCuKWgUhBVkUKfn5+fn5+fn4K4paBYmVhdGVuCuKWgWludGltYXRlCm9waWMK4paBcMWZZWQKU2hvcApUYWJsZXMK4paBU0kKcmVuYW1lCuKWgXByb2R1Y3RpdmUKcmlibHkK4paBTHVjawriloFrbHViCn19XnsK4paBRmlzaApQUkkKZW5hcmlvCuKWgXBzZXVkCk9yZAriloFxdWVscXVlcwriloFEb2QK4paBcHVudG8Kc2VuYWwK4paBQnJvdGhlcnMK4paBZGlhYmV0ZXMKUGFpbnQK4paBcGVyc29uYXMK0LLRitGACuKWgW5lcAriloFFbGxlbgriloFow6QKY3J0YwriloFmcnVzdHJhdGlvbgouXntbCuKWgXNwcmludGYKKy0KRW5jb2RlCuKWgdC90LDRgdC10LvQtdC90L3RjwpEcmF3YWJsZQriloFib3JlCuKWgUVsZArRgtC10YIKVGljawphcmF0b3IK4paBRmluYW5jZQriloFhZ3JpY3VsdHVyYWwKKV57LQptYXliZQpTY2hlZHVsZQriloFb4oCmXQpldGVjdGlvbgrQu9GM0L3QvtCz0L4K4paBaGVlbHMK4paBRW5qb3kKU3lzCm9yc3rDoWcKQ09OVFJPTApjY2NjCuKWgURpY3Rpb25hcnkKTmVlZAriloFIZWF2ZW4K4paBdmVzc2VscwplY3ljbGUKdGllcwriloFlbmRlClNJTkcKRGVzY3JpYmUK4paBUHVibGlzaGVkCuKWgXdpbmRzCm5laG1lbgriloFERVMKSG9yaXpvbnRhbAriloFMb3N0Ci0tLS0tLS0tLS0tLS0K4paBcHgKfSh7XAriloFIZWlucmljaApvbXNuaXR0CmhvcwpSb2xsCnRvcmNoCuKWgWVxdWl0eQriloFjb2xsZWN0aW5nCuKWgWxpZnRpbmcKc3ViZmlndXJlCk5ldmVyCuKWgUxlbmd0aAriloF3aW5uZXJzCuKWgVVTRAriloFzdGVzc28K4paB0LDQsdC+CuKWgWFsdHJpCuKWgXByb2R1Y2Vycwptb25zCuKWgVBvcHVsYXIKQ29tYgphYmxvClJFU0VUCtGC0LLQsApPdmVybGF5CuKWgWlkaW90CmV4aXN0CkJlaGF2aW9yClVCTEUKaWVycmUKbWluZWNyYWZ0CuKWgWZvcwriloFlbmN1ZW50cmEK4paBc2NyZWFtZWQK4paBcG9seW5vbWlhbAriloFjb25lCuKWgWNpdGVkCuKWgXByZXNpZGVudGUK4paBcmVzaWduCuKWgXllbGxlZAriloFpawpQbHVzCuKWgdCc0LjRhdCwCuKWgVRoZW1lCuKWgXJlbGkKbmVtCuKWgWFtZW4K4paB0IgKVGhhbmtzCuKWgWFsdW1pbgriloFzaGVsZgohIik7CmFwcGVuZENoaWxkCuKWgWxvZ3MK4paBcmVnZXgK4paBcHVuawpDT1JFCuKWgWJvcmRlcnMK4paBUmVxdWlyZWQK4paBZmxhdwriloFjaW5lbWEK4paBdsOtCuKWgWFib3J0aW9uCmpvdXJuYWwKaW5pdGlvbnMKc3RhdGVtZW50CuKWgW91cnMKw7N0CuKWgVR1cm5lcgppbnVzCmV2ZXMK4paBbWFnYXppbmVzCuKApuKApgpsYWNlCnNsaWRlcgriloFsb2NhdGUK4paBZGVzYXJyb2xsClBhbgpUb20K4paBTGFuZGVzCm9saWEK4paBdW5tCuKWgVNlbmF0b3IK4paBYWRtaW5pc3RlcgriloHQutC+0ZjQuAriloEnewriloEpewriloFHb2xmCuKWgWdlbGUK4paBZHJhbmsKcG9zaW5nCuKWgWVuc2VtYmxlCmhlYXAKc2lnbmF0dXJlCtGC0L7QuQrRhtC40LkKc2NyaWJlcgriloFjaGFtcApuaW8KbGF5ZXJzCuKWgXRydW1wCuKWgW1vZGFsCm9uY2VzCtGH0LXQvdC90Y8K4paBQ29ydAriloFzdW5saWdodAriloFNdXNlCsOpbWVudAriloFjdXJpb3NpdHkK4paBdnIKT2N0Cnlsb24K4paBcmVsYXRpdgpzdHkKXS8KYXp1CuKWgVVTUwriloFwZXJzb25hCk1lbgriloF3aWRlcwriloFLYXMKaWNpZXMK4paBQ29mZgriloFjb25zb2xpZAriloFpbnRlcmFjdGl2ZQpvcGluZwpMYW5kCuKWgWVuZXJnaWVzCuKWgWluZGVwZW5kZW50bHkKaW5uZXJIVE1MClJlcXVpcmUK4paBYWJzdXJkCuKWgUlORk8K4paBYnVuZAphbnrDtnMK4paBR2VudAriloFzY2hvbGFycwriloFDcmVhdGVkCuKWgW1hcmluZQouLi4nCkVOVgphY2h0ZQphbWVudHMK4paBdHJ1Y2tzCuKWgXJld2FyZHMKb2dzCkdyZWVuCuKWgW7DpAriloFpbmhlcml0ZWQKaW1hdGVkCuKWgUZSRUUK4paBZXh0ZW5zCmRhZwriloFnbG93CmFyZGkKTkYK4paBZXZhbHVhdGVkCuKWgW9wcwriloFjbGVhbmVkCuKWgVByb3ZpbmNlCmhhYmlsCtCz0YDQsNGE0ZYK4paBVENQCuKWgdGP0LrRlgriloFkZWNlCuKWgWNvbnRlbXBsCuKWgWFjcXVpc2l0aW9uCn0pJC4KPSItCuKWgXNlY3RvcnMKOjo8CnXDnwriloF0cmFiYWoKdGhhbgriloFTdGEKTWVtYmVycwriloFydgopXntcCm1pdHQK4paBV2FuZwriloFXZW5kCuKWgUdsYXNzCuKWgXR4dAriloFDYW1lcm9uCmllbHMK4paBaW1tZXIK4paB0L3QsNGB0LXQu9C10L3QuNGPCi4uLjwvCmF1dG9tCnJvZQriloFkaXN0aW5ndWlzaAriloHRj9Cy0LvRj9C10YLRgdGPCuKWgXByaXZpbGVnZQriloFkZWxpZ2h0ZWQK4paBZGVwbG95bWVudAriloFjb250cmlidXRvcgriloF0aHJlYXRlbmluZwriloFSZWdpbWVudAriloFkZWNsaW5lZApPYnNlcnYKKX17XApXQwriloFGaXgKcsOtYQp4dHVyZXMK0YHQu9C10LTQvtCy0LAK4paBSGlzdG9yaWEK4paBSVNPCuKWgdC00LLRgwrQu9C60L4K4paBd2l0aGQKYm9yb3VnaAriloF0b3NzZWQK4paBanVtcGluZwriloEhKAriloFtYW51YWxseQriloFzYXAKcXVlc3RhCuKWgU5vcndheQriloFBdHRvcm5leQp1Z2cKcHVsbArQu9C40L3QsApwYXJhbGxlbAriloFmYXNjaW5hdGluZwriloFieWxhCuKWgWludm9rZQpGdW5jdGlvbnMKJCkuCuKWgWNvbnNpc3RlbmN5CuKWgdGW0LcKZHluCnByZWRpY3QK4paBUHUKZWxjb21lCnBsaWNhdGVkCtGA0LDQsgplc3BlYwriloFleHBsb3JhdGlvbgriloFmb3JhbQriloFjb21wbGltZW50CuKWgXNlbnNlcwriloFjbGFzCuKWgUF1dGhvcnMK4paBaGlnaGxpZ2h0cwpNb2JpbGUK4paBSW50ZWxsaWdlbmNlCuKWgWRlc3NlbgriloFza3VsbGUK4paBb3ZlcnZpZXcKYXTDswriloFibGFzdAphdHJpY2UKw61jw60K4paBZW50aHVzaWFzbQriloFjaGFyYWN0ZXJpemVkCmV0YXJ5CuKWgXNwZWN0cmEK4paBQW5hCuKWgWhvbm91cgriloFwaGFzZXMK4paBSmFwCuKWgXN1cnByaXNpbmdseQriloFkaWNrCkRlY29kZXIK4paBc2V4eQpjZWRlcwriloHQsdGWCuKWgWl0ZXJhdGlvbgpjYWxjCilcLAriloFpbmZhbnQK4paBc29mYQriloFMb2wK4paBTGF1cmVuCnJlc3BvbnMK4paBTGl2CuKWgW7DpHIKQ29uc3VtZXIKZWVudGgK4paBZGV2aWVudAriloFCVApkaW5ncwriloFVUAriloFVa3JhaW4K4paB0YTQtQriloFzcGF3bgp5ZWN0CsOpdGFpdAriloFSb3RoCtC70L7QugriloHQv9C+0LHQtQriloFjYXR0bGUK4paBc3R5bGVkCuKWgX07DQpsagriloFMYW5jCuKWgUNodXJjaGlsbApLUwriloFyb2kK4paB0LHRgNC4CuKWgdC/0YDQvtGG0LUK4paBU2NhcgpJQlVUCmVudGluCuKWgU5vdQriloF1cmdlCuKWgUJhcm9uCuKWgWRldmlsCmFzc2VtCkNMSUVOVArRh9C40L0K4paBZ2VybQpmdW5kCmtpbQriloFBcHBseQriloHQkdC10YAK4paBamFudWFyaQrRhdGA0LAKY2hlbQriloF0aHkKU29ycnkK4paBU3JpCuKWgVNoaXAK4paBaGFsZndheQriloFSdW0KU2NoZW1lCuKWgUN6CuKWgURNQQriloFlbmNvZGVkCml0aXplCuKWgXNvcmUKQnlOYW1lCkZJTgriloFvcmRlbgriloFhbGxpZXMK4paBxYEK4paBUmVzZXJ2ZWQK4paBY29tcGV0aW5nCuKWgUNvb3JkCuKWgURyYWcKQ29kZWMKVEFSR0VUCmN0aWN1dApncmFkZWQK4paBYW5nZWwK4paBc2NyZWVuaW5nCnJpamsK4paBYWRlcXVhdGUKU1RFUgriloF2YWcK4paBd3lzdAriloFrd2FyZ3MK4paBY29tcGlsZXIK4paBbWFpbnN0cmVhbQriloFkcm0KRml4CmlsbGlvbgriloFlcmhpZWx0CuKWgXZhaW4KYXR0ZXJpbmcKYW5hbHlzaXMKdGVjaG4K4paBTW92aWUK4paBbWVqb3IK4paBc3RyZWFrCj4vCuKWgdGA0L7QtNC4CuKWgXNvcGhpc3RpY2F0ZWQK4paBUmhlCnVzc3kK4paBU3lyaWEK4paBQ2Fyb2xpbmUKcml0ZXJpb24Kw6lyYwpMb3ZlCuKWgWN5Y2xlcwriloFUZXJtcwriloFtZWRpZXZhbArRjNGPCuKWgW1pc3Npb25zCkhhcmQK4paBcsOpZ2lvbgriloFQaG9lbml4CkRlZXAK4paBc2FtcGxpbmcK4paBZGlzbWlzc2VkCnByb3ByaQriloFqdWRnZXMKYcWCYQp1bG9zCuKWgUxpb24K4paBbG9jYWxzCm5lZ2F0aXZlCm9nZW5lb3VzCuKWgUFwaQriloFkaWNpCuKWgdCw0L/RgNC1CuKWgWF1dGhvcml6ZWQKemVydwriloFwZwriloFBV1MK4paBa2V5d29yZAriloFlbnRyZXByZW5ldXIK4paB0L/RgNC+0LUK4paBVmFuY291dmVyCml0YXRpbmcKRmFzdAriloFhY2tub3dsZWRnZWQK4paBdG91cmlzdAriloFHcmlkCuKWgUVudHJ5CuKWgWdlYnJ1CnNhdApiZXJnZXIK4paBVEYK4paBbXQK4paBTWFyY2VsCuKWgVR3ZW50eQriloHigJ0Ke317CmhpbnQK4paBYW5vbnltb3VzCkNhbXAK4paBKipfCkJ5Q29tcGFyYXRvcgpVQwriloF0w7YKRXZlbnRIYW5kbGVyCuKWgXRvdXJzCuKWgWxvbmVseQriloFTdW1tYXJ5CnN0aWNrCkFsbG93ZWQK0LvRltCyCuKWgUJyZXcKQU1FVEVSCuKWgXJldmlld2VkCmlyYXQK4paBbmVydmUK4paBTGluZGEK4paBZGVjaXMK4paBc3Bva2VzCuKWgXF1ZWQK4paBRlQK4paB0LLRltC9Cm91c2luZwriloFMYXJnZQriloFvcHBvbmVudHMK4paBRGlzYwpGb3VuZGF0aW9uCkVRVUFMCm9nZwpSZXRyeQpDSEFOTkVMCuKWgdCV0LLRgNC+CuKWgSUuCuKWgWlpCmRlYWQK4paBTWFsZQpDb21wbGV0ZWQKdHlwCuKWgVR5bGVyCkRpc2sKSGlkZQppanVhbmEK4paBcHVibGljYXRpb25zCmZveAp2aXNlZApGb3JlaWduCldyaXRlTGluZQrQtNC10YDQsAriloFyZW1haW5kZXIKUGlja2VyCndlYWx0aAriloFHb3IKc2VxdWVudGx5CuKWgWNvbGxpc2lvbgriloFIYXJyaXNvbgriloF3b3JrcGxhY2UK4paBTm9ybWFsCuKWgUJpcnRoCuKWgWNvbnN1bWUKU2hpZnQK4paBYXZvaWRpbmcK4paBQ2hhCuKWgUFudGkK4paBY2hhcnRzCuKWgVBhdgrRgdGC0LLQvtC8CnVhbG1lbnRlCmFuZWQK4paBQXVjaApyZGV2CuKWgXNoZWVyCuKWgWFuZ2wKc3Vic3RyCkdlbmVyYXRlCj49CuKWgUJldgriloHRh9C10LwK4paBY2FtcG8K4paBbGVjdHVyZQpoeXBlcgriloFCYWx0aW1vcmUKbWl4CmtlaXRlbgriloHRgNCw0LTQuAriloFsYXN0ZWQK4paBZGlzY3JpbWluYXRpb24KaWd0ZQpva2FsClBoYXNlCuKWgVRpdGVsCuKWgUZpZnRoCuKWgWRpYWdub3N0aWMKc3VuZwriloFnaW9ybmF0YQpvc3RhCmlzY28K4paBU2FyYQptdgriloFlbMWRCuKWgVJvc2VuCuKWgUVTUApwaGVyCuKWgWFqClBhdGhzCuKWgVJhbHBoCuKWgcW+ZQrRgNC10LIK4paB0L7QutC+0LvQvgriloFBZ3JlZW1lbnQK4paBV29yZFByZXNzCmFudHJ5CuKWgXBpY2tzCuKWgU51cgpjaGVkdWxlZApraWUK4paBcmVwcmVzZW50YXRpb25zCisrKXsKZXNzbWVudAriloFjb3VudGxlc3MKQmxvY2tzCnltZQriloFjbG8K4paBQmVuZWQKY2hhcnMK4paBQWdlbnQK4paBaGlzdG9yaWEK4paBRmxvb3IK4paBdGVuw61hCuKWgWxvbmdlc3QKZnJpY2EK4paBYmVmCuKWgW1lY2hhbmlzbXMK0LvQsNC30LgK4paBaGV0ZXIK4paBYXRobGV0ZXMK4paBcGVyaW9kaWMK4paBVm90ZXMK0YDQuNGB0YLQuAriloFuw6EK4paBbWFpZAriloFzd2VhcgriloF3aXBlZAriloFncmFwaHMK4paBdGhlc2lzCuKWgXNlbnNhdGlvbgpwZXJzaXN0ZW5jZQriloFWaWwKYWNzCuKWgWRlZWwKc2NyaWIKaWVybwriloFkaXNjcmUKYWlyeQpEYXRhU291cmNlCnF0CmljaW9uZXMK4paBcmVzcGVjdGVkCuKWgWZyYW0K4paBc3BlY2lhbGl6ZWQK4paBcHLDqXNlbnQKVHVybgriloFjb21wbGFpbnRzCigiLAriloFSZWxhdGVkCuKWgVNldHRpbmcK0YDRjgriloFzxIUK4paBUGxlCuKWgWRpc3NlCmNhcHMK4paBQ2FzaAriloFjb25zdW1lZAriloFsYgpBZGp1c3QKU2VyaWFsaXplCmlzeQriloFwYXRlbnQK4paBdmlzaWJpbGl0eQriloFTYWNoCsO8bnN0CuKWgWN5YmVyCuKWgUJsYWtlCuKWgUJsb29tCuKWgVNoYWgKUE9XRVIK4paBaW5jbHVzaW9uCnNlcmllCuKWgW1hbmVyYQpzZWNvbmRzCmlzY2hlcwriloFDYW5kaWRhdGUKV0QKb3BhdGgK4paB0L/RgNC+0LPRgNCwCuKWgWVmZmljaWVudGx5CmFwcHMKdG9vbGJhcgp3ZW5kCuKWgU5laWwK4paBZm9ybWF0cwriloFUZW1wbGF0ZQriloFtaW5pc3RyeQriloFDaGFyYWN0ZXIKVW5pZm9ybQriloFmb25jdGlvbgrQvdC10LwKV2hpbGUK0LrQstCwCtGA0ZbRjwriloFETAriloFMYXlvdXQK0L3QtdC90LjQtQriloFjYXZhbAriloFIb2IKU1BJCuKWgWhlbHkKRGVzdGluYXRpb24KKSwNCuKWgWlPUwriloFhZG1pc3Npb24K4paBY3NzCnVzZXJJZAp1bWJsaW5nCuKWgWJvb2tpbmcK4paBQ09QWVJJR0hUCuKWgWJsYW5kCm91dHB1dHMK4paBc3VibWlzc2lvbgp0aXQKZmVjdGlvbnMKZnJhZ21lbnQK4paBZmHDpwriloFUaHJvdWdob3V0CuKWgWRpc3Rpbmd1aXNoZWQK4paBYXJyYW5nZQp1bWVyaWMKeGZlCmlwYWdlCtC10YDQttCwCuKWgUNhcnMK4paBUEFHRQriloFhdW5xdWUK4paBaW5zZXJ0ZWQKc21pdGh5CkFMTE9DClJFQwriloFCYWsK4paBU3Ryb25nCmFjaGVuCuKWgVNwZWNpZmljCndxCuKWgdCU0YMKTU9WRQriloFtw7pzaWNhCuKWgUNyaXMKZWF1CuKWgUZvcnVtCmxpc3RlZAopXFwK4paBWFZJCuKWgdC80L7Qu9C+Ci8kCkJlcgriloF0YWN0aWNzCkZvcm1hdHRlcgpvcGVucwriloFyaAriloF0cmFtClZMCuKWgVByb2ZpbGUK4paBcGFyaXNoCuKWgVJheW1vbmQK4paBY29udGVtcG9yCuKWgVBsYW5uaW5nCuKWgdCn0LUK4paBQVJNCuKWgWRlc2lyZXMKa3YKT3MK4paBbWluZXIK4paBcXVhbGlmeQppa3UK4paBZGVybmkKb2zDs2cK4paBS2lkCmFuZWFuCuKWgUhvbGxhbmQKQXV0b20K4paBSGFtaWx0b25pYW4KU3RhdGlvbgpqc3AK4paBWU9VUgriloFUaGFpbGFuZAplZmZlY3RpdmUK0L/Qu9C+CuKWgXJlbGlldmVkCuKWgU9rbGFob21hCuKWgUp1bGlhbgriloFpbmRlbnQKaWZyCtC/0YDQtdC00LUK4paBZmxhbWUKb25pbwpBc3NpZ24K4paBc2hpZnRzCuKWgWNhcmFjdGVyCmlmaWNhdGVzClhSCuKWgUdGUApGRUFUVVJFCuKWgU1haW5lCuKWgWZyYW5rCuKWgWFsaWduZWQK4paBcMWZw60KQ29kZUF0dHJpYnV0ZQriloFNQUMK4paBUm9vdAriloFGTQplcnZhdGlvbgrRgdC70ZYK4paBc2h5CuKWgXBhcnRpY3VsCnBsYXR6CuKWgWh5cG90aGVzaXMKYXRob2wKc1dpdGgKSnMKJF57LQriloEjIS8K4paBbGVtb24K4paBYWJvbAriloFNaWxhbgphbnRlbgriloFzaWEKcmlhcwriloFjb25zaWQKYXNzbwphaW5lcnMK4paBY2lyY2EKcmV0cnkK4paBbnVldm8KY29uc3RhbnRzCuKWgU1lZGl0ZXJyCuKWgVR1cmtpc2gKaW9uZW4KY3J5cHRvCuKWgWV2b2x2ZWQK4paBIjwvCuKWgVVzdWFsbHkK4paBaGFubm8K4paBTVQKRGltZW5zaW9uCm9uaWFsCuKWgWNsb3NldAriloFzdHJpZGUK4paBZXBpZAriloFIaXN0b3JpY2FsCuKWgUNyZWF0aXZlCuKWgWF0dGFja2luZwriloFJbnRyb2R1Y3Rpb24K4paBdml0YQriloFzdGF0aW5nCuKWgWVudmVsb3BlCuKWgXZvbGF0aWxlCi0tLS0tLS0tLS0tLS0tCmdhaW4K4paBdG9nZ2xlCkludGVncgpCVVQK4paBZGVmZW5kaW5nCmFhbAriloFNb25nCuKWgXJlZnJpZ2VyCmNsZWFudXAK4paBcGFya2VkCm5mCuKWgWxpZ2h0ZXIK4paBcmVnaXN0cnkK4paBQW5udWFsCuKWgXRlc3RpbW9ueQriloFIYXJwZXIKRGVidWdnZXIKb2xvZ2ljYWxseQriloFjb21waWxlZApIYXIK4paBR3JhZgriloFoYWxsd2F5CuKWgW5vcnRlCuKWgVJlc3RhdXIK4paBTG9yZW4KamoK4paBcGhyCmludGVycwriloFjb252ZXJnZW5jZQp1ZXNlCmNvbnRyb2xzCnN0cmlkZQriloF2YWxvcgrRlNGOCmVzZW4KRU5ET1IKZ2xvYgriloFzaGEK4paBVXRhaAp3YWxsZXQKXC8K4paBTmF0YWwK4paBbW9kZXN0CmFkcgriloFwcm94aW0Kc2J1cmdoCuKWgWVkaWZpYwriloFxdWVyaWVzCmFyY2hpdmUK4paBcGluZQriloHDrQpIRUFERVIK4paBdGMKcHN5CuKWgWJlYXN0CuKWgWRldGVybWluaW5nCuKWgWp1bmsK4paBY3JlZXAKY29scwriloFuYW4K4paBcG9ydGlvbnMKaW1vcwpncnUK4paBWmVybwpiZWNrCuKWgVN0ZXZlbnMKbnVtZXJpYwriloFndWlkZWQK4paBUG9vbArQvtC90LUK4paBR2VsCuKWgWFjZQriloHQsNC9CuKWgVNhdQpjaHRlbgpPcGVyYXRpb25zClNGCuKWgWltcHJpc29uCuKWgXVuaXR5CuKWgScnJwriloFtYXlvCmVrZW4K4paBZmFkZWQK4paBQ29udmVudGlvbgplbnRyZQpjb21wYXRpYmxlCm7DrWhvClRoYW4K4paBZsO2cnN0CuKWgXdpZGVzcHJlYWQKZGlydHkK4paBTmVncm8Ka2lsCmRvZXMKbGFuZG8K4paBY2F0Y2hpbmcK4paBY2VyZQriloFJbGxlZ2FsQXJndW1lbnQK4paBUG9ydGxhbmQK4paBU3R1YXJ0CkVSTkFMCuKWgXBlbmlzCuKWgWJydXRhbAriloFoZWQKZm9ybWluZwpBcnJheXMK4paBVEFCTEUK4paBbGVhc2UK4paBZXF1aXBvCm9uZG8KZmFjZWJvb2sKRU9GCmd6CuKWgWlycQriloFzZW50ZW5jZXMK4paBZGlmZsOpcmVudAphdmcKZGVwZW5kZW50CuKWgVJlbmRlcgriloFoYWFyCm92ZXJyaWRlCuKWgWhvdXNlaG9sZHMKZHJvCkRlY29kZQpQQ00K4paBdW5kZXJzCuKWgUxhcAriloFhY2NvbXBhbnlpbmcKL18KREVDCuKWgUJpcwriloFlcGljCmFuZ3MKcGFyZW5jeQriloFMbG95ZApnbWFpbAp1cGl0ZXIKYWx0aWVzCl0iLAriloFjb3BpZWQK4paBUHJvcGVydGllcwpEQVQKTlVNQkVSCuKWgdGB0L7Qsgpva2kK4paBQmVoaW5kCuKWgUhhdgriloFDaGF0CuKWgXBzeWNob2xvZ3kK4paBRmVsbG93CuKWgWVwb2NoCuKWgWF1bnQK4paBS2luZGVyCkJBRApFTkFCTEVECuKWgWNvbXBsZXRpbmcK4paBcHJlc2lkCtC90L7QstC1CuKWgUhhdAriloFuZXN0ZWQK4paBYXJjaGl2ZQpDT05ECmrDoArQvNC40YDQsAriloFlZmZlY3RpdmVuZXNzCuKWgWluY29ycG9yYXRlZAriloF0b3Vqb3VycwppbnRlcnJ1cHQKUnVubmluZwriloFhbGxlcgriloFzb3VscwpSZXBseQpuZXV0CuKWgWludGVydmVuCldBSVQKSGkKZWtzCm9sb2fDrWEK4paBc2NoZW1lcwpkemllCm9scGgKYmV5CuKWgXdpdGNoCmNob2ljZQriloFtZXJjaGFudAriloFJbmZhbgovJHsK4paBQ29uc3RydWN0CuKWgXNwaGVyCuKWgWFkZGljdGlvbgriloFzY2llbmNlcwrDqWJlbgriloFyZWdpc3RlcnMKYWNoaQriloFwZW5ldHIKYXVzZXMK4paBcHJlc2NyaXB0aW9uCnByaW50U3RhY2tUcmFjZQriloF0cnVuYwpmcHJpbnRmCkhICk9wY29kZQriloF1c2VySWQK4paBQWdyaWN1bHQK4paB0YDQsNC50L7QvdC1CtC/0LDQvQppY2nDswriloFyZWNpcGllbnQKV2hlCnVpdHMK4paB0L3QvtCyCuKWgVlhbmcKZ2xhc3MK4paBZ3JpbmRpbmcK4paBQXJtZW4K4paBVml2CuKWgW5hdmFsCuKWgXNlbG9uCkJhbmQK4paBcmVwcsOpc2VudApde1wK4paBbMOkCm9tYXMK4paBZGlzdHJpY3RzCtGI0LrQuAriloFNZWV0CmljYXRlcwriloFzaG91dGluZwphZ25lcgriloFzZWN0CuKWgWRlbGxvCuKWgWZpZ2h0ZXIKdG9vbHRpcAriloFJbnRlbnQK4paBZGl2aXNpb25zCuKWgWV4cG9uZW50CuKWgdCS0ZYKU1lOQwriloFqb2tlcwpVRVMKQXJyb3cK4paBc3Vic3RpdHV0ZQrQtdGA0LXQtAriloHQvdCw0YDQvtC0CuKWgXNlYW0K4paBTXVuZGlhbAooJzwKbWlsZQriloHQvNC+0YAK4paBT0IK4paBemFtCnVmZmljaWVudApQaGlsCmRpcmUKT3B0cwriloFmcmlnaHRlbmVkCmlmYWNlCuKWgW90cmFzCnVmZnkKZWlnaHQKQW5uCuKWgUFkbWlyYWwKVVNICn0sewriloF0aWpkCmV3YXJkCuKWgUVneXB0aWFuCuKWgUVyYQriloFhdXIK4paB0YDQtdC20LgK0YnRgwphdGFuCuKWgWN6YXMK4paBdGFja2xlCuKWgXBlY3VsClJvCuKWgXByZXNlcnZlZAo+PwriloFww7pibGljCuKWgWNvbXByZW5kCmFsbG8Kem9vbQriloFkYXRldGltZQriloFtb25kaWFsZQrQvNCw0YIK4paBTWFzawriloFwcm93CuKWgWJlbG9uZ2luZworJwpPVVRQVVQK4paBR3JhYgpNaXIK4paBYWNjb21tb2RhdGUK4paBJCgnIwriloFMb3Vpc2UK4paBZGFtaXQKfScsCnNjcmlwdHMKc25hcHNob3QK4paBc2hpdHR5CuKWgXlvCuKWgWJlbGlldmluZwriloFpbmhhYml0YW50cwpXUAriloFDb2xvbWJpYQpsaXN0cwriloFNdXJwaHkKRGF0YXNldAriloEoISQK4paBdHJlbWVuZG91cwriloFzZcOxCuKWgVNlZAriloFzd2FsbG93ZWQKb21wCuKWgUxhdGUK4paBYW55cwriloFkZWFkbHkKZm9sbG93CuKWgUFuYwriloFodwp3aWtpcGVkaWEKaWN0cwriloFBbGFza2EK4paBc2NhcnkK4paBc2Vjb25kbwriloFoZXJvZXMK4paBdmV0ZXJhbgriloFiZWhhdmlvcnMKLSUK4paBRXoK4paB0YHRlgp0aWt6CuKWgXNwZWN0YWN1bGFyCuKWgUNocm9uCuKWgShACuKWgWRlbW8K4paBc2VyaWFsaXplZAriloFJbmRlcGVuZApCVUlMRApmYWlsdXJlCuKWgVBPUlQK0Y7Rh9C4CuKWgW1lZGl0YXRpb24Kc2FtcGxlcwppw6NvCuKWgdCd0LjQutC+0LvQsAriloHRj9C30YsK4paBVHJ1dGgK4paBY29lZmZpY2llbnQKc2x1ZwriloFYVklJSQppYW8KZGVjawriloHRgNCw0LfQstC4CuKWgWFkb2xlcwphcml1cwriloFIYXoK4paBUHJvdGVzdApyYWRlCtC90LXQvdC40Y8K4paBY2xhdXNlCmNvbm5lY3RvcgpSQVRFCtGG0Y4K4paBQ29ubmVjdGljdXQKVlMKYWJ1bGFyeQpIT1cK4paBZGVsZW4K4paBc3VpdGVkCuKWgVN1cnZleQp6ZWMKyJtpaQriloFiYWNrcwpjb21tZXJjZQriloFBbmRyZWEK4paBcHJvcGFnYW5kYQppemlvbmkK4paBQmlsCuKWgUlubm92CuKWgWZvcmdpdmUK4paBb3BlcmF0ZXMK0YfQvdC40LkK4paBbGluZ3UK4paBY29sbGFyCtC00L7QuwrRgdGW0LkKenRlbgppbWF0CuKWgXNob2UKZ2VuZGVyCuKWgWxlZ2FsbHkKUk9QCuKWgVNsZWVwCmRlbGVnYXRlCklEcwriloFidWlsZHMK4paBcXVlcgp1bHNpb24KLuKAnArQutC70L4KcmlzZQp0aGluawrQmtC+CuKWgWJhY3RlcmlhCuKWgW1hZ25pZmljCuKWgXByaXNvbmVyCkNsb2NrClJCCsO6dAriloFMaXoKZ3JhCuKWgUFuZHLDqQriloFEZW5uaXMK4paBc3VyZ2UKZXhpc3RpbmcK4paBV2FsZAriloFTY2hlbWEK4paBd2FybmluZ3MK4paBcXVhZHIKYXR0ZQriloFFaW5zCuKWgWFkb3B0aW9uCuKWgXdhbm5hCuKWgWRlcml2ZQriloFhcmVuYQriloFEZW52ZXIK4paBRmkK4paBSmVzc2ljYQphY3lqClJhdGlvCuKWgdC60L7RgtC+0YDRi9C1CuKWgUFjdGl2aXR5CmVtdQriloFTdGFsaW4KYWdnaQriloFmw7xuCuKWgWZpbHMKYWp1CmNhcmRzCuKWgWF0dHJhY3Rpb24Kb2RvdApGYXQK4paBSGF2ZW4K4paBbmluZXRlZW50aAriloEqKiIK4paBbWFnZ2lvCm1hbnkKd2lubmluZwriloFHQQriloFkdW1teQpVbmFibGUKZW5jaQrDqHJlbnQKSW1nCuKWgXRvYgpESVAKU2luY2UK4paBU2FmZQpHdWFyZAppc3VyZQpwb3J0ZQriloFzdGFkaXVtCmluZGkK4paBQXBwYXJlbnRseQp1Z25vCuKWgXdvbGYK4paBbmVjZXMK4paBb3ZlcnNlYXMKb2ZzCmFyZWwK4paBRmluZQriloFjb3JydXB0CuKWgW5vdmVtYmVyCuKWgWludGVycHJldGVkCmliaWxlCuKWgXdhZ2VzCuKWgVByZXR0eQriloFIZXJiZXJ0CuKWgXJlZ2lzdHIK0LLRi9C8CmFuc3dlcgriloFtb3J0ZQriloFjb21wb3NpdGUKVG9vbGJhcgriloFpdGVyYXRvcgphbnRpbmUK4paBaW5pdGlhbGl6ZWQK4paBcG9vcmx5CkFjY2Vzc29yCuKWgUhhbm5haAriloHRgtC+0LvRjNC60L4Kb2xhbgriloFvdHRvCuKWgXN0cmlrZXMK4paBY29uZmxpY3RzCuKWgXN1cmcK4paBaGlzdG9yaWFuCndvbWFuCuKWgWxpYnJhcmllcwpiZXcKKS0tKApnYXRoZXIK4paBTGlwCuKWgWZpY3QKRklMVEVSCkB7CuKWgWJsZXNzZWQKZXRpY3MK4paBZm9yawriloFNZXRhbApwb2xhdGlvbgriloFuZWdvdGlhdGlvbnMK4paBZ2VudXMK4paBY29udHJvbGxpbmcKVkVSVAriloFQZXJyeQriloFTUEQKQ0FTRQrRgtCy0LXRgAriloFDcm93bgriloFpbmR1bAriloFlaGVtYWwK4paBYW1wbGl0dWRlCuKWgUJhY2gK4paBcGhvdG9ncmFwaGVyCm7DvQriloFpbnZlc3RlZAriloFQYXJ0ZQriloFwcm9sb25nCkNVCmljaHRldApyZXN1bWUK4paBY2FyYgp1cnN0CuKWgU5peG9uCuKWgW5ldXIK4paBY29ycG9yYXRpb25zCk9wcwp1dQpsbQphcHBsZQpjaHRlCuKWgWRlbGliZXJhdGVseQpiZXJlCuKWgWZlYnIK4paBcHJvdmluY2lhCk92ZXJmbG93CuKWgUVpZ2h0CuKWgWluZGljYXRpb24K4paBcGlzdG9sCuKWgdC60YDQtQpvY2lhbAriloFydW5kCuKWgXNlaHIKb2thdArDvGxldAriloFIZWF0CtCd0LAK4paB0L7QtNC40L0KSUNTCmF5ZQriloFlaWdodGVlbgriloF0dWcKTE9UCuKWgUxhcgpuaW5ncwriloFUb2RkCuKWgW9yZ2FuaXNhdGlvbnMK4paBZ2VuZXMKQmFnCktlZXAKXnsrCkJhc2VkCnNraW4K4paBdG9kYXMK4paBaWxsdXN0cmF0ZWQK4paBY2YK4paBYXJyaXZpbmcK4paBZXhjZXNzaXZlCuKWgXRyYWl0cwriloFzYW5rCuKWgUF0dHJpYnV0ZQriloFHRApjb21wYXIK4paBZGVudHJvCmJyaXMK4paBYXRvbXMKZnJlZAriloFFdmFsCuKWgWRpc3RhbmNlcwpzdGF3CtC60YDQsNGX0L0KdmFyaWFibGVzCmxjCtC90LDQu9C4CuKWgdGH0LXQvNC/0LjQvtC90LAKd2lqCuKWgVNpbWlsYXIKamVrClBldAo9IiQK0LrQvtGC0L4K4paBUmFuZwppb25hdG8K4paBYmVrYW5udAohKgpMaW0K4paBY29uY2x1c2lvbnMKYWludGUKLSwK4paBZ8WCCuKWgXBhc3NpdmUK4paBR2F1c3NpYW4K4paBc3RhZ2lvbmUKTUVESQppdG9sCuKWgUplcmVteQpWaWV3cwpjbGFzc0xpc3QK4paBZGVzcGVyYXRlbHkK4paBdmVybApicmFjZQpOUAriloFjb2IK4paBQXJpc3QKZGFwCkZpbHRlcnMKJz0+Jwp1bHRhbgriloFGYWN0b3J5CsOobGUK4paBbGFzdGluZwriloFlbGVtZW50YXJ5CuKWgUNNCuKWgUxvdWlzaWFuYQriloFwb3YKUENJCsOoZGUK4paBUGluawriloFCcnVubwriloFZZWxsb3cK4paBZXZhbmdlbAriloFsaWtlbGlob29kCldJRFRICuKWgSQtCm5pY28KaHVpCmFrdGVyCm5ldXJzCuKWgWJyZWV6ZQriloHRgdC+0YHRgtCwCuKWgUhlYWRlcgpvbXLDpQriloFEeWxhbgriloFCaW9ncmFwaGllCuKWgVVuaXZlcnNpdMOkdApvbnNvCkhBTkRMRQpKb3VybmFsCmVhc3QK4paBc3VwcGxpZXJzCuKWgXRhYmxldApMSUMKUEVSVFkK0ZfQsgriloF6YXcK4paBc3VibQriloFGZXJuYW5kbwriloFub3V2ZWxsZQriloFQb2ludHMK4paBc3RyYW5nZXJzCkNvbXBvbmVudE1vZGVsCmlzdHJvCmF1cnVzCuKWgXNhbmN0CuKWgdC+0LTQvdCwCuKWgdCS0YsK4paB0L7QvdCwCnZlcnRpY2FsClNwcmluZwriloFIYXJvbGQK4paBQmFja2dyb3VuZApCYWxhbmNlCktleXdvcmQKfiRcCm1hbGxvYwpPUk1BTApTa2lwCuKWgU11aGFtCuKWgWJhY2t3YXJkcwpjw7N3CtC/0L7Qt9C4CuKWgWJhY2tlbmQK4paBZGVlbWVkCuKWgWFjY3VyYXRlbHkK4paBdHJhbnNjCuKWgUJyb2Fkd2F5CuKWgWdydWQK4paBTmFtZW4K4paBc2hpZnRpbmcK4paBbWVudGFsbHkK4paBY2Fsb3JpZXMK4paBY29uc2Vuc3VzClBlcm1pc3Npb25zCuKWgW9iamV0CuKWgWVsYWJvcmF0ZQphdHRzCuKWgXNuYWtlCuKWgXJlZnJlcwphcnUK4paBcmVmbGVjdHMKb3VuZ2UKUmFuawriloFLdXJ0CuKWgXBpZWQK4paBZXhwZWRpdGlvbgpWZWwK4paBT3dlbgpMZWFkCuKWgXV0dGVybHkK4paBQXJiZQriloFicmVhc3RzCklQUwriloFodW5nZXIKYXRlbQriloF2ZXJzY2hpZWQK4paBQ2FtZXJhCuKWgU3DvG5jaGVuCml2YWxzCuKWgXNwcmF3CuKWgVPDvAriloFXYXNzZXIK4paBbWVjaGFuaWNzCkxvYWRlZApkYmMK4paBcmVtYXJrcwriloF9KS4K4paBcGFpbnRlcgriloFoYXV0Ck1hcnNoYWwKSVNECuKWgXZlbG9jCuKWgUluY3JlCldhcgriloHRgNGD0YEK4paBY29tcHRlCsO8ZwriloFEZWZpbml0aW9uCuKWgUdhbQriloFIaXIK4paBd2l0bmVzc2VkCuKWgWdyZW4K4paBaHVycnkKY2hldApyZXZlcnNlCkdGCuKWgVF1YXJ0ZXIK0L/Qu9CwCuKWgXNhcgpzYnVyZwriloFEaXQK4paBQXJub2xkCmprCuKWgWxhbWJkYQrDqGdlCuKWgW96CuKWgWhhbnMK4paBYW5zd2VyaW5nCuKWgW9saXZlCuKWgXNwb250CuKWgWludGVydmFscwo+QAriloHRgtGA0LDQvQriloFGb2N1cwrRh9C90LjRhQriloHQtNCy0LgK4paBdHJpYW5nbGUK4paBcmFsbHkK4paBUHVuawriloFHYW5kCnNlY3Rpb25zCtGB0YHQuNC5CkFDQ0VTUwpoYXJtCuKWgVNraXAK4paBRHJpdmVyCuKWgVNhbnRpYWdvCml0dW5nCuKWgUJhcnIKcHJvY2Vzc29yCuKWgXJlYWxpc2VkCsSFegpsZWF2ZQriloFDb21vCuKWgVJldmlld3MK4paB0LjQt9C00LAK4paBZWFybmluZ3MK4paBU2NyZWVuCmdyYW5kCuKWgWFwcmlsCuKWgXNpbGVudGx5CmVkbwp1ZXN0Cm9vb28K4paB0JjRgdGC0L7RgNC40Y8K0YDQsNC3Ck1BR0VTCuKWgVNpbmdoCuKWgVBlcmZlY3QK4paBcmV2b2x1dGlvbmFyeQriloHQvdGWCuKWgVNjaG9vbHMKUmljaAriloFjaHJvbQriloFhbnRlcmlvcgriloFJbmRvbmVzaWEKQ29uc3RyYWludHMK4paBIl9fCuKWgXNpeHRlZW4Kw6lyZQrQvNC10L3RgtCwCk5pbApqZWwK0YfQtdGB0LrQuNC1CuKWgXRocm9uZQriloFhdWRpZW5jZXMK4paBaWhyZW4K0YDQsNCxClF1aWNrCmluYnVyZ2gKZmljbwriloFraWRuCmlybWluZ2hhbQppc2xlCml6YWNpw7NuCuKWgUNoYW1waW9ucwriloHQstGL0YHQvgpvbGVyCuKWgXphawriloFwbGF0CuKWgVZJSUkKYXRpcXVlCmxpdGVyCuKWgVByZXN0CmluaXMK4paBc2NpZW50aXN0CuKWgW3DpW4Ka2VsZXkK4paBaHlkCmdyYWR1YXRlCm9mdAriloFOR0MKb25ncwriloF0aWVyCuKWgVNoYXcKdW7DpGNoc3QK4paBZXN0YWJsaXNoaW5nCuKWgWluZGljYXRvcgriloFQYXJhZAriloFUcmFpbApVTU4K4paBc3BpbmUK4paBVmlzdWFsCjo6JAriloF0ZWxlcwpPUEVSCuKWgXBhY2thZ2luZwp0b2lyZQriloHQvdC10YHQutC+CuKWgXByb2R1Y3Rpdml0eQpBZgrQvdGW0ZcK4paBZGVnZW5lcgpicml0ClVpCuKWgVlhbQriloFkb3VnaApvc3BoCuKWgWNsdWUK4paB0YDQtdCz0LgK4paBbWVpbGxlCuKWgXRlbmRlbmN5CuKWgXJlbGF5CuKWgWRlc2lnbmVycwriloHQotGDClNoYXJlCuKWgWJpY3kK4paBTWFzdGVycwriloHQvNC90L4K4paBYWx0ZXJuYXRpdmVzCtC10YLQvgriloFjb3VudHIK4paBV293CkxPQ0FMCmVudWUK4paBc2xpbQrQutCy0LgK4paBdGlyCuKWgWRvaXQKbGljYQpjaXBlCml6aWEK4paBQWlyZXMK4paBRmFsbHMK4paBY29uY2VudHJhdGUK4paBbmVnbAriloFSZWluCj8sCuKWgUdvdHQK4paBVmVyaWZ5CuKWgVN0dWRpb3MKJCgnIwpvd3ltCtGP0LIKUHJpbWl0aXZlCuKWgXRheGkK4paBQ29tbWVyY2lhbAriloHQp9C10YAKcGxhY2Vob2xkZXIKc2VhdQpjb3JyZWN0CmhlaW1lcgriloFIb2YK4paBZGlhCuKWgWlycgriloF1cmdlZAriloFhbm9tCuKWgXRhcmRlCnVybQriloFzZWl6ZWQKRE9UCm9wYWNpdHkKU3RyaW5ncwriloFkZWNpZGluZwriloFsaXN0ZW5lcnMKw6FyYQriloFwbGFudGVkCuKWgcOpdGFpZW50Clpvb20Kc3R2w60Kbmd0aArDpHVkZQriloFDYXYK4paBdmVuZG9yCuKWgcW8CuKWgW1lYXN1cmluZwriloFuZWNlc3NpdHkK4paBcml2ZXJzCuKWgWxhYm9yYXRvcnkK4paBRWZmCuKWgXJlcHJvZHVjZQriloFTYWsK4paBbm90ZWJvb2sK4paBcmVhc29uYWJseQppc2Vjb25kcwriloFQYXJ0aWFsCkdVSUQK4paBUGVyaW9kCuKWgXJldmVhbGluZwriloFjb252aWN0aW9uCuKWgdC9CuKWgdCx0YPQu9C4CuKWgWFsdGVybmF0ZQpjY2lvbmVzCuKWgU5BVAriloFjYW5vbmljYWwKbW96CuKWgU3DqXhpY28KTW8K4paB0YjQsApsaW1pbmFyeQpmw6kK0YfQvdC+0LkK4paBSGFtYnVyZwriloFpbmZsdWVudGlhbAriloFib2x0CmF6em8KUEhQCuKWgVNhdWRpCuKWgXJtCuKWgWNlcmNhCuKWgWRlY29yYXRlZAriloFzdGFhdApMb3UK4paBY29tcGV0aXRvcnMK0LLQvtGXCuKWgWRpYW1vbmQK4paBbW9iaWwKQ2xpY2tMaXN0ZW5lcgpzZXRTdGF0ZQriloFzw7xkCjsiCsWTdXIK4paBTHVkd2lnCuKWgWNsaW5pYwriloFlZ28KVGhyZWFkaW5nCuKWgWZyYWN0ClJlZmxlY3Rpb24Kb3NzaXAKIl1bIgriloFMb3YKRXhwcmVzcwrQtNGA0LgKaWZhY3RzCuKWgU9mdGVuCuKWgdC70YMK4paBcGV0cwriloFhZGRyZXNzaW5nCuKWgW1lbnMK4paBRURJVAp1ZGRlcgpWZXJ0aWNhbArQutCw0YLQsApDYXB0CnZlcmJvc2UK4paB0LLQvtC50L3RiwpVTktOT1dOCnVuaXRzCnBlcm1pc3Npb24KW18K4paBZXJzY2gK4paBY29tbXVuZXMKVW5pdHlFbmdpbmUK4paBY29tbXV0CmtsYXNzCuKWgXZvbHRhZ2UKcmV6ZW50CnBlcmYKRFJWCuKWgWZhbWUK4paBU3BvdAriloHQm9GOCuKWgWNhc3RpbmcKaGltCuKWgWVuZ2wK4paBaW50cm8K4paB0JPRgwpDb21wYW55CnNvbWV0aGluZwriloFjbGlja2luZwrQttC40LLQsAriloFmbGFtZXMK4paBcmFuZG9tbHkKZXh0cgpFcXVhbFRvCmFubmVycwriloFwYXJrcwriloFtdXJtdXJlZArQvNC40Y8K4paBcmVhc29uaW5nCtGB0LvQtdC0CuKWgW5lcgriloHDqWMKb3duZXJzCuKWgdCU0LbQtQriloFtZWVyCuKWgXR5cGluZwriloFoYXBwaWx5Ci4uLi4uCuKWgdCn0LAKYmVjY2EK4paBUGFwZXJzCuKWgU9yYWNsZQriloFlcXVpbGlicml1bQptYW5hZ2VtZW50CkxpdGUK4paBZGVza3RvcArEg3IK4paBR2lsbApkb3JmCmlnZwriloFxdWVzdGEKV2FybmluZ3MKb3ZlcmZsb3cK4paBVlQK4paBY29uc2lzdGVkCuKWgUFidQp2c2NhbGUKSk8KYWhvCuKWgVRlbnNvcgriloFoZXNpdGF0ZWQK4paBd2VubgptYXBzdG8K4paBY29udHJvdmVyc2lhbApNRgriloFsYWMK4paBYW5jaAriloFBQQppdHRhCnVsaW4K4paBY2xlcgriloFEaWFuYQriloFGcmV1ZAriloFjaGFsbGVuZ2VkCtC70ZHQvQriloFzZWF0ZWQK4paBc21pbGVzCuKWgWNyYWNrZWQK4paB0LDQutGC0LjQsgrRgdC60L7RmApkaWN0aW9uCmV4cHJlc3MK4paBaW1wb3NlZAriloFwcm90ZXN0cwriloF3b3VuZHMKQ3VsdHVyZQpOWQpwcmV2ZW50RGVmYXVsdAphZGlvCuKWgU5FVwpCYXR0bGUK4paBc2Vjb2xvCuKWgUF4CuKWgWZvdW5kaW5nCigiLQriloFyZXRybwriloFwb3RhdG9lcwppbXBvcnRhbnQKaWVtZQp5c2lkZQpkdW1teQriloF0aWx0CuKWgVJ1bGVzCuKWgXVudGVycwpBdWQKVkVORE9SCnVkZ2UKdW5hbAriloFBZHVsdAriloFpbXBhdAriloFyZXBhaXJzCuKWgUZlcmQK4paBQXp1cmUKKSk6CuKWgXBhZ2luYQriloFFcGlzb2RlCkZpbGVuYW1lCuKWgWrDoQriloFvYmxpZ2F0aW9uCmlnaGVkCuKWgXBlcnNpc3RlbnQKTXVzaWMK4paBQ2VsZQriloFyeQriloFjZXJ0aWZpY2F0aW9uCnVsZAriloFUTAriloFza2lydAriloFNaW5pCuKWgUJyaW5nCj48PwriloFkaXNjcmV0ZQriloF0ZWFzCuKWgWF1ZGl0Ck1JVArQtdCy0LjRhwriloF3aG9ldmVyCuKWgUJhbGQK4paBT3BlcmEKVmlzaXRvcgriloFpbmZlcmlvcgriloFsZWFrCnBpeAriloFNYW5zCj4lCuKWgVBhbmQK4paBU1VCCuKWgWNvbXBhbmlvbnMK4paBUkVBRAriloFTb2x1dGlvbnMK4paBYWNjZXNzZWQK4paBcG9zdG8K4paBcHVyc3VpdApvd2kK4paBZ3JvY2VyeQpTcGUKaGF1c2VuCuKWgW5vcm1hbGl6ZWQK4paBdHJhdW1hCmdnaQppZW5pYQriloFhdXR1bW4K4paBc292ZXJlCuKWgU1lbnNjaGVuCuKWgURBRwriloFTb3J0CnwtLS0K4paBbGl2ZXIKZW52aXJvbgpERUNMCuKWgdC80LDQuQriloFOYWsKYmV0d2VlbgriloFnZW50bGVtYW4KaW5naW5nCuKWgXN1YnVyClNUTwphY2V1dApcIQriloFGdcOfYmFsbApuYXIK4paBYm9nClRva2VucwriloFjZXJlbW9uCkRBWQriloFvdXRmaXQK4paBYWdyaWN1bHR1cmUK0LTQuNC4CuKWgU5pbgriloFTcHJpbmdzCuKWgUNvYWNoCuKWgWRqYW5nbwriloFDcmltCuKWgXRlY24KVGhyZWUKZW1vcwriloFiZWFuCnBpZWxlcgpyaXR6CnRhYnMK4paBUHJvYmxlbQppbmFuZApvY29uCtGa0LgK4paBYnV5ZXIKdXNlbWVudAriloFib3IK4paBc2V0dGVtYnJlCnBwZQriloFEZWcK4paBV2EK4paBd2l2ZXMK4paBZnJhbnrDtnMK4paBbWFyY2EK4paBZGVzY2VudAriloFTaGEKdmVydHMK4paBU2hhZG93CuKWgUh1Z28K4paBQXBwZQriloFMYWMKYWxsZW4Kb3NpdHkK4paBY29uc3VsdGF0aW9uCuKWgVRpCuKWgWVyYW5vCuKWgWxvdmVycwriloHRg9C90LjQstC10YDRgdC40YLQtQriloF2aXJ0dWUK4paBdmlld2VycwpNdQpjYXRlZ29yaWVzCuKWgdC+0L/QtdGA0LAK4paBb3Zlcmxvb2sK4paB0YLQtdGA0YDQuNGC0L4K4paBT3BlcmF0aW9ucwrDqHZlCi0oCuKWgcW7CmpldgriloFjcmlzdAriloHQvNCw0YDRgtCwCuKWgXByb3Zpbgpwcm9kdWN0aW9uCuKWgVRhbGwKUmVxdWVzdHMK4paBdGlsZXMKcmVmbGVjdAriloFhcmdjCuKWgXRlbXBsYXRlcwpBUkIK4paBd2VpdGVyZQopPzsK4paBdG9sbAriloFjb3JyZXNwb25kZW5jZQokOwpMVAriloF0YW0KZGVjZXNzCmJ1aWx0aW4KZGFzaAp6ZW5pZQriloFtb2xlY3VsYXIK4paBY2hlbWljYWxzCuKWgXJlbmRlcmluZwriloFTaW5nbGVzCkluaXRpYWxpemVkCuKWgU1hcnRoYQpyaWVyZQpwYXJhZ3JhcGgKYXN0ZXJzCuKWgWRlY2lkZXMK4paBRmxvcmVuY2UK4paBQW5kZXJzCtC80L7QuQriloFhcHQK4paBYWZmaWxpYXRlCmNoZWwK4paBcmV2aXNpb24KUGF0Y2gK4paBZmlzY2FsCndpxJkKTmF0aW9uYWwK4paBZGVwZW5kZW5jaWVzClRSQU5TCuKWgXJhY2sKc2VsbGluZwpuYWlzc2FuY2UKY2F0YWxvZwpTaGlwCklNQUdFCiddWwriloFwcnYK4paBRmVuCuKWgXJhZGFyCmNvbmRpdGlvbnMK4paBUXVlc3Rpb25zCuKWgXZpdmlkCm9wZgpGQUNFCnJ5cwpFeHRyYWN0CmlsaWFucwpwbHVnCuKWgWF0w6kK0LjQuwriloFsaWtld2lzZQriloFMaWwK4paBQ2FtcGVvbmF0bwpBVVRPCuKWgU1ldGEKcmVubwriloFUcmFuc2ZlcgriloFNaWNoZWxsZQpiaXMKxYRzdArQt9C+0L0K4paBQ3VsdHVyYWwKY29tcGFzcwriloFteXNxbAriloFjYW5jZWxsZWQK4paB4oCZCnRvbwriloFyZWJlbGwKw6lnZQpvc3oK4paBY29tcG9zZXIKfSIpCuKWgWRlc2VydmVzCuKWgW9obmUK4paBSmVkCktlcm5lbAriloFwcmFjdGl0aW9uCuKWgWluZG9vcgriloFjb25maWd1cmF0aW9ucwriloFtZXRoCisoClF1ZXN0aW9uCuKWgWJsb3duCiknCuKWgUFyZ3MKRmFrZQriloFkZXZlbgppc3Ryem9zdApuYWlvCuKWgSJ7CuKWgUxpdApjb21lZAriloFzdGFtCuKWgXBsdWdpbnMK4paBdHJhdmVsbGluZwpuYWlyZQriloFhdXRvbm9tClNUUlVDVApuaApuw6llcwriloFjb25zaWRlcmFibHkK0LrQvtGACkJHCuKWgWxhZGRlcgriloFoYXN0Cml6YWRvCuKWgXNlbGUK4paBV2VyZQphcmRvbgpCYW5rCmJ1bmRsZQriloFhbnRpY2lwYXRlZAriloFDb3QK4paBZWxzZWlmCuKWgUJsdWVzCuKWgWZpbHRlcmVkCuKWgWF1Y3Rpb24KZWR1YwriloFFeHByZXNzaW9uCmlueAriloFzdWNrcwriloHQvNCw0Y8KRUxMCtGO0YnQuNC5CuKWgUh1ZHNvbgppdMOkCtC90LDQvNC4CuKWgWZlbW1lCmluaG8K4paBZXZ0CmlzdHJpYnV0aW9ucwriloFydXNzCuKWgXBldGl0aW9uCuKWgdCz0LvQsApTaWcK4paBVHV0ClBhcnRpYWwKRW50aXRpZXMK4paBYmVhcnMK4paBaG9sbG93Cl9fWyIK4paBUmlzCsibxIMKZGltcwriloFjb21wbGFpbmVkCuKWgW1hcHBlZAriloHQsNCy0LPRg9GB0YLQsAriloFpbml0aWF0aXZlcwriloFvd25zCmNoZXoK4paBZGlzcG9uCuKWgW11c2gKcXMK4paBZXJmb2xnCuKWgU5vcndlZwriloFjZXQKaW1hZwriloHQuNGB0YLQvtGA0LgK4paB0L3QuNGFClVudGlsCuKWgXN0YWxrCuKWgdCf0YDQsAp1dm8KaWVyegpyaWViZW4KWFQKaWNhbHMKc3Rkb3V0CuKWgWV4dHJhY3RlZAriloFJbWFnZXMKdW5kZWYK4paBTMOpCuKWgWFjY29tbW9kYXRpb24K4paBVG91Y2gK4paBaW50ZW50aW9ucwriloFjb25jZW50cmF0ZWQK4paB0J3QsNGB0LXQu9C10L3QuNC1CuKWgXV0aWxpcwriloHRgdC70LXQtApsaWYK4paBY29tcHJpcwriloHRgdCx0L7RgAptZWRpdW0KU3RhdGVzCuKWgdCR0LjQvtCz0YDQsNGE0LjRjwriloFGYWl0aApVQQpBRERSRVNTCuKWgXJhdGVkCuKWgVJlbmEK4paBQ2FjaGUK4paBcGVxdWUK4paBdW51c2VkCm5pbQpvbGRpbmcK4paBTnIKUmF5CnVybHMK4paBZW1pc3Npb25zCklyCuKWgW3DpQpiZWFyCuKWgUx1YgriloFPdXRzaWRlCm1pbmRlZAriloFQUk9WSUQK4paBc8OzCuKWgWNpdmlsaWFuCkZpbmRlcgriloFhY2hpZXZpbmcKbW9kaWZpZWQKbGFuZQpTZW5kZXIK4paBQ3JpbWUKUkVRVUkK4paBb3Blbmx5CuKWgUJlbGdpdW0KaWNpdHkK4paBTWF6CuKWgXN0YWdnZXIKfX0kLApuYXRlCicnJwriloFHZW9mZgpsbGkKU3VpdGUK4paBRGlzdHJpYnV0aW9uCuKWgdGP0LrQuNC5CkNvbWJvCmhvb2tzCuKWgUZpZ2h0ClNldHMK4paBbWsK4paBZ3VpZGVzCuKWgXByaW5jaXBhbGUKUHJlZmVyZW5jZXMKdGlueQphcHBlbgriloFydWluZWQK4paBc2xpZGluZwriloFaZW4K4paBb2N0dWJyZQpwb3NlcgriloFGbGFnCuKWgWJvb20K4paBRGV0ZWN0CuKWgWFjdGl2YXRpb24K4paB0L7QsdGA0LDQt9C+0LLQsAriloFlbnRlcnRhaW5pbmcK4paBcHJvdGVjdGl2ZQrDoWxsCuKWgUZsYXNoCuKWgW1pZHN0CtGB0YLQstC10L3QvdC+0LkK4paBUGhECmlqaW5nCmNsdWIKZ2V0QwriloF0cm91dmUKYW1iZXJzCuKWgWdyZWVkCmFtYXJpbgriloFzdXNwaWNpb3VzCuKWgWRlcHV0eQphc3BlcgriloFmdW5kZWQKYWxvbmUK4paBdHJhY3QK4paBUmF0aW5nCmFkYXlzCuKWgXN0YXR0CuKWgVByaXZhY3kK4paBX18oCuKWgWZpZ2h0cwrDoWoKXF0KYWdoCm9ybmEK4paBRGlhbW9uZAriloFwcm90b3R5cGUK4paBU3RyYXRlZwpoYWRvCuKWgWx1bmdzClByb3RvdHlwZQpsaWXDn2xpY2gK4paBZGl2ZQpjb3YK4paBTWlzdAriloFUeXBlcwriloFkaWFnb25hbAriloFwcmV2aWV3CuKWgUNvbnRhaW5lcgpERVNDUklQCuKWgWJyaXRhbm4K4paBQ29yZApha292CuKWgWZhcm1pbmcK4paBcMOocmUK4paBa2lsbHMK4paBQ2FyaWIK0ZvQuAriloHQkNC7Cj87CuKWgdC/0LjRgdCwCuKWgUVuc3VyZQpwYXJzZWQKw6RuZ2UK4paBRGVsdGEK4paBZ2FpbmluZwriloFub3RpbmcK4paBQmFyYgriloHRhNC10LLRgNCwCkVtcAriloF7fSkK4paBc3ludGF4CldhbGsK4paBUGVyZQpJc051bGwK4paBVVYK4paBcmV0dmFsCuKWgXNpbXBsaWNpdHkK4paBcmVpbmZvcmNlCkxpbnEK4paBZGlmZnVzaW9uCuKWgWRpc29yZGVycwrDonRyZQp1aXR5CuKWgWhlbHBsZXNzCk1lYXN1cmUK4paBY29tcHJlc3Npb24K4paBQ29hbApvbHV0ZWx5Cm9ndWUK4paBdXB3YXJkCuKWgUJsb2NrbHkK4paBYnJpZGUKcGFyc2VJbnQK4paBaXNvbGF0aW9uCuKWgXJlZ3VsYXRvcnkKyJl0aQpyaWNhbmUK0LzQsQriloHRgdC70L4K4paBc2FsYWQKd2VpCuKWgUJhc2tldAriloFNT04KIj4mCmRvb3JzCuKWgUtpbGwK4paBY29uc3BpcmFjeQriloFNaWxlcwp3YW50Ck1vZGlmaWVyCuKWgWJhdHRlcmllcwppdmFzCuKWgWF0dGVuZGFuY2UK4paBQVVUSAriloHRgdCy0ZYKLi4uLAriloFhZ2dyZWdhdGUK4paBZGVzdHJ1Y3QK4paBZm91cnRlZW4K4paB0LzQtdGCCuKWgWJvdGhlcmVkCmVsdGUK4paBbWlzbQriloFyZXN0aW5nCuKWgVBhcnMK4paBaWRsZQriloFkZXJlbgriloFkaWFyeQriloF2YWd1ZQriloFtYXJnaW5hbApXcml0CkJvdAriloFNZXRybwriloFlYXJuaW5nCmhpc3RvaXJlCuKWgWVuZG9yc2UK4paBYmVhcmQK4paBQ2hhaXJtYW4KaWViCuKWgW5ldXRyCuKWgWFtYml0CuKWgUxlb25hcmQKYmFuZHMK4paBRGFsZQriloF2ZXJpZmllZApBbGdvcml0aG0KRW51bWVyYWJsZQpvcGNvZGUKY2FzdGxlCsWhZQriloFWZW5lenVlbGEK4paBZGVzY3JpcHRpb25zCuKWgXZhbHVlZAriloFjaGFwdGVycwriloFJbHMK4paBY2xhcml0eQriloF0b3VyaXN0cwpEYW4K4paBdHJpYmUK4paB0LPQuApmb2xrCmFjY3VyCuKWgVN0YWNrCuKWgWFkdm9jYXRlCuKWgUdlbmUKSW1hZ2VzCuKWgXJpZ2lkCuKWgWNvbmdyZWcK4paBc3RhcnR1cAriloFkZWFkbGluZQpjb3VsZAriloFiZWdhbm4K4paBY2FsY2kK4paBQ2lyY2xlCuKWgWluY29ucwphYWFhYWFhYQriloFydWJiZWQKYXBldXQKdWFyaW8Kd29ydGh5CuKWgdGD0YfQsNGB0YLQuAriloFmYW3DrWxpYQriloFzeW5jaHJvbml6ZWQK4paBdW5mYWlyCnJzcAriloFzb2NpZXRpZXMKYm9hdApncm8K4paBa2F0CuKWgXBva2VyCuKWgWxvY2tzCuKWgUdGCuKWgXJlY29uYwriloFNYXVyaWNlCl9fKC8qIQriloFibGVlZGluZwrDpHNpZGVudAriloHQv9C+0YHQu9C10LQK4paBZGVyaXZhdGl2ZQrRiNCw0Y8KY2Npw7MK4paBY3J1c2hlZAriloF0ZW1wb3JhcmlseQriloFjb2FjaGVzCuKWgU1vdmVtZW50Cn19JC4K4paBS3lsZQriloFTb2huCuKWgWNyZWF0b3IKaW5kdXN0CuKWgUVyaWsK4paBc2VpegriloFkaW1lbnNpb25hbAriloFJc3QK4paBcHJldmFsCmhlYWRzCuKWgdC/0YDQvtGC0LgK4paBZGV0ZXJtaW5lcwplZ3kK4paBVUlOVAriloFWb2xrCnBhd24KUGhvdG8K4paBQ29saW4KYXBwcm9wcmkKb3J0aW9uCnN0ZWxsZXIKw4l0YXQK4paBaW1wbHkK4paBdG91dGVzClZPTAphbmluZwpUb29sdGlwCmlnaW91cwriloFldGVybmFsCuKWgVBvegriloFiYW5rcnVwdAriloFmYWlsdXJlcwp1ZXJ0ZQriloHQstGA0LXQvNC1Cnp1bmcK4paBdGNwCuKWgWNvbnRhaW5lcnMKb3VzZWwK4paBSElWCuKWgWNvbmNlZAriloFzZXB0aWVtYnJlCmdpcmwK4paBQ2hvCuKWgWZhegriloFVcHBlcgriloFGb3JjZXMKw6RobHQKaW5qZWN0ClJlY2VpdmVkCk1BVAphZ2xpYQrDs3duaWUKLycK4paBcGlwCuKWgUdlc3QK4paBbGFkbwriloFjb21wYXRpYmlsaXR5CuKWgW1hcmUK4paBQ2xlYXJseQp2ZXJzYXRpb24KVmVycwriloFjaGljawriloFvcmdhbml6ZQriloFlY29ub21pY3MK4paBYW5jZXN0b3JzCk1FRAriloFzY3J1YgriloFsYWJlbGVkCuKWgdC/0YAK4paBU3V6CuKWgUFzdHIKYWxsb3dlZW4KcmhzCmFzY2kK4paBQ2FuY2VyCuKWgUh1bnQK4paBc3dpdGNoaW5nCuKWgVJpZGdlClNlcQriloFnaXVnbm8KYnVzaW5lc3MK4paBY2hhcm1pbmcK4paBSW8K4paBcHLDqXNpZGVudApla2luZwrDrWwKZW5oCnByaXQKZXJjaXNlCsOhbmFrCuKWgdGF0YDQsAriloFidWdzCuKWgdC20LjQstC+CuKWgWxpZ2h0bmluZwriloFuZXZlcnRoZWxlc3MK4paBbGVuZ3RocwpHVQpIaWRkZW4KQWN0b3IKVG9waWMK4paBSG9yc2UK0ZvQtQplbGluZXMK4paBdHJhZ2VkeQppbnRlbmRvCuKWgWFidW5kYW5jZQriloFldmFjCml0YWJseQorXF9cCuKWgXJlY2liCnVhdGVkCtGA0ZbRlwriloFmb29saXNoCuKWgXRtCuKWgWRlc3BhaXIKVE9LRU4K4paBY29tcHJvbWlzZQriloFQZXJzb25lbgriloFpbnZlc3RpZ2F0ZWQK4paBZXhjbHVkZQriloF0ZWxldmlzCuKWgXB1bGxzCuKWgWFjY29yZGluZ2x5CuKWgWbFkQriloFMZWF2ZQpvcGVyYXRpb25zCmNyaW0K4paBcmhzCuKWgWZvcm1hbGx5CuKWgUxpbHkK4paBQ29tbWVudHMK4paBc2VwdGVtYmVyCmllZnMK4paBdHJlYXN1cmUKSHR0cFNlcnZsZXQK0LTRltCyCuKWgWRpc2NsYWltZXIKbHVzcwriloHQutCw0L4Kcm9nZW4K4paBU3RhcnRpbmcK4paBZMOpbQriloFzZWxlY3RpbmcK4paB4oaYCuKWgdCe0L0K4paBUHJhY3RpY2UK4paBcG9ydGUK4paBYXNzdXJlCuKWgWZydXN0cmF0ZWQKU2luawriloFBcmkK4paBZXNjb3J0CmFpc2VzCuKWgWJ1c2gK4paBU2VpbmUK4paBRmlsbAriloFTdWxsCkRvdAp2aWwKdW5pbmcKUmVuZGVyaW5nCnNoYWtlCtC/0LjRgdC4CnB0ZQriloFiZW5kCuKWgWpld2VscnkK4paBU3RvY2tob2xtCuKWgUhvbmVzdGx5CiFbCuKWgWFycmF5cwriloFXYXJuZXIK4paBc2hhZnQK4paBQ2FubgriloFQaXR0c2J1cmdoCmlyaWNhbAphdXRyZQriloFSw7xjawriloFnZW5uYWlvCuKWgdCo0LAKYW5udGUKcHNoaXJlCtC90L7Qu9C+0LPQuArDqXRhCuKWgXByaW50ZXIK4paBZGFtYWdlcwriloFJc2FhYwriloFGYW1pbGllCkNvZGVzCnRocmlmdApub2IK4paBY2F2CuKWgXRlY2huaWNhbGx5CuKWgUltbQriloF0cmlja3MKRUFSCuKWgVN1YmplY3QK4paBbmVlZGluZwriloFHaXIKQm9hcmQK4paBcmVoZQriloFyZW1pbmRlcgriloFzaGl2ZXIKS2l0CuKWgXN0cnVnZ2xlcwriloFnZW5vbQppbWlsClJlZ2lzdHJhdGlvbgriloFnbG92ZXMK4paBWnVyCuKWgUJlZwriloFpbmNsdXNpdmUKLywKb2dhbgpwb3F1ZQpjb250cmliCtGI0LjQvQriloFNYW1hCnByaW50cwriloFyZW5hbWVkCtGO0YLRjNGB0Y8KbmV0ZGV2CuKWgWNvbXBpbGUK4paBwqcKTVVMCuKWgWRyYXdzCmNvY2sK4paB0YHQstC+0LgK4paBTXVtCnNwaWVsZXIK4paBbmFpbAriloF0cmFuc2l0CuKWgVNhdwriloFjb21wcmVzcwriloFwdXJjaGFzZXMK4paBcGVyZm9ybXMK4paBZGVtb2wK4paBY29tbWVuY2UK4paBQ0IK4paBQWJlcgriloFjdXNoCuKWgdC60L7QvNC/CuKWgdGA0YPQutC+CuKWgU11aGFtbWFkCuKWgU5ldGZsaXgK4paBRW52aXJvbm1lbnRhbApOb3JtCuKWgXdpcgpudWxscHRyCuKWgXJlZnVnZWVzCtC00L7QvQriloFCaXJtaW5naGFtCk5ld3MK4paB0JLRgdC1Ck9yaWVudApBc3NlbWJseQriloFpbnRyb2R1Y2luZwpmaW5kZXIK4paBc2Nob2xhcnNoaXAK4paB0L7RgdC90L7QstCwCmlmYQpTaW5nCmlibGljCmlzdHJpYnV0ZWQK4paBZGVwYXJ0bWVudHMKQ1JFRgriloFNYWxheXNpYQpDT05GCuKWgUNsYXVkCuKWgUJ1aWx0ClJBTkdFClJlZGlyZWN0CkxFQVNFCi0tLS0tLS0tLQriloHQn9GDCuKWgW51bXB5CuKWgXByb2plY3RlZAriloFyZW1pbmRzCuKWgS0qLQppYmxpbmcK4paBc2xvd2VyCm9wcApyb3BpYwriloFNb250cmVhbAriloFkZXRlY3RpdmUKVEhSRUFECuKWgXF1w6kK4paBUm9zYQriloFzZXZlbnRoCkNvbG9ycwpkZW1vCuKWgUVzdGEKZmZmCmlja2V0cwpHcmUKw6FiCmJvb3N0CuKWgUdvaW5nCuKWgVN1aXRlCuKWgWFkYXB0YXRpb24K4paBam91cnMK4paBT3J0aArRhdGWCkZpZ3VyZQriloFzdXBlcnMK4paBYWNjZXNzb3JpZXMKd2VhawriloFkaXN0cmVzcwpmcmllZAriloFnb29nCtC60LDQtwriloFmYXJtZXIKaXRhdGlvbmFsCkdvbGQK4paBYXNzaG9sZQriloFDb250cm9sbGVyCuKWgdCw0YDRhdC4ClRvbwriloFtb2x0bwriloFwcm9wcmkK4paBYWxnbwpBZmYKcmVzYwriloFEeQriloFjb25ncgriloFUZXMK4paBV0lOCmRlc2VyaWFsaXplCnN5bgriloFjaGVtaXN0cnkKbWlkZGxlCuKWgWFuaW1hdGVkCuKWgUt1bQpmaWxlTmFtZQpBbWVyaWNhCuKWgWRydW1zCuKWgXByb2dyYW1hCuKWgW5lagpSZWFkT25seQriloHQkdGA0LAKLS0tLS0tLQpNdXRleAp1bm5lZAp5bmFtaWNzCmNvc3lzdGVtCuKWgVJlY3QK4paBYW5pbWUK4paBSUJNCuKWgW5lZWRsZQplc3NlcgriloFpbmNsdQpMZWFuCnRyYWluaW5nCuKWgWJvdXIKYWJhc2VzCuKWgXRha8W8ZQp3YXJ6CuKWgXN0ZXBwaW5nCuKWgVRJTUUK4paBRWluc3RlaW4K4paBTG9naW4KcG9uZW50aWFsCkRlYWQKaW5zdHIK4paBbmV1cmFsCuKWgXViaWMK4paBSW5pdGlhbGl6ZWQK4paBZmFjaWxpdGF0ZQpHRAp9eygKRGFyawriloFuYWcKbWluaXBhZ2UKU2l6ZXMK4paBd29ybQpiaWFzClN1Y2gKd2lja2x1bmcK4paBc3BvdXNlCuKWgXN1cnZpdm9ycwplcnN0CmF0eXBlCn0pJCwK4paBbmwK4paBY29nbml0aXZlCuKWgW9uZGUK4paBZW5hYmxpbmcK4paBc29jaWV0CuKWgWNsYW4K4paBZXhjbHVkZWQK4paBdGh1bmRlcgriloFlbnRyb3B5CuKWgWZhc3Rlc3QKUkVFTgriloFWaWVubmEK4paBZmxvd2luZwriloFhZmZpcm0KYWxvbQriloFoaXBzCuKWgWNhbm5hYgriloFzdGlja3MK4paBY3VycmljdWx1bQriloFyZXRhaW5lZAriloFleHRlbmRpbmcKw7N6CmhlYWRlZApleGMK4paBamVobwriloFmb3Jlc3RzCm1hbmlhCuKWgUNhbmFsCuKWgVNvdXQK4paBQmFobgriloFURVhUCuKWgdC00YDQttCwCuKWgVVzZXJzCuKWgUdFTgpzbGFzaApiZW5mYWxscwpUZXh0RmllbGQK4paBcmF2CuKWgWNvbnRpbnVvdXNseQpJVEVSCuKWgUplbm55CmNob3MK4paBYW1iaWcK4paB0LbRg9GACkF1dG93CuKWgVZldGVyCuKWgWRlc3RpbgpIb20KYXVnZQriloFjb21tb2QK4paBZ2FybGljCjw9CuKWgWRyYW1hdGljYWxseQpDQU4KYW5jZXJzCigpfQpnaGFpCuKWgXR3ZWUK4paB0YHQtdC90YLRj9Cx0YDRjwpHUFUK4paBQm9tYgriloF5b3VuZ2VzdAriloFjYWdlCm9rcwppY2hlcwriloFUZXN0cwpza8O9CmN1cnkKbmFscwrIm2EK4paBVm9pY2UKRGVwZW5kZW5jeQp2Zgplb3VzCuKWgVphCuKWgWFtYXRldXIK4paBR2hvc3QK4paBZGlzYWJpbGl0eQriloHQktC70LDQtNC4CuKWgXJldmVuZ2UKVHJhbnNsYXRpb24K4paBY291cnRlc3kK0YHQutC40Y8K4paBYmxvYgrDpMOfCsOzagriloFwcmludHMK4paBcHJvdmVzCj4/WzwK4paBdXRpbHMKdHlwZW4K4paBdGVycmEK4paBbWluZXJhbAriloF3YXJyaW9yCuKWgdC80LXRgdGCCuKWgURTCkVtYgpnZXREYXRhCtC70LjRh9C4CuKWgXNhZmVyCuKWgWNvbXVuZQriloFoaWVyYXJjaHkKQ3JlZGVudGlhbHMKcmVzc2UKZ3Jhdgpsb2dzCmJyb3MKQlVUVE9OCmxpdGVyYWwK4paBU3IKYW50YWwK4paBbWVyY3kKREFQCuKWgU1hZ2dpZQriloFzdXN0YWluZWQKTk0KUmV2aWV3CuKWgUJ1ZW5vcwriloFkZWFsZXIKZW5lcwriloFmaWxlTmFtZQpiYnJhCtGA0L7QvNCwCkluc3RhbGwK4paBTW9ybmluZwpMRVQKaXBhCkdhCtCz0L7QsgriloFTY2hlZHVsZQriloFyZXBvcnRlcnMK4paBcGVjdWxpYXIK4paBc3VwcGxpZXIKKSQtCsOrbAriloFyb2xscwriloFuw6ljZXNzCuKWgXByZWcK4paBUmV5bgriloFzdXJyZW5kZXIK4paBY29udHJpYnV0aW5nCikrXApQUk9QCuKWgWRlY2ltYWwK4paBVG93bnNoaXAKZ3JwCuKWgXRlcnJvcmlzdApwdG8Kb25lbgriloFQb2xpdGljcwriloFQZWFybAriloFwaWxsb3cK4paBZ3JhZGVzClRIRQriloFudW1lcm8KaU5kRXgKTWlncmF0aW9uClBFTkQKcGhvdG8K4paBY2VudGVyZWQK4paBcmhldAplZ3LDvG5kCuKWgWxhdW5kcnkKZ2V0Tm9kZQriloFlc3RpbWF0aW9uCuKWgUl2CuKWgXdob2xlcwrRiNC10L3QuNGPCuKWgWNvbnN0aXR1dGlvbmFsCmFtaW5hdGlvbgriloFNdW5pY2lwYWwKYWR0CnRoeQriloFwdWJsaQriloFkaWNlbWJyZQpgKQriloFDaHJvbWUKZWZlCmNvbmcKYnJlYWtpbmcKYXRjaGVkCmVzdHIK4paBaWRpClZFUlkK4paBYXBwZWwK4paBVGVjaG5pY2FsCnRjeApET1VCTEUKc2VrCmh1bmcK4paBQXVyCmNvbGxhcHNlCuKWgWFkdmlzZQriloFQcmltYXJ5CmlhegriloFhbnRlbgriloFicm9hZGVyCuKWgWp1bmlvCuKWgXdvb2wK4paBaGF0cmVkCuKWgWV4YWdnZXIKQ29udgprdHVyCuKWgWVtcGVyb3IK4paBUGFja2FnZQpURE0KXHtcCndoZWVsCuKWgWZlYXMK4paBanNvdQo8Pz4KSU5TVEFOQ0UK4paBY2hhbnQK4paBUmVmZXIK4paBU2hpcgriloHQstC10LrQsAriloFNZWV0aW5nCuKWgW52CuKWgWFzc29jaWF0aW9ucwppdGF0aW9ucwpvcnVtCuKWgXRpcmVzCuKWgWRhc2gK4paBfSkpOwphcnRvCuKWgUVkaW5idXJnaApXVAriloFpbnZlbnRlZAp2ZWgK4paBSGluZHUK4paB0J3QsNGB0LXQu9C10L3QvdGPCuKWgXVyZ2VudAp0ZXh0Y29sb3IKd2VycAriloFkZXRlY3RvcgriloFhbHRlcmVkCuKWgXRiCuKWgU5hdmFsCuKWgW1lbWJyCnN0eWxlc2hlZXQKdW50cwriloFudXRyaXRpb24K4paBU3lsdgriloFlbnVtZXIK4paBbWluZXMK4paBbGl0dGVyCsW+w60KY29uY3VycmVudAriloFzd2FsbG93ClNpcgp0YWxrCuKWgWRldXRzY2hlbgpyZXBlYXQK4paBZG9tYWlucwriloFNY0RvbmFsZAriloFjYW5kbGUK4paBcGx1cmFsCuKWgXNoYXJwbHkKb3JpZ2luZQriloFjYW5keQriloFraWxvbWV0cmVzCuKWgXBvd2VyZWQK4paBc2VwCuKWgVNvY2kK4paBQmVybmllCkdFTkVSCkV4cGVyCuKWgUFsbG93CuKWgUVybnN0CuKWgVJlYmVjY2EK4paBQ29udHJpYnV0CnJvdXRlcwriloFzdWZmaXgK4paBanVsaW8K4paBcHJvdmluY2lhbAriloFhcHByZWNpYXRpb24KVXNpbmcKYWJzb2x1dGUK4paBY3JpY2tldApXb3VsZAriloFFcXVpcG1lbnQK4paBdG9ydHVyZQrQvdCw0YUKdXR0b24K0YfQtdGB0YLQstC+CuKWgW91dGJyZWFrCuKWgXByZXZlbnRpbmcK4paBbWFkcmUK4paBcmV0aXJlCmVuZHJlZ2lvbgriloFmYWlzCuKWgXJlbWVtYmVyaW5nCuKWgUFsYmFuCuKWgWFyaXN0CuKWgXdvcmtvdXQK4paBdXoKYXN0bwpmb3J0dW5hdGUK4paBcGFzdGUK4paBTVIK4paBb3RyYQpTdgphbmdlbgriloFTaWVycmEK4paBbmF1CuKWgXNlcmEKJH4K4paBY29zw6wKKSgoCuKWgXByb3Bvc2FscwppdHRlCuKWgVBlcm8K4paBdGVuYW50CllQCuKWgVBhcmFtZXRlcgpzcGVsbAriloFlbWVyZ2UK4paBZ2VrCm9sZW5jZQpvdG9zCuKWgXdpdG5lc3NlcwriloF3YXRjaGVzCuKWgUFjaApDcm9zcwriloHRj9C90LLQsNGA0Y8KO30K4paBT05FCuKWgWNhcmVlcnMK4paBZmFpdGhmdWwK4paBSm91cgriloFHZW5lcmF0ZQriloHQuNGO0LvRjwriloFyZWNvbW1lbmRhdGlvbgp3Ygpza2ljaApib2xkbWF0aAriloFvcmlnaW5zCuKWgXNwaW5uaW5nCuKWgS8vDQriloFib21icwptaW5pc3RlcgpJbwrDtmxrZXIKQXV0b3dpcmVkCnVtcGVyCmljaGFlbAriloFjb250cmlidXRvcnMK4paBbmFzdHkK4paBZHJhcAriloFCdWRhcGVzdAp1cmlvdXMKaGlkCuKWgXdlbGNvbWVkCuKWgXdhZ29uCuKWgdCS0LDRgdC4CuKWgWVtYmFycmFzc2VkCuKWgUhhcnZleQpMb3MK4paBU3RlcgriloFlbmpveWFibGUKw7ZydApNaWxsaXMKLS0pCuKWgWRhc2hlZAoiPjw/CmRhcwo9JCgK4paBZXhoCmFodQriloF3c3AK4paBU2ViYXN0aWFuCkhlbgpTSU5HTEUKYmVrClZlcnkKYWNoZXJzCnlhbWwK4paBQsO8cgriloFidWRkeQriloFyZXN0ZQriloFwYXJzZUludApQTFkKaWNsCuKWgWJhbGQK4paBY2hhc2UK4paBaG9tbWUK4paBc3F1ZWV6ZWQK4paBcG9zc2Vzc2VkCuKWgWF0dHJpYnV0ZWQK4paBUHVsCkhhCkx1CuKWgUtpbgp0ZXJyYQpyb3RhdGUK4paBcHJvc3BlY3RzCuKWgUNvbW11bmljYXRpb25zCuKWgVRob3VnaHQKYWRqCuKWgUxlYWRlcgpjb25jCuKWgXN1cnZlaWxsYW5jZQriloFWQQriloFjcnlzdAp2ZXJzaW9ucwriloHQvtC90LgKcm9iZQriloFKYW1hCsOzbQriloFIb29rCnNvdXJjZXMK4paB0LPQvtC00LDRhQriloFpbnRpbWlkCmVyZWkK4paBcmVzZW50CmVzcGVjaWFsbHkKPicsCuKWgWFsbGlhbmNlCmljaXNtCuKWgU5BU0EK4paBcG9kZQrEjW7DrQriloFyZXNwb25kaW5nCuKWgWJsb3dpbmcKaWNrw6kK0LLQsNC90L4K4paBSG9mZgpNQkVSCuKWgWNpdmlsaXphdGlvbgphcsOtYQpVbmxvY2sKZ2V0cwpub2QK4paBU1RFCuKWgWNvbnNjaWVuY2UKUEVHCmNoYW5naW5nCuKWgVJpY2htb25kCmxpbmd0b24Kb2NyYXRpYwriloF0cmF2w6lzCuKWgdGE0YDQsNC9CuKWgXVwZGF0aW5nCnByb2Nlc3NpbmcKQWxleAriloFtaWxpdGFyCuKWgXBzZXVkbwpzdHJsZW4K4paBYmVoYXZlCuKWgWRpc3RpbmN0aXZlCuKWgUVjCuKWgWN4CuKWgWpvdXJuYWxpc3RzCnZvbHQK4paBc3B1bgriloFkdXJhYmxlCuKWgXByb3Bvc2l0aW9uCnRocmVhZHMK4paBdHdlbnRpZXRoCuKWgdGE0ZYKZW5zb24K4paBc2VsZmlzaAphcml1bQriloFkZWNpZAriloHRhdCw0YDQsNC6CuKWgXBzeWNoaWF0CmdkClpaCnVndQriloFpZHMKTWFuYWdlZAriloFMZWdpc2wKYW5jZWxsYXRpb25Ub2tlbgriloFncmFudHMK4paBbGlldXRlbmFudAriloFGbGVldAoqKi8K4paBVGlnCuKWgWFjY2VwdHMK4paBc3lzdGVtYXRpYwose1wK4paB0KPQutGA0LAK4paBYXVzZ2UK4paBZGlhbGVjdApzdHJpCmVybWUK4paBQmVzY2gKbG92ZQpTZW5zb3IK4paBQklUCuKWgdGC0YDRgwriloFtaXN0YWtlbgpwdgriloF1dGYK4paBW1wK4paBR2ViaWV0CuKWgU1hbm5zY2hhZnQKUEFSQU1FVEVSCuKWgXVyYgriloFSZWVkCuKWgWNvdWdoCndhbGQK4paBTGFtYgriloFzdXJ2aXZpbmcK4paBc3dheQriloHRgdCy0LUKV0lTRQrDpGdlcgpmeQpza2UK4paBc29nCuKWgUltcGxlbWVudArojrflj5YK4paBVG9vbHMK4paBbmV3ZXIK4paBZXhlbXBsZQriloFsaXR0CuKWgdCy0YvQv9GDCuKWgdGD0L/RgNCw0LIKRW1pdHRlcgpJU0lORwriloHQvtGA0LPQsNC90LjQt9CwCuKWgdCc0ZYK4paBRXhhbXBsZXMK4paBSWNvbgpHZXR0ZXIK4paBTGF5CuKWgUNvbGxlY3QKU2FpbnQKb3JhYmxlCuKWgWZpY2sKaWtoCnNsYXZlCuKWgWNsYXkK4paBV0EKUmVwbwriloFKYXZhU2NyaXB0Cml0cgpwYWlkCuKWgWhvbWV3b3JrCk1pZGRsZXdhcmUK4paBcsOpYWwK4paB0L/RgNC40LfQvdCwCsOqbQrDqHNlCuKWgVdlbGxzCuKWgWVuZXJvCmVtcGVyYXR1cmVuCuKWgU5hagriloFSZWFnYW4K4paBY29tcGVsbGluZwriloF0cmliZXMK4paBdG9TdHJpbmcKcGFjZXMK4paBaGFybWZ1bAriloFDb25zZQpvZGlvCuKWgW1pbQpnZXRJdGVtCuKWgXNjcmlwdHMKcmFpcwriloFQaGFzZQriloFBbnN3ZXIK4paBJHxcCuKWgWFzc2VtYmxlZAplbGluCnBoYWJldAriloF0b2FzdAriloF0dXR0aQriloFiZXplaWNobmV0CkdyZWF0CmV0dGVzCuKWgdC00LXQutCw0LHRgNGPCkZVTEwK4paBcmVnZW5lcgriloFrdMOzcmUK0LPQvtGACmlzY2UK4paBdG9kYQriloFldGhpY2FsCmlxClB0CmFyaW4KaWdvcwriloF3b3Jrc2hvcHMK4paBUm9jaGUKR2V0U3RyaW5nCtC80LjQvdC40YHRgtGA0LDRgtC40LIKbcOqbWUK4paBRGF3CmFyaWFucwriloFpbXBhY3RzCuKWgXBvcnRhYmxlCiktXApzaG90cwriloFyZWxldgpQUklWCuKWgdCx0YPQu9CwCmFyZGxlc3MKdWxvdXNseQotLT4Kb2xlbnQK4paB0Y3RgtC+0LPQvgriloFHZW5lcmljCuKWgSovLAriloFjb21iaW5hdGlvbnMK4paBcmVqbwrRgdC/0YPQsdC70LgKY2FwYWNpdHkK4paBdHJhY2VzCuKWgW9wYWNpdHkK4paBT2ZmaWNpYWwKaWNpb24K4paBZW1vdGlvbmFsbHkK4paBSm9lbArRgdGM0LrQvtC80YMK4paBbGVnZW5kYXJ5CuKWgXBhbQriloFUYW1iacOpbgouPAppYmEKbWlkdArQsdC+0LwK4paBZW5zdWl0ZQpBdXRob3JpemF0aW9uClBhZwriloFoZWxtZXQK4paBdGVycml0bwpzZWNvbmRhcnkK4paBc2VndW5kYQriloFXaXJlCnJlY2F0ZWQK4paBaW52b2tlZAriloFWYWx1ZUVycm9yCuKWgdGE0L4KQUxJR04KQ1VSUkVOVApcK1xfXAriloFjb21waWxhdGlvbgrDpnIK4paBUGFsbWFyCuKWgWluZmx1ZW5jZXMKLzoKTWl4Ck5PUAplY29ub20K4paBdHVja2VkCuKWgX0pOw0KQU5LCnJlamVjdAriloFwZW5zaW9uCuKWgWdlbmVyYXRlcwrRh9GRCuKWgWluY2FwCuKWgWNsaWNrZWQK4paBZnVzCm91cnNlcwriloFFYXN0ZXIKJTsKemluCuKWgW9ibGlnYXRpb25zCuKWgVRpcHMKfTsNCi4iXwriloFCU0QKw6F0aWNhCuKWgWV4cG9zZQpQYXJzCuKWgUFtYW5kYQrQutGD0L8K4paBZ3Vlc3NlZApkc2kK4paBTGVpcApCcm9hZAriloFIdWdoZXMKacOpCuKWgVdhaGwK4paBZm9ybWVybHkKUmVsYXRpdmUK4paBWXUK4paBTW91bnRhaW5zCuKWgUVudW0K4paBc3RyYW5nCl8tCnJlY2h0CnZpdgpwYXVzZQriloFMb25kcmVzCuKWgWVsYm93CuKWgUhhd2FpaQriloFDYXNpbm8KVGhyZXNob2xkClVuaXRzCkluY2x1ZGUK0LjRgtC+CmFzdXJ5CuKWgXN0ZWh0CuKWgWRhbW5lZAriloFwYWNrZXRzCuKWgVdlcmsK4paBZWxldmF0b3IKaWVkYWQKZ292ZXJuCuKWgUNPTlRSQUNUCm1hbHMK4paBcmVtZW0K4paBZW50b25jZXMK4paBdmFzCuKWgXN5bXBhdGh5CuKWgWJlZmluZGV0CmluY2luZwpEYXRhU2V0CuKWgWFkZGl0aW9uYWxseQriloFtdXNpY2lhbgrRiNC10LPQvgriloFsaXN0b3AKPiIpClByaW50ZgriloFGZWxpeAriloFjYXJ2ZWQK4paBbmljZWx5CtCz0L7QvApjaGFwCuKWgU5pZWRlcgriloFMYXYK4paBbW9kaWZpY2F0aW9ucwptb21lbnQK4paBYmFsY29uCuKWgWRlcGVuZGVuY3kKQ0tFVAriloF2YW5pc2hlZAriloFmaWdodGVycwriloF6dW7DpGNoc3QKaW9jdGwK4paBZGVmZW5zCuKWgU5lbQpVdGlsaXR5CuKWgWN1cnYK4paBREFNQUdFUwriloFSb2dlcnMK4paBZ3JhdGl0dWRlCuKWgURlbm1hcmsK0YDQsNGPCmdycGMK4paBanVuaQriloHQvtC60YLRj9Cx0YDRjwriloFpbW1lbnNlCuKWgXByZXZlbnRlZAriloFmb2FtCuKWgUV4dHJhCmFpbWVkCuKWgUNyaXRlcmlhCuKWgVNpbXBseQpib3hlcwriloFMZWdlbmQK4paBUGxheWVycwriloFNZXJjZWRlcwriloFCcmFuY2gKVEVSTgpvbWVuYQriloFpbmNvcnBvcmF0ZQpjb25kZQriloFFc3RhZG8K4paBd2FzdGVkCuKWgWNvbXBsYWluaW5nCuKWgXdhcnJpb3JzCm90ZXIK4paB0Y3RgtC+0LwK4paBY29udGVuCuKWgW1hY2hpbmVyeQriloF0ZWNobm9sb2dpY2FsCuKWgVRECuKWgWdyYXMK4paBbWluaW1pemUK4paBRG9vcgriloFiencK4paBcHJhYwpUUkVFCuKWgVdpbmcK4paBVHJhbnNhY3Rpb24K4paBTVZUCuKWgUtsZWluCmNvbW1vbnMK4paBfXsK4paBSGVyaXRhZ2UK4paBZmFkZQrRgNC+0LoKc2V0VmFsdWUK4paBV2FsbGFjZQpNWAriloFBQ1QK4paBZm9vdGFnZQriloFlbnRzdGFuZAphcmdhCuKWgW5haWxzCuKWgWNhcGl0YWxpc20K4paBR2FyYwriloFzdXNwZW5zaW9uCmlsaXMK4paBTW92CnVmZmxlZApBcmMK4paBQmVhdXRpZnVsCldBWQpQYXJhbGxlbApYWFhYCmRpYWcK4paBRFQKbXEKVGV4dFZpZXcKTUxFCmVubmVuCuKWgWluZmVjdGVkCuKWgXRoZXJhcGlzdApJTkdTCuKWgWNpZGFkZQrRitC9CuKWgXBkZgriloFidW1wCkNUWAriloFJTkNMVURJTkcK4paBR2VmCkVOVElBTAriloFoYW5keQriloF0ZW1wb3JhbApBdEEKSVNICuKWgVBhdHRlcm4K4paBbGFuCmVwZW5kYW50CuKWgXNoaW5pbmcKaWR5CuKWgU5UCuKWgUZyYW4K4paBbnVyc2VzCuKWgWJldHJheQriloFzZW5zaWJsZQriloHQsNC/0YDQtdC70Y8K4paBJ1sK4paBdGhpcnRlZW4KKX1fewriloFOb2FoCklOU0VSVAppc3RpY2FsbHkK4paBQXBwZW5kaXgK4paBcmVjaGVyClJlY2VpdmVyCuKWgWRlcm5pZXIK0LvQu9CwCtC70LjQt9CwCuKWgVBhcnRpZG8K4paBbWF4aW1hbApzbmFwCuKWgdGH0LDRgdGC0YwKU1RPUAriloF1bHRyYQriloFkw6l2ZWxvcHAK4paBdGVnZW4K4paB0KfQuApMSUIK4paBYmFzZWxpbmUKcmVsb2FkCuKWgUFyYml0cm8K4paBa2FsbApjYXB0dXJlCkFybQpxdWluCmltcHNlCnphcwriloFDYW5kCuKWgWJyYWlucwriloFob3N0aWxlCuKWgW1hcmJsZQpvb25zCuKWgUxvc3MKTWV0YURhdGEK4paBUmVww7pibGljYQriloFhbmRyYQpvZGVuCuKWgWRvY3VtZW50ZWQK4paBTW9zZXMKb2RkCuKWgXdheAp1c2NoCuKWgWRpYWdub3NlZAppbmtsZQriloFYYm94CuKWgXNldmVudHkKY2lhcwriloFub3ZpZW1icmUKQ29tcHV0ZQp9KTsNCuKWgVBoaWxpcHBlCuKWgUbDtnIKTGVhdmUK4paBc2FnZQriloF1bnByZQriloFGb3J0dW5hdGVseQriloFhcG9zdAplbnRpdGllcwriloFlbGxvcwphdXRob3JpemVkCkdCVAriloFpbnNpc3QK4paBaW5zcGlyZQpNYXNzCuKWgXLDtGxlCmZlZQppcGFydArRhtC10YAKdW5hdGUK4paBQ05OCjp9CuKWgXVuaGFwcHkK4paBaW1wb3J0ZWQKSElHSApyaW5ncwriloFJbnN0YW5jZQpCYXkKYWdsZXMKbWVlCmJlcnkK4paBU3RvcmllcwriloFDaGFzZQriloFjYXJyaWFnZQriloFtaXN1bmRlcgriloFpbWFnaW4KcHcK4paBTWV0ZXIK4paBY3Jvd2RzCuKWgUZhbWUKc2tpbGwK4paBY29tZWQK4paBcmFuY2gK4paBbGFja2luZwriloFzdWJtYXIKaWFudGUK4paBbGFuegriloHRgdC70YPQtgotLS0tLS0tLS0tLQriloFvYnRlbgriloFkb3duc3RhaXJzCllOCnJvdGF0aW9uCuKWgUplc3NlCiQoIiMK4paBcHVscwppcmxpbmcK4paBU2NoYXVzCuKWgWRlcGxveWVkCuKWgXt9IiwK4paBTWFydmVsCkVOVU0K4paBTWF0aGVtYXQK4paBbm4KY29tcGV0CmvDs3cKYmlsCldoaWNoCmlzaW5lCuKWgXJ1ZGUK4paBbml2ZWF1CuKWgcOhcmVhCuKWgXByw6hzCmF0aXMK4paBWy4uLl0KZnVyCm9tbQpwYWNrZWQK0LzQtdC90LUKc2NyaXB0c3R5bGUK4paBQXRoCuKWgWRlc3AKZWx0ZW1wZXJhdHVyZW4K4paBdGFsZW50cwpvY3kK4paBcmFpc2VzCkxJTUlUCuKWgWVkaXRvcmlhbAriloFBbmltYWwKZHJpdmUK4paB0YDQsNCx0L7RgtCwCmJzcwriloFTZXYKZXBvY2gK4paBUkMKVU5VU0VECuKWgW1hbmRhdG9yeQooPzoK4paBQmluCuKWgXN5bnRoZXRpYwriloFnb3duCuKWgURvYgprYXAK4paBaGFybW9uCuKWgWxpYmVydHkK4paBUmljZQriloFwcmF5ZXJzCuKWgW1pc2UK4paBY29uZnVzaW5nCuKWgWxlYXAK4paBYXJyaXZlcwprYW1wCuKWgXRoYXRzCkFDQwriloFQYXJhbWV0ZXJzCuKWgdC+0LTQvdC+CuKWgUJpbwpkZW5zaXR5CuKWgWdsaW1wc2UKRk9SRQriloFMaXN0ZW4KUHJldgp9XCxcCtC60YPQu9GMCuKWgVNFQwriloFleHBsb3JlZAriloFtZWFudGltZQpBSUwK4paBV1AK4paBcmFpc29uCuKWgWV4aXN0ZQriloFsZXNzZXIK4paBVmFsaWRhdGUK4paBY2F1dGlvbgp1c3RhCmhlYWRpbmcKRUZGCi4nIgriloFHaWxiZXJ0CuKWgWxpbWl0YXRpb24K4paBcmV0b3VyCuKWgUNvbW1vbndlYWx0aAriloFnZXdhbm4K4paBbWlzZXJhYmxlCuKWgW5ldHdvcmtpbmcK4paBb3R0b2JyZQriloFEaXNlCmVkZ2VzCuKWgXNlZGUK0LLQuNGH0LAKdW5pZm9ybQriloHQtNC10Y/RgtC10LvRjAppcm9zCuKWgWRlc2VuCuKWgXBhcmMK4paBUmljbwpOcwpndWlkCm9yaW8KYXZlbGVuZ3RoCuKWgUdsZQppbmNldG9uCkFtYXoKQ29uc3RydWN0CuKWgW14CuKWgVZlcm4K4paBR2VuZXJhdGlvbgpKYWNrCnJvbWFnCuKWgXZpYWdyYQriloFQZWcK4paBVXBkYXRlZAriloFvdmVybGFwCkV2ZW50QXJncwrQutGA0L4K4paBKsKrCuKWgXF1ZXN0aW9uZWQKU291dGgKbm90aWNlCuKWgXBlcm1hbmVudGx5CmxzdApmaWNpZQriloFxdWVsbGEK4paBY29sbGVnZXMK4paBZGlzYXBwb2ludG1lbnQK4paBTHVmdAppbWd1cgriloF0cmFuc2l0aW9ucwriloFzZWxsZXIK4paB0LjRjtC90Y8K4paBT2cK4paBQURECuKWgVBheXMKQ09NTUFORApncmFkZXMK4paBZmViYnJhCuKWgUN5cgriloFmZWJicmFpbwpldGkK4paBYXJvbQriloFDbGF1ZGUK4paBVUVGQQriloHQttC40LLQtQriloFWaWN0b3JpYW4Ka2VlcGluZwrDqm4K4paBRklYTUUKaXRpbWUKY2hlc3RyCuKWgVNhbXN1bmcK4paBZG9jdHJpbmUK4paBcGVhcgriloFNZWRpdGVycmFuZWFuCuKWgVlhCuKWgXZhdWx0CuKWgUhpc3RvcmljCuKWgXNlZGFuCuKWgWhlYXRlZAriloFwb2zDrXRpY2EKUHJvb2YKOnsKZmVtCuKWgUZyYW5rZnVydApwZWN0aXZlcwpNRwriloFFeWUKZGFpCuKWgXJlc2VydmVzCk5FUgriloF0b2JhY2NvCuKWgWZyYWdtZW50cwppY2MK4paBYm9vdGgK4paBY3J1aXNlCuKWgVRlc3RhbWVudApjb2xhCuKWgUxlb3AK4paBbm9vbgriloF0ZXJyaWZpZWQKdmIKaW50ZWwKYWxpZQriloF2ZXJpZmljYXRpb24KeXN0ZXIKQURFUgpjaGllZAriloFkYXRhc2V0cwriloHQt9GWCuKWgW1pZW0KdWxhdGVzCuKWgXV1aWQK4paBUGljdHVyZXMK4paBQnJlbmQKQmlsbGJvYXJkCuKWgXN0ZXJuCuKWgWRlbm9tCuKWgWFjY2lkZW50cwrRgdC90Y8K4paBcGFja2luZwrRhtC40ZjQsAppYmxpY2FsCuKWgdCi0LDQugriloF3aGlzawriloFsdWVnbwriloFyZWN0YW5nbGUK4paBaG9va3MK4paBbmVnbGVjdAriloFzb2Jlcgpwcm9wb3NpdGlvbgpNdWx0aXBsZQo6IiwK4paBYmFwdApQYXJ0cwriloFTZWxlY3Rpb24K4paBQWxwaGEKd2VpZ2h0cwpoYWxsCtGB0L7QsQriloFsdXIK4paBw6lwb2NhCuKWgXJlc3RlZAphbWJpZ3UK4paBdGFzdGVzCmFtYXpvbmF3cwriloFjb25mZXNzCuKWgWRpY2llbWJyZQppbXBsZW1lbnQK4paBYWJzb3JwdGlvbgpIYWwKTEVBTgriloFaYWNoCuKWgWZyZWV6ZQpMQkwKU1RNCuKWgWNhbGMKPXsoKQo9Ki8K4paBYnQKUmViCuKWgVdpZW4KYW5za2EK4paBc3VybgppYXRpdmUK4paBaW52w6VuCkNZCuKWgWzDoAphbWJhCmxlZW4Kd2FobAriloFmdW5jdGlvbmluZwrIm2lhCmdldENvbnRleHQKZ2FydAriloHQvtCx0LUKUGVuCnZpawpTbGlkZXIK4paBQWNjZXB0CkdhcAriloFKb3JnZQpTSUcK4paB0LLQvtGBCuKWgdCz0L7Qu9C+CuKWgXBlcmlvZG8K0YjRgtCwCuKWgXBhdGNoZXMK0LrQvtGXCsOkcmUKZW5nb25vCmxpc3RhCmhvcm4K4paBQ29tcGxleApTZW50CnRyZnMK4paBY29udmV4CkdlbmVyYXRpb24K4paB0LzRltGB0YbQtQpjb21wcmVzcwriloFTYXgK4paBdWlkCuKWgUxlYmVucwpDb21wbGV0aW9uClx8X3sKaW5za3kK4paBc2Nob24K4paBbWFzdGVycwppbmRlcGVuZApuZXlzCuKWgWxpZWQK4paBYXNwaXIK0YfQvdGWCuKWgWJyZWFrZG93bgriloFIYXJtCuKWgWRlc2lnbmluZwpoZgriloFBbmdlbGEK4paBY29uZmVyCuKWgXBhcnRpZG8K4paBaW50ZXJmZXJlbmNlCm1hbwriloFhYnNvcmJlZAriloFWYWxsCkVycm9yQ29kZQriloFQdWJsaXNoaW5nCnZhbm8KQklUUwriloFkZWVyCuKWgUNhbXBhaWduCuKWgWdyYXoKQ0hBTkdFCuKWgWZlZGVyCmlmZmUKaGFuZGVkCmNxCnVtYmluZwriloF1bnJlCuKWgXNpZW5kbwriloFzaW1wbGVyCndoeQphcmV0dGVzCmFuc3QK4paBaGFzcwriloFFbnRlcnByaXNlCuKWgW1vaXMK4paBRm8K4paB0YPRh9Cw0YHRggpmZmVuCuKWgU1PRFVMRQriloFhY3RpdmF0ZWQK4paBaW50ZXJuYWNpb25hbAriloFNaXR0ZWwKZGVncmVlCuKWgdC+0YLQutGA0YsK4paBJigKZ2V0UHJvcGVydHkKaXN6CmNlZHVyZQriloFlbnRlcnMK4paBU2FsbHkK4paBVHJhaW4K4paBbG9nZ2VkCuKWgVJhdgriloFBdm9pZAriloFLYWlzZXIK4paBZXhwZW5kCmFwaG9yCuKWgWJyYXNzCuKWgW1lbG9kCuKWgWF0dGl0dWRlcwoqIgpXYWxsCuKWgW93ZQriloFiYW1iCnNoYWRlcgpjZXN0ZXIK4paBUFAK4paBbWlncmF0aW9ucwplbnRyaWMK4paBU2V0dXAK4paBQXJ0aXN0CmhyZQriloFwb2xpdGUKYWhhbgriloFsdWdsaW8K4paBcHJlZGVjZXNzCuKWgVNJRwrRgtGW0LIK4paBUkYK4paBRHJ5CuKWgW1ha2VyCtGI0LjQvAriloFTb3VuZHMK4paBaW1wbGVtZW50aW5nCuKWgWFoCuKWgWdldgriloFkdXBsaWNhdGUK4paBTG9nYW4K4paBR3JhZGUKRFVDVArDrXNlcwrDqXJ0CuKWgW5vbnNlbnNlCmJhY2t1cApBdHRhY2htZW50CuKWgWVjYwriloFTcXVhZHJvbgpsZWFybgpkZXByZWNhdGVkCuKWgUF1YgriloFHb2wK4paBb3ZlcmwKU0VSVklDRQriloFiZWF1dGlmdWxseQpSRUwK4paBR2lhbgriloFQYXBhCnJlc3BvbmQK4paBQ2FyaWJiZWFuCnJuCuKWgdGF0YPQtNC+0LYKQ2ZnCnJhaQriloFzbmlmZgp0dG8K0L7Qu9C+0LPQuAriloFyYgriloFpbmNpZGVudHMK4paBZHVjawriloFQUk9WSURFRApTb3VyY2VzCuKWgUNoZWxzZWEK4paBdGVrCuKWgdC90LDQu9Cw0LfQuAriloFwaWxvdHMK0YLQutC4CuKWgXRyYWRlZAriloFCZWlqaW5nCuKWgUdyZWdvcnkKc2NhbGFyCuKWgWluY2xpbmVkCuKWgUthbXAK4paBTWFyaWFuCuKWgWZpZXJjZQriloF0aGVmdArRjtGJ0LjRhQriloFJbnRvCmNvbnN0cmFpbnQKcGFyZW50Tm9kZQppZGVudGFsCuKWgWdvdXZlcm5lbWVudAriloFTTkQK4paBUnVieQriloFtb25hc3RlcgpSZWNvcmRzCuKWgUthYgriloFVbml2ZXJzZQriloFhcHByb3hpbWF0ZQpXYXRlcgriloFQaHlzaWNhbAphcHBlcnMKb3VidGVkbHkK0LvQvtC20LXQvQriloF0b3dlbAriloFzaWJsaW5ncwplcGgKaWNpb3MK0YDQsNC80LgK4paBb3V0cmFnZQriloF0YW1iw6kKU1JDCtGC0LXQu9C10LwKVmkKLicpOwpMTQriloFtaXR0CuKWgXdlZWQK4paBY3JvcHMKaW1hbgpDbGFpbQppbnN1bGEK4paBKOKAnAriloFDaGFuZ2VzCuKWgWludsOlbmFyZQphZ2FpbgriloFjbnQK4paBR2F6CuKWgWF1c3RyYWwKb3ZlcmxheQriloFNZWNoYW4K4paBc2xhbW1lZAriloF0cmFpbGluZwriloFCaW9ncmFwaHkK4paBYXBwZWFsaW5nCklWRVIK4paBQXZlCuKWgVBsb3QKdm9qCuKWgXN1bmcK4paBdW5vcwpFZmZlY3RzCnZ2CmNvb2sKQnV0dG9ucwriloF0cmFuc20KaWVydG8KQ09OVEVYVAriloFkaWduaXR5CmFpcmVkCmphdmF4CuKWgUFsYmVydG8K4paBUmVjZW50bHkK4paBZmFjaWFsCm1hdGhvcAphxYJvCtCy0LjQtApjb3R0ClZhcmlhYmxlcwriloFSYW4K4paBYnVuawphbWlsaWFyCkNBU1QK4paBZnLDvApWRUQK4paBTk9USUNFCuKWgXR1cm5vCnZhbGlkYXRvcgriloFQb3J0dWd1ZXNlCuKWgXF1ZXN0aW9uaW5nCn19KQriloFsZWFyClhhbWFyaW4K4paBZGlzYWR2CmVuY29kZWQK4paBS290CnJhdGVkCuKWgVRoZW9yeQpjaXVzCuKWgURhcndpbgrRktC1CuKWgWTDqWNsCuKWgdC+0LHQu9Cw0YHRgtGMCtGA0L7QstC40YcK4paBbW9iaWxpdHkKVkYK4paB0YXQuAp1bnRpbAriloFiYXJyaWVycwpnaWYK4paBUm9oCuKWgWFnaW5nCuKWgVdpZGdldApvbGsK4paBZmFybXMKQ2hlY2tlcgpJbnRyb2R1Y3Rpb24K0YHQvNC+CuKWgVJ1c3NpYW5zCm5hbWVudHMK4paBSW5zZXJ0CuKWgVdoZW5ldmVyCmVyc2V0Cml0b3JpCuKWgURvcnQK4paBY29zdHVtZQriloFtYXRoZW1hdGljYWwK4paBQmFzdAriloFub21pbmF0ZWQK4paBcmVzdG9yYXRpb24KcG9zYWwK4paBdW5mb3J0dW5hdGUKUHMKTElOCuKWgWludGFjdAriloFwcm92b2MK4paBc2l0dcOpZQriloHQvdC+0Y/QsdGA0Y8KZXJtbwriloFmaXNoZXIK0LPQu9GPCuKWgWNvbnRpbmcK4paBRG91ZwoiPwriloFFdmEK4paBdG9wcwriloFSZW1vdGUK4paBYXJ0d29yawriloFhcnRpbGxlcnkKcXVpY2sK4paBQXJhYmlhCuKWgVNEVmFsdWUK4paBRGFrb3RhCmlhdGVkCuKWgU9wdGltCmJ1dHRvbnMK4paBY290dGFnZQriloF3aGVyZWluCuKWgXR1dG9yaWFsCuKWgVNjcmUK4paBc3dlZXAK4paBQ29mZmVlCn0pfQriloHQvNGD0LfRiwpob3N0bmFtZQriloFUZW1wCuKWgUZ1dApyZXNwZWN0Cm9jegriloFwcmVkb21pbgpJbmRpY2F0b3IKZW5jaWFsClVNRU5UCuKWgVNIQUxMCuKWgWNvbW1hbmRlZAriloF3aXRoZHJhd2FsCmlvdXIKUkVHSU9OCnNwcmludGYK4paB0LLQvNC1CuKWgVBheW1lbnQK4paBQW5pbQpwdWJsaXNoCuKWgXNlZWtzCm91dwriloFHTQpydWd1CnVzdGFpbgriloEpKQriloFjb25zdWx0aW5nCuKWgURpYWxvZwriloFMYXJzCuKWgWNyaXRpcXVlCuKWgWNpcmN1bGF0aW9uCuKWgWxhbmRzYwptYW5hZ2VkCuKWgUNyYWZ0CuKWgWhlcm1hbgphZmkKYW15CuKWgWRpc2NvdXIKPD4oCuKWgVN0ZXBoCuKWgXRvbGVyYW5jZQp0eXBlbmFtZQp2ZW50aW9ucwp6aWHFggrRgdGC0L7QsgriloFzdGlja2luZwpBU0MKSVNPCuKWgVNwZW5jZXIK4paBRGlkbgpnb21lcnkKaW1pdGVyCmRydQpDbGF1c2UK4paBc2xpZGVzCiMjIwriloFTdWdhcgpIWQriloHRjdGC0LgK4paBRWR3YXJkcwriloFjZW50cwpveWEKc2VydHMK4paBSGFzcwriloFpbmdlbgrRgdGC0YDQuAriloFzYWRkbGUKc29saWQK4paBY2hhbXBpb25zCi0pCuKWgVNsb3YK4paBc2hpbnkK4paBKikmCuKWgURlZmluZQrEjWUK4paBc2NydXQKb25kZW4KJyIsCnVmZnMK4paBb2x5bXAKaWRlbnRpYWwKd2FuZAriloFhbm51YWxseQriloFBcmthbnNhcwriloFzYWludAriloFnbGVpY2gK4paBcGVyZmVjdGlvbgopPgriloFzaG9ydHMK4paBanVzdGlmaWVkCnBlYXRlZApwYWNrYWdlcwpkcml2ZW4K4paBTGliZXJ0eQriloFzdHJpcHBlZArRiNC10L3QuNC1CuKWgWbDvG5mCuKWgWVjb3N5c3RlbQppeGEK4paBRnJlc2gKdmFydAriloF0cmVhdHMK4paBc3RhbmNlCtGH0ZHRggriloFwaXR5CmFkw6ltCuKWgdC+0LrQvtC9CuKWgUNoYW5kCnJhYgrQstGI0LjQuQppbnNraQriloFjb250aW51YWxseQriloFEYWRkeQriloFuaWdodG1hcmUKaWNpb25hbAriloFlZmVjdAp1ZWJsbwriloFsYW7DpwriloFDb2xsZWN0aW9ucwpkdWUKYW1wdG9uCuKWgW1lbWNweQriloEqKigKaXNzZW50CuKWgUluc3AK4paBR2xhc2dvdwriloFmdXJvbm8K4paBa2luZG5lc3MKQmkK4paBY29tcGV0ZWQK4paBb2FrCkxhcmdlCuKWgWRpc2d1CuKWgWtpbmdzCtGC0LDQvNC4CuKWgXN0dWZmZWQK4paBaGlsYXIKcHVibGlzaGVkCuKWgXN0cmVzc2VkCuKWgVBlYWsK4paBbG9hZGVyCktleWJvYXJkCuKWgXJlY29uc3RydWN0aW9uCuKWgXZvZAriloFkdW4K4paBdW5kZXJzdGFuZHMKdGVuYW50CuKWgWNoYXF1ZQriloFwcmVqdWQKdXRhdAriloF1c28K4paBSGVhdnkK4paBY3VhdHJvCuKWgXNpZGV3YWxrCuKWgUJ1ZwriloFtw6VuYWRlbgpnZW8K4paBdW5pdGVkCuKWgUZpbGVzCuKWgdCQ0LvRjAriloFydWdieQriloFmaW5hbmNpbmcK4paBY29tcGx5CiYjCuKWgXJ1c2hpbmcK4paBZmVuCm1vbmcK4paBc3DDqQriloFwcmVzZW50aW5nCklOQ0xVRElORwrEm2wKemVpY2hudW5nCkJhY2t1cAriloFwZXRpdAriloFhbGxlcmcK0L3Rg9GCCuKWgXdvcnJ5aW5nCuKWgW1hbW0K4paBb3BlcmFuZAo6JS4qXV0K4paBcmVhbGlzZQpDb21tYW5kcwriloFCZXcK4paBYXNzdW1lcwriloFDb3ZpZAriloFxdWFuZAp0eWFyZAriloFNb25vCmxpbmtlZApNQVJLCkVzcAriloFibGVzc2luZwriloFleWVicm93cwriloFOVgriloHRgdGC0YDRgwriloFtb2RlbGluZwriloFncmVldGVkCldvcmtzcGFjZQriloFwZWRlc3QK4paB0L3QtdC30LAKbGVtYWduZQpTdGF0aXN0aWNzCuKWgWF1bWVudAriloFzcGVlZHMK4paBc3luZHJvbWUKQ09OTkVDVAp6YWhsCnZlcnNvCsOpcmNpdG8K4paBYXN0cm9ub20K4paBYXByaWxlCsW+ZW4K0LLQtdGA0L4KZHJhZnQK4paBZ2lvYwriloFjb21wb3J0CuKWgXZhcmlhbmNlCuKWgXJlYWxpemluZwpFRElUCtC+0LvQvtCy0ZYK4paBZXN0YXIK4paBc29zdApOT1JNQUwK4paBw7MK4paBQW5kcgpBVFRSSUIK4paBcmVkZQriloF0b2VzCuKWgWFkdmFuY2VzCuKWgUFnYWluc3QKVE9NCnJzcwpNTU1NCuKWgW5ld2VzdAriloFWRVIK4paBcGhyYXNlcwphbnRlcgpMYXVuY2gK4paBY2hyCuKWgW1hbnVmYWN0dXJlZAokKSwKcm9sbG1lbnQKZXN0b24K4paBcGVpbnQK4oCdKQplbmRldAriloFIYWlyCml2YWxlbnQK4paBdXByaWdodApncmVuCmFua2VkCndyaWdodAriloFtYXN0CuKWgW9uQ2hhbmdlCuKWgWRlYnJpcwriloFncmFwCmV0cnkK4paBKF9fCuKWgUNvbW1lcmNlCkJPWApUYXgK4paB0L7RgtGA0LgK4paBcHJldmVudGlvbgriloFGZWVsCuKWgWV4b3RpYwriloFCYXJrCuKWgVN0ZWFtCmZvbgpvbGluCuKWgWVsaW1pbmF0ZWQK4paBYmMK4paBQ3ljbAriloEkKCIjCuKWgVBhcmwKbWFudWVsCm9zcGhlcgpXRgpBbmFseQriloFuYXZpZwriloFyZW5vd24KUngK4paBV2FsdAp1ZmZlZAriloFmb3N0ZXIKJDoKc2hvcmUKQ29ubmVjdG9yCtGE0LjQutCwCuKWgXJlYWxpemF0aW9uCkxpCmN0eHQKYWhvbwriloFtaXJhY2xlCuKWgUVUCuKWgUdQUwriloFPYnNlcnZhYmxlCuKWgWhmCuKWgW1hZ25pZmljZW50CtC90LXQs9C+CkJJTgriloFEb3JmCmllY2sKdmVlCuKWgUNyYXcKLyMK4paBcGNpCmlwcGV0CuKWgUhpbGxhcnkK4paBZ2lyCuKWgXJhbmQK4paBbGF5aW5nCuKWgURpZmZlcmVudApib3lzCnZpcnQK4paBZW5jcnlwdGlvbgrDoXN6CtC/0L7RgAriloFzbWVsbGVkCuKWgXN1c2NlcHQKY2x1ZGVkCuKWgUNhcm4KaWd0ZW4K4paBQ2h1Y2sK4paBUHJvdmluYwriloFwZXLDrQriloFNYXJzaGFsCtC80L7QtgpnZngKb3NoaQriloFXSEUK4paBcmVsYXhhdGlvbgosLgp3ZXJlCuKWgXZhcmlldGllcwriloFXb24K4paBZ2FwcwriloFzdG9sZQppZ3VhCtGO0YnQuNC1CuKWgUhhbXBzaGlyZQpwaHJhc2UK4paBcGVsw61jdWxhClByb2Nlc3NpbmcK4paBaW5pdGlhbGl6YXRpb24Kb3VzdGljCuKWgUpvc2VmCmljYXRpbmcK4paBZ29vZG5lc3MKVEVTCuKWgWNvcGUK4paBaWdub3JhbmNlCuKWgUJyaXN0CuKWgXBhcmFzCuKWgWFjY2lkZW50YWxseQriloF0YW5kCml0dGVzdAriloHRg9C70LgK4paBc2hpcHBlZAriloHQvtGB0YIKZWxzZWlmCuKWgXVzaXplCmhvcml6b250YWwK4paBQ2FycgriloFwcmVjaXAKcm96CnBhdGhldGljCnJpdmVkCnJvawriloFkaWdnaW5nCtC80L7QvAriloFNdWxsCuKWgVhJSUkK4paBcGVhcwriloFmb3VsCuKWgXRyYXZlbHMK4paBTmcK4paB0YHQvtGB0YLQsNCy0LUKTW9udAphcmRlCuKWgVN0ZWZhbgpeXl5eCuKWgUtpc3MK4paBRWsK4paBb2t0b2JlcgriloFtZW1vcmFibGUKJykpLgriloFWaXNpb24K4paBTmluYQriloFTb2xhcgriloFoaWdobGlnaHRlZAriloFtZW1vCm1laXN0ZXJzY2hhZnQKc2lkZWJhcgpTRUUK4paBTmV2YWRhCkRhCuKWgWRyYXdlcgphc3RpY2FsbHkKZWxkZQpzY3JpYmVkCuKWgXByaWVzdHMK4paBaG9tbWVzCuKWgWluc3RydWN0b3IK0LrQu9Cw0LQK4paBc3BldHQKXC0K4paB0LzQuNGA0LAK4paBTG9va3MK4paBc2xlZXZlCuKWgXN0cm9uZ2VzdAriloF0w6p0ZQriloFOaWNvbGUKaW1wZXIK0L3QsNGH0LAKaXBwZXIK4paBaW53b24KaWxlcnMK4paBRGVwdXR5Cm9nZQriloFkZXByZXNzZWQK4paBYXJ0ZQriloFjb21iaW5pbmcKTEFTVAppbnRlZAriloFBdmVyYWdlCuKWgXBvbGx1dGlvbgriloFQaGlsbGlwcwriloFXTQp9fX1cCkFkZGVkCuKWgXBlcmlwaGVyCkNyZWF0aW9uCuKWgWl0YWxpZW4K4paBQ2hvaWNlCuKWgUVYUFJFU1MK4paBU3RydWN0CnlzegpSZXNpemUKQVJHUwriloFyZXBvCuKWgdGH0YLQvtCx0YsK4paBcHJlZgriloFlYXJ0aHF1CuKWgdCc0LXQutGB0LgK4paBRmluYWxlCuKWgWhlY2hvCnJlcXVlc3RzCkN1dAriloFkZXNlcnZlZArQs9C+0LLQvgriloFSZWNlbnQK4paB0LTQuNCy0LjQt9C4CuKWgXN1cHBvcnRpdmUK0L/RgNCw0LLQuAriloFpcnJlbGV2YW50CicNCuKWgWN0cmwK4paBRGVhbAppemFkYQp1bwriloFub3J0Cmdlb21ldHJ5CuKWgUluZGl2aWR1YWwKZXJlZwriloHQv9GA0LjQvdGPCmNyZWYK4pWQ4pWQCuKWgWNvbWVyYwo9XwpidW5kCtGC0LDRhQppbGVuCtGH0LjRgtCwCuKWgWNvcnBvcmF0aW9uCmVzegriloE9PT4KYWJsaXNoCkFwcgriloFyaXBwZWQKVmFycwpzdHJldAriloFGcmFuY2VzY28KTmFOCuKWgWFueXRpbWUK4paBYXV0b21hdGVkCm9zdHJlYW0K4paBZHJhd2luZ3MK4paBZW5oYW5jZW1lbnQKb2tyYXQK4paBSXNzdWUK0LLRgNCwCkN1cnJlbmN5CuKWgXd5bgppemFycmUKw6l0aWNvCm11bHRpcGxlCuKWgVJhdGUK4paBSWNoCuKWgUF1c3MK4paBRm9ybWVyCkN1cnZlCuKWgW1hcnZlbAphdHRybwriloHRgdC/CkJPT0wK0YHQuNGPCmdvbGQK4paBTmludGVuZG8K4paBU2FsdmFkb3IK4paBU29sdXRpb24KQURDCtCx0L7RgNCwCuKWgUJlbm5ldHQK4paBRlIK4paBcHVlZGVuCnBhdGllbnQK4paBUEcK4paBSmluCuKWgWNyYXNoZWQK4paBZGVuZW4K4paBU2FtcGxlCuKWgVF1ZWJlYwppdG9yaWVzCuKWgWJsaW5rZWQK4paBbGlvbgriloF2b2NlCuKWgUltcGFjdAriloFNYXUK4paBTmllCuKWgWxvYgriloHQtNCy0LUKb3JuZXlzCuKWgWNvYXN0YWwK4paBc2Vuc29ycwriloFYSUkK4paBaWxsdXNpb24Kb2ppCuKWgUlOQwriloFEdW5jYW4KeWsK4paBYWZmZWN0aW5nCnB1bAriloFOYXBvbGVvbgriloHQsNC60LDQtNC1CuKWgWNvbXB0CuKWgXByb2ZpdGFibGUKbG9lCuKWgWRldXhpw6htZQriloFXQwriloF2aWFibGUK4paBRHJ1ZwpUZXh0Qm94CuKWgWx1bWlub3MKYXV0w6kKeWMKxaF0xJsK4paBYWZmaWxpYXRlcwppbGRhCmNvbmR1Y3QK4paBZWJlbmZhbGxzCuKWgUFNRAriloFNb25pdG9yCuKWgUNvbXBhbmllcwriloFjb3JyZWN0ZWQKw6RjawpTWVNURU0Kb3RoZXJhcHkK4paB0L/QtdGA0LXQtAriloFibHVlcwphdGlzZgphbHRob3VnaApyb3N0ClNDQU4K4paBUkFNCtGG0ZbQvtC90LDQu9GMCuKWgXZlbmRvcnMK4paBY3VzdG9tcwriloFhY3RpdmF0ZQriloFibG9ncwriloFicmFjZQriloFzdHJhdAphbmplCtGJ0ZEK4paBdGlkZQriloFCcmlnYWRlCmdldE9wZXJhbmQK4paBYWxpbWVudAriloFhY2hpZXZlbWVudHMK4paBc3VzcGljaW9uCuKWgXRvdWNoZG93bgpicm9hZAppb3JlCkNvbXBhcmlzb24K4paBbXVtCkVuZ2xpc2gK4paBUGljdHVyZQriloFNb3VzZQphbWQK4paBW2AK4paBZGVub21pbgriloFBbGVrcwriloFwcmV2ZW50cwrDs2IKZmVkCuKWgVByYXkK4paBc2hpbmUK4paBY2x1dGNoCm11eApBcHBybwriloFub3RhYmx5CmNoaW8KbmFnZQpIQVMK4paBJykK4paBTWljaGUKdGcKOjp+CuKWgWFtZWx5CuKWgXJvZHoKenMKdHJhaXQK4paBa2xhc3MKZsO2CuKWgWRlc3RhYwriloFDbGFyYQpmcmVxdWVuY3kK4paBR2l0CuKWgdC/0L7Qu9GMCuKWgWZyZXF1ZW5jaWVzCuKWgWZlYnJlcm8K4paBc3R1bWJsZWQK0LrQvtGOCuKWgU5hbWVzCuKWgUZsaWdodAriloFwcmV5CuKWgW1lZGlvCuKWgVZBUgriloFGbG9hdAriloFFcm5lc3QK4paBTWFyY2F0b3JpCm9wb3J0CuKWgWNhbmNlbGxhdGlvbgriloFCcnlhbgrigJTigJTigJTigJQKTHVjCuKWgWxpYnJlCuKWgXTDrXR1bG8KKj4K4paBU2FuZHkK4paBTWFyaW5hCkJlZW4K4paBd2FsCuKWgUt1bHR1cgriloFleHBsb2RlCuKWgWxpbWl0aW5nCuKWgXByZXN1bWFibHkK4paBcGIK4paBTWVyYwriloHRgNC10LrQuApsZWFybmluZwpDYXRhbG9nCuKWgUNlbnN1cwpsdGUK4paBTkVUCnJhaXNpbmcK0YHRjNC60LUKc3RhZmYK4paBUXVpbm4K4paBbWVtb3JpYWwK0L/QvdGPCuKWgWN1ZW50YQriloFYSQpsYmwK4paBdmFyaWVzCuKWgWZsdWN0dWF0aW9ucwriloHQtNC+0LvQtgriloHQvtGB0L7QsdC4CuKWgXdhcmVob3VzZQpIb3dldmVyCuKWgWNvcnJlY3Rpb25zCmRoZAriloFmYWxzCuKWgWNvbnRyb3ZlcnN5CuKWgWN1cnNlCuKWgXTDqWzDqQrFmWVkCuKWgUFVCuKWgdGC0L7RgAriloFjcsOtdAppZGFuCmlsaWFyeQriloFQYW5lbApjdWxlCuKWgVBvb3IK4paBQkEK4paBaWdub3JhbnQKw6htZXMK4paBYWVzdGhldGljCkxpbmtlZApnZXRJbnQKVW5pY29kZQpbQAriloFaZW50Ck1hbmlmZXN0CuKWgXZhcnMKUEIK4paB0LLRgwriloFEZXNjcmliZQriloFBbnl0aGluZwpvaXJzCuKWgXNvY2tzCuKWgWltcGVkCuKWgW5ldWUK4paBZGlzcGVycwpDb2xsZWN0CmZpbGVyCuKWgUZyYXUK4paBSG9ja2V5CuKWgXRlZW5zCuKWgVJvYmVydG8KbGF1ZgrQstCw0YLRjAriloHRgdC60L4KaXNBcnJheQriloF0ZWVuYWdlcgpCdWlsdAriloFsb3VkbHkKQ2FwYWNpdHkK4paBYWR2ZW50dXJlcwriloFNb2xseQpyZWNvZ24KYmFycwriloFMb3IK4paBcHXDsgriloFtb25nCmluZW1lbnQKQXNzaWdubWVudAriloFkaXoKbGVzc25lc3MK4paBSGFsbG93ZWVuCuKWgWJpdG1hcApSb20K0L3QsNGACuKWgXJlYmVsCuKWgXJhZGlhbAptZWFzdXJlCm5pdAriloFBc3N1bWUK4paBYXNzaWdubWVudHMK4paBSXNuCuKWgWFsdHJlCsOfZXIK0L3QsNC70YwK4paBZmxpZXMK4paBZHJvaXQK4paBdGhpY2tuZXNzCuKWgWVuam8K4paBZHdlbGwK4paBaG9tb3NleHVhbAriloFldmFsCiRfewphc2lhCuKWgXBoaWxvcwpnZXRDdXJyZW50CuKWgXZldGVyYW5zCuKWgUJlcmtlbGV5CuKWgXdpbGRsaWZlCkNvcAp2ZXJuCuKWgcOaCnRvcwriloFMZWQK4paBa2V5d29yZHMK4paBbWVkaWNhdGlvbnMKbmV1bQriloFqYW1haXMK4paBQnVjCuKWgVBECuKWgVN0YXRlbWVudAriloFQSQriloFKYWNraWUK4paBb3JkaW4K4paBa8O2cgplbnplCuKWgXV0aWxpemVkCsOhY3QKYXplZAriloFzZXZlcmVseQriloHDpHZlbgriloFsaWJybwriloFFdQrDpHN0ClBBUlQK4paBQnV0bGVyCuKWgXB1enpsZQpGYWxsCkNvdW50cnkKcGZuCuKWgdGD0LrRgNCw0ZfQvQriloFPcmNoZXN0cmEK4paBYWx0bwriloFhbmNvcmEK4paBZGVjb21wb3NpdGlvbgriloHZhQriloFhcHBldGl0ZQphZHUK4paBVEhBVAriloFjb21lbnoKbWluYQriloFpbml0aWF0ZWQK4paBVGF0CuKWgXNvbWV0aW1lCnJlawpicmVhZAriloFTdGF0aXN0aWNzCuKWgUNvYgpGb2xsb3cK4paBZ2VvbWV0cmljCtGI0LvQsAriloFwcm9jZWVkaW5ncwpEbGcKc2V2ZW4K4paBWy0K4paBQnVmZmFsbwriloFibGFja3MK4paBc292CuKWgWN1c3RvZHkK4paBcmFzCuKWgXRhdHRvbwrDtmZmZW50bGljaHQKQmxvCkF1c3RyYWwK4paBcmVjdXBlcgrQu9C10LIK4paBYmVtCuKWgXRob3UKb3JpZW50ZWQKdmlyCuKWgWNvbG9ueQriloFTdGFuZm9yZApBYnNvbHV0ZQphZHJhdAriloFTaXR1CuKWgXNvdXZlbnQKRVhFQwriloFtxbEK4paBYXBhcnRtZW50cwriloHRgdC70YPRh9CwCuKWgWFubwpXSU5ETwphY2NpCuKWgUxhdQpjb3VydAriloFtYW5pZm9sZAriloFjb2FsaXRpb24K4paBWElWCkF0dHJpYgphc2NhZGUK4paBd2hlYXQK4paBc3RyZW5ndGhzCkZSRUUKRU1QVFkK4paBaGV5CmFzY3VsYXIK4paBcGxhc21hCuKWgWJvYgpTZXBhcmF0b3IKPSIkewriloFaYWcK4paBcHJvamV0CuKWgXNtb290aGx5ClNFUVUKYW5hbHkKYXR0YWNobWVudAriloFFUwriloFwb3BwZWQKxZFzCnRvbQriloFzw7NuCuKWgXJvdHQKVXRpbGl0aWVzCmhhZG9vcAriloFzb3R0bwphdXRvcgriloFHZW9yZ2VzCuKWgWt0ZXLDvQriloFncnVwcG8K4paB0LrQvtCz0LTQsAriloHQvNC10LTQsAriloFpbnN0cnVtZW50YWwK4paBV3JpdGVyCuKWgXNldFRpbWVvdXQKaWtrCuKWgURvcG8KXSk7DQriloFwcmFjdGljaW5nCuKWgVJvbmFsZAriloHRg9Cx0LgK4paBYWdyZWVzCuKWgWRlbm90ZWQKaXNtaXNzCuKWgWludGVydmlld2VkCnRlbXBsYXRlcwrFmWkKYWRtaW5pc3RyCuKWgUJ1dHRlcgriloFYVklJCuKWgXBvc2l0aW9uZWQK4paBRm91cnRoCuKWgW92ZXJ3aGVsbWVkCuKWgVJlZ3VsYXIK4paBcmVwcmV6ZW50CtC60L7QvdC+0LzQuAriloFleHBlY3RzCkluZGljZXMK4paBbWFyaWp1YW5hCuKWgXphagriloFCcmVuCuKWgWJlZ2cK4paBbmFobQriloFpbnRlcnJvZwrRgtC40LUK4paBQnVuCuKWgdGB0LXRgNC10LQK4paBc2hlbHZlcwriloHQutC+0YLQvtGA0YvRhQriloFGcmF1ZW4K4paBU2VyZ2VhbnQK4paB0YPRgdC/0LUKbWF0Y2hlZAriloFkb25uZQriloF0b3VjaGVzCmFib3J0CuKWgXZhbGUK4paBaW5zdGl0dXRpb25hbAriloFNb25zCuKWgWFtYml0aW91cwriloFub25ldGhlbGVzcwpqZArQv9C10LkK4paBYmFja3BhY2sKZGFvCtCy0LjRjwriloFzdXJyb3VuZGluZ3MKfF97CuKWgWdlZ3LDvG5kCmRpc3AK4paBbW9pc3R1cmUK4paBd3lkCuKWgXRyYWRlcnMK4paBRXJzdAriloFHYWxheHkK4paB0LLQvtC70L4K4paBUGVydQriloFwcmlvcml0aWVzCuKWgXByb25vdW5jZWQK4paBQ0JTCuKWgVBhbG0K4paBZXhwYW5zCuKWgWVuZXJnZXQK4paBQ29uZGl0aW9uCuKWgVN2ZXIKbmVzdGVkCuKWgdGE0LXQstGA0LDQu9GPCmhlcm8K4paB0LrQvtC70L4K4paBRmlsbXMKQm9uCsOpYWwKcGxveWVkCnRyYWluZWQK4paBZWxzxZEK4paBbHVzdAphdGludW0Kb3lsZQriloFKZXQK0LbQtNC10L3QuNGPCuKWgXN1cnZleXMKYmVlCndvcmtlcnMKcmVjb3JkcwpjYWxlbmRhcgpiYmluZwpyZWdhdGlvbgpkYXNoYm9hcmQKS2luZwriloF2aXN0YQriloFkZXBpY3RlZAriloFvY2N1cnJpbmcK4paB0L7RhNC4CuKWgXNhbmR3aWNoCnJjdQprZXJuCuKWgW1pbnV0CuKWgdGB0LzQtdGACuKWgXRkCnNvbGV0ZQpDb21wbGV4CuKWgXR1bm4K4paBc2NhcmMKc3RlYWQK4paBRmFpbAriloFScwriloF0cmFpbHMKa2VtCuKWgVJvbWFucwphdGl2aXR5ClByZXZpb3VzCuKWgWRlcHJlc3MK4paBcmVzaWduZWQKZ2V0RGVmYXVsdAriloFUaWJldAriloFGcmFuY28KIikpKTsK4paBaW5qZWN0aW9uCnJlbW92ZWQK4paBcHJhaXNlZAriloFBc2MKZXJhc2UK4paBY29tbWlzc2lvbmVkCk1BSUwK4paBQm9oClBvbHkK4paBY2lucQriloFBYm92ZQriloFKb3NodWEKWkVSTwriloFzdW1taXQK4paBVXJzCuKWgWN1cmwK4paBdmlzYQriloFyZXN1cgo9eycKZmVhdAriloFhYnNvcmIK4paBcGxhbmV0cwriloFwcmluY2VzcwriloFKYWhyaHVuZGVydHMKeHAK4paBTkJDCuKWgdC60L7QvNC4CuKWgUZVTgriloFuZXVlbgriloFkw6lqw6AK4paBT3oKYmJlbgpWSURFTwriloFlamVtcGwK4paBY29uc2lkZXJzCmF0cmkK4paBYXJyb2cKaW9zbwriloFoYWNlCuKWgWNvbnRhY3RlZAriloF1bnBsZQriloFzcG9uc29yZWQK4paBdHJhaW5lcgpzYmkK4paB0LfQsNC90LjQvNCwCkNyaXRlcmlvbgrQvdC+0YLQvgpzY2hlbWUKZW5uaWFsCnBlcmZvcm0K4paBZml4aW5nCuKWgdC/0L7RgdGC0YDQvgphcmIKRVhJVAriloFjYWbDqQppdHV0ZWQKcmlhZ2VzClR1cgriloFoYWJlcgplbGFzdGljc2VhcmNoCuKWgdCw0LsKcmgK4paBdm9sbApDTFUKTWlsCuKWgW1lbWJyZXMK4paBcmVtYXJrZWQK0LLQsNC90LAKPSJfCkxlc3MKKCIiKTsK4paBWWFsZQpiZXJyaWVzCuKWgXJlbGVhc2luZwriloFpbXBvcnRzCmlkZWEK4paBKCsK4paBYXJxdQppZmljYWNpw7NuCuKWgdC/0LDRgNCwCuKWgVJhbmdlcnMKTWljCuKWgW5lZGVyYsO2cmQK4paBaW1hZ2luYXJ5CuKWgXNwZWNpYWxpc3RzCuKWgWhvb2YKTW9kdWxlcwriloFzYWRseQpjZWlsClRhYkluZGV4CmF0aW9uYWxlCuKWgVBhcnRuZXIKdGJvZHkK4paBbGV2ZXJhZ2UKRE4K4paBUHJlYwriloFTw6kK4paBTWFtCuKWgWFmaW4KaXNWYWxpZApQc2UK4paB0YHRgtC+0YDQvgriloFjaG9wcGVkCuKWgU1pbm9yCuKWgWRhYmVpCkRhdmlkCnVzc2lhCuKWgdC00LXRgNC10LLQvdGPCuKWgUlkZW50aXR5CuKWgUxHQlQK0YbQuNGY0LUK4paBT3J0cwriloFwYXJ0aQriloFCYWNoZWxvcgp1Z2EK4paBT1BUCuKWgVNldGgK4paBTElBQkxFCuKWgWluYXVndXIK4paBU2hhbmdoYWkK4paBcmVsYXhpbmcK0YbQuNC+0L3QsAoiJQriloFvYmV5CuKWgUFpcmxpbmVzCkxpbmtzCuKWgUNlbHQK4paBQWRtaW4KYWdhdGlvbgriloF3b3JyaWVzCklOVEUKYXJpdGgKRmF0YWxmCl1dKQpjb2xtCuKWgWFyY2hhZQriloFicnVzaGVkCuKWgXTDpHQK4paBc3RydWN0dXJlZArRgtC40LgK4paBaG9tZW0KWzosCuKWgW5hdnkKZ2V0S2V5CnBvd2VyZWQK4paBc3Vja2VkCuKWgXpvbWIKaXNzYW50CuKWgU1pZ2h0CuKWgVB1bGwKcmlyCuKWgdC/0ZYK4paBc2VhcwriloFXcmVzdAriloF0ZW5zZQriloFhdG0K4paBaGF2ZXQK4paBcGllcndzCuKWgXRyYWdpYwriloFEaWZmCuKWgWNvbmZpZGVudGlhbApzdWNjZXNzZnVsCsSZxbwK4paBQ2hhaW4K4paBS2VueWEKQ2hvaWNlCm9jdXIKYW5pdQriloFjb25zdWx0YW50CuKWgUFkdmlzCkxpZgriloFMb3JzCmF2b3JpdGUK4paBdXRpbGl6aW5nCuKWgXZpbnRhZ2UKTWF0Y2hlcgriloFtZW1icmUK4paBRXhwZWN0CuKWgXRyYWNpbmcKbm9nCuKWgWRlagriloHRg9GH0LUK4paBbG9vcHMK4paBb25jbGljawriloFHUFUK4paBQWxidW1zCuKWgUFyY2hpdmVzCtCy0LDRgtCwCuKWgXN0b3ZlCtGI0LvQuAphbmNpZXMK4paBZ2VtZWVudGUKbW9iClBERgplc28K4paBdsOpZwpSZXNvbHZlCuKWgXRlYWNoZXMK0LvQvtC20LUK4paB0YHRgtCy0L4K4paB0J7QtNC90LAK4paBZmlkClNvbWV0aGluZwriloFuZWJvCuKWgVZhbGVudGluZQpyb3duaW5nCuKWgdCw0LvQtQphd2kKaXNoaQriloFTUEkK4paBc3BlbAriloHQsdGW0LvRjAriloFwYXJ0aWNpcGFudAriloFOZWQK4paBR2FzdAriloFibG9uZAriloFzYXZlcwpjb2xvcmVkCuKWgUFDVElPTgriloFQb2xpdGlrZXIKfSQpCuKWgUR1bQpkZW50cnkKU3R1ZGVudAriloF+PQpsb2FkcwriloFGb3N0ZXIK5LiA5LiqCuKWgVBLCuKWgVNCCuKWgUhlcm4K4paBRXhoaWIKTGlzdGVuZXJzClN1bgpwbGFjCuKWgUJldmVyCuKWgWluY2x1eQriloFkYwphcmdjCuKWgWdlZArRgdC/0LAK4paBRm9ybXVsYQriloHRgdC10LwK4paBZW1wdAp1bnJlZ2lzdGVyCuKWgVF1ZWVuc2xhbmQKw6FuZGV6Cm90aXZlCuKWgWFsbGV5CuKWgURlbW9jcmF0CuKWgXRyYXZhaWwK4paBJCwKUlAK0YDQvtC1CnBlcnNvbmFsCuKWgXDDqXJpb2RlCkhPTUUKb21lcwriloFyZWNvZ25pc2VkCmhlbmcK4paBSnVuZwriloFSb2xhbmQK4paBY29udmljdGVkCkxvY2tlZAriloFtYXJpCuKWgUx1eGVtCnJlZmVydG8KRGVsZXRlZAppbnRlbnQK4paBU3RhYXRzCuKWgdC+0LHQu9Cw0YHRgtGWCtC40YIK4paB0YHQsNCy0LUK4paBUHJvdG9jb2wKYWrEhWMKY2hrClR5cGVJbmZvCuKWgXBrdAriloFzY2FuZGFsCuKWgWluZGl2aWR1YWxseQpGTVQK4paBbmoKYWJpbGUK4paBUml2ZXJzClBST1BFUlRZClZCCndvcnQK4paBc3BsaXR0aW5nCmFjaHRlbgriloFBUklTSU5HCuKWgXNpcAriloFmcmVzCuKWgWdyb29tCkhvbAriloFjYW5vbgriloFhYnJ1cHRseQriloFhZnRlcndhcmQK4paBUnVubmluZwriloFqaQriloElLAriloFQYWxlc3RpbmlhbgpSVwpwZ2ZzY29wZQriloFjb3VudHJ5c2lkZQriloFmb3J0dW5hdGUK4paBY8OpbAriloFQb2ludGVyCmVuc29ycwpyYXRpbmcK4paBYnVmZmVycwriloFyZW1vdAriloFQcm9wVHlwZXMK4paBTmFoCmFsdGVybgriloFlYXNpZXN0CuKWgWludmFzCuKWgWNsawpjb3B5cmlnaHQK4paBYmxhbmMKU0FNUAriloFDb2hlbgriloFTaGVsbAriloFkZXN0cm95aW5nCuKWgVplbApkYXRlcgrEjWVuCuKWgWZpbGluZwriloFpbnRlZ3JhdGUKeGl0CuKWgVJFVApsZW5lCmNhbGxzCuKWgXNsYXVnaHRlcgppbml0aWFsaXplZAp1bmNoZXMK4paBVHJhY2UKZWZmaWNpZW50CuKWgVdvb2RzCuKWgWxvbmdpdHVkCkdOCuKWgUtvbnQK4paBY2h1bmtzCsOhY2gK4paBdW5lbXBsb3ltZW50CmFjb20K4paBc2xvd2VkCuKWgW91dGxpbmVkCnhmZmZmCuKWgWlra2UK4paBd29ya3NwYWNlCk1jCuKWgWtpY2tpbmcK4paBZW1iZWRkaW5nCmNobml0dAplcnRlbgriloFJbnRlcmlvcgriloFTb25ncwptbWMK4paBYW5hbHl6ZWQK4paBQ291cGUK4paBZmF2b3JpdGVzCuKWgXR0CuKWgdGC0L7QuQpSb3V0aW5nCuKWgVNpbHZhCuKWgWFuZGVyZW0K4paBaG9ub20K4paB0LjRgdC/0L7Qu9GM0LfQvtCy0LAKLiJdCuKWgVd1CmxlZ3QK4paBc3Bvb24K4paBamFwCuKWgUV4dGVuc2lvbgplcm5lCuKWgXZhZ3kK4paB0YHQtdC70LAK4paB0YTRg9C90LoK4paBYW5hbHl0aWNzCuKWgXN1ZwriloFBc3luYwriloFwZWFrcwriloFHeW0K4paBbGF3c3VpdAo8PgppYWxpcwpldHJpYwpmYWNlZAriloFkaXNydXB0CuKWgWbDpQpJbnB1dHMKYCk7CuKWgU1lbmQKZ29uCuKWgSIsIgriloFuZXJ2ZXMK4paBZG91YnRzCnNhcAriloFzb3cKLFwsXAriloFCUwriloFHbGFkCuKWgWFzdGVyCsWTdXZyZQriloFCYW5nbAriloFpUGFkCnVzZXBwZQriloFjb25kdWN0aW5nCuKWgSh7XAriloFIYXJib3IKcHN6CuKWgUZJRkEKXyoqCmVtb3IK4paBCmUKdAphCm8KaQpuCnIKcwpsCmQKaApjCnUKbQpwCmcKZgouCnkKLApiCncKdgprCl8KKQooCi0KMApTCioKSQpUCiIKMQpBCicKQwp4CjsKPQo6Ci8KRQoyCnsKfQpQClIKTQpcCkQKTApOCkIK0L4KTwrQsAp6CkYKfAo+CmoKSAozCiMK0LgK0LUKOQpxCiQKRwrQvQpVClcKNAo1CjgKNgrRgArRggo3CtGBCjwKVgrQsgpbCl0K0LsK0LoKSwrDqQpKCtC0CiYKDQpZCtC8Cj8K0YMKKwrQvwohCuKAmQrQswrRjwrQtwrRlgpYCl4K4oCTCtCxCkAK0LkKw6EK4oCUCtGMCiUKUQrDswrRhwrDrQpaCtGLCsOkCtGFCmAK0YYKw7YK4oCcCtC2CsO8CuKAnQrDoArDqArRiArRjgrFggrQoQp+CtGECtCfCsK7CtCSCsKrCsOlCtCaCtGJCsK3CtGYCtCcCsOnCtCQCtCdCtCgCtCRCsSNCsO6CsSZCsOjCsSFCsSDCtCUCtGXCtGKCsSbCtCTCsWhCtCeCtCiCsOqCsOxCuKApgrFvgrDnwrRkQrFvArFmQrFmwrQmwrFkQrigJ4K0Y0Kw70K0KMKw6IK0JgK0ZQK4oCYCsOuCtCXCtCkCsOyCuKAogrEhwrDiQrCsArImQrQpQrImwrDtArQlQrFhArQpwrQqArDuArDuQrFrwrnmoQK2KcKw6YK0ZoK0ZkKw6sKw68K0K0KwqMK4oiSCu+8jArDtQrRmwrCrQrQpgrQhgrEgQrFsQrigKAK2YQKxY0K4oCLCsK6CtCvCuKAsgrDgQrDlgrCsgrQlgrDrArjgIIK5pWwCsOXCtixCs6xCsyBCtCuCsO7CsWTCsSxCtmFCtmGCsKqCsW6Cs6/CuKAswrigqwKw5wK2YgK55SoCsOACsSMCsWgCtiqCtivCuS4gArCvwrmmK8K2YoK0ZIKwq4K24wKzr0KxJEKz4QK4pSACs65Cs61CuKGkgrYqArDhQrFqwrihJYKxZ8K5LiNCtGfCuODvArkuK0Kw44K44GuCu+8mgrkuKoK0JkKz4EK5pyJCsOECsKgCsSrCsKpCuS4ugrZhwrXmQrXlQrml7YK2LMKxZoK5ZyoCuS7tgrlj5YKz4IK4oSiCuydtArPgwrOvArlrpoK5paHCuaNrgrnva4Kxb0KwrEK6KGoCuaIkArFiArOuwrCoQrDiArPgArlrZcK4pSCCtCICuWbngrQhArliLAK6KGMCsKnCsK9Cti5CuOAgQrFgQrri6QK44OzCs66CuWQjQrXlArlhaUKzrcK5aSnCuWvuQrlj68Kw4IK5LiKCuKWiArmlrAK2YEK5YqgCuimgQrFuwrkuIsK5YiGCuWAvArXqgrlh7oK57G7CuivtwrCkgrmga8Kw5oKz4UK6I63Cuekugrku6UK16gK5o6lCtecCuOCkgrlrZgK5L+hCuiuvgrmlrkK2LQK6IO9CueCuQrkuroK5YmNCsSfCuS9nArilZAK4oaYCsOwCueQhgrilqAK5rOVCu+4jwrLiArmnpwK5Y+RCtitCs6zCsm1CuC4sgrZjgrkuoYK5oi3CsONCsmZCuOCuQrmn6UK44GXCteeCuWNlQrFpQrZggrjgosK6Ze0CuWmggrmnKwK5ZCOCs6vCuW8jwrjg4gK0KkKw5MK44GZCteQCueUnwrliqgK2qkK5ZKMCuOBhArCgArhg5AK6rCACu2VmArvv70K5bCPCui/lArlkKYK2KkK5pelCuuhnArmoIcK56CBCuWcsArkvY0K7JeQCuKAigrliJcK7IiYCs6yCumZpArkvb8K16kK2KwK44KkCs60CuiHqgrkuo4K7KeACuW9kwrmiYAK6riwCuGDmArXkQrguKMK4piFCuWtkArlj7cK2YMK5Y+CCuWeiwrjgasK64qUCui/mQrlvIAK4LiZCuS8mgrlmagK6Z2iCuODqwrlm74K5bqmCu+8iQrvvIgK7J2YCuWGhQrsnYQK5pyACsKUCuWMlgrlu7oK64uICumHjwrwn5iCCuWniwrEkwrYrgrrpbwKzqwK6L+HCsKzCsK0Cue7hArlip8K4oCOCsKfCuWMugrYsgrSkQrPjArjg4MKz4kKw4cK6YCJCumAmgrnu5MK5b2VCuaUuQrjgq8K55uuCuaMhwrliqEK4LmQCui+kwrjgZ8K4LitCuWFswrjgacK6LCDCuCkvgrsoJUK5ZCICuW3sgrsi5wK6YOoCumhtQrilIEKy5AK44G+CuaIkQrmsYIK5biCCuasoQrXoArlrp4K5bCGCumHjQrmm7QK5Yi2CuespgrphY0K6LGhCs64CuC4gQrjgaYK6L+bCumcgArEkArmgKcK6K6kCuadpQrpopgK56iLCuaooQrvvIEK5aSxCuWPowrjgaoKzq0Kwp0K56m6CuKAjQrmnJ8K6ICFCuOBrwrQggrmj5AKzq4K44OpCu2VnArmgIEK5aSNCuC4hwrhg5QKw5gK66asCuS/rgrigJoK5b6XCuWkmgrmoLwK7J6QCteiCuC5iArlh70K5bqUCuKGlwrgpY0K4LmACuatowrms6gK7IqkCuyEnArjg6oKz4YK2LUK44GMCuWImQrmtogK6IqCCuW6jwrku6MK7IKsCuOBqArXkwrguYkK4KSwCuatpArkv50K44KiCsawCuyduArElwrlpIQK5YigCsmbCuWuuQrYtwrCkwrkuYsK5YyFCueKtgrjg4kKxLAK5L2TCuWQjArkuosK8J+Zggrjgr8Kz4cKyr8KyJgK5Li7CuWTgQrXpwror6IK5YibCuivpQrjgIAK5YWDCuesrArlpKkK5oiWCuW5tArovawK15cK5LygCsWjCui3rwrkvosK5py6CsODCsSPCumrmArnm7gK4LmCCueJhwrigJUK5pONCtWhCuC4oQrlhagK5pegCuaciArnp7AK4LixCuWwsQrCmQrmmI4K6K6hCuS9oArotKUK5a+GCuinowrjgowK2KMK5Y+YCuautQrmnaEK6buYCuKXjwrguKUK6ImyCuaWrQrllYYK150K44GLCumHjArns7sK57yWCumUmQrtirgK5Y+qCuWOvwrhg6EK5bi4CuWInQrJlArOkQrjg5UK4pa6CuetiQrsnbwK44O7CsWMCuaDhQrnjrAKxZgK2ZAK44GVCuG6oQrsmqkK6K+BCu2VtArmiYsK5pSvCuyehQrmnI0K4K+NCumBkwrslrQK6YCBCui9vQrpmZAK57q/CuWxngrClwrku5YK5pS+CuiusArlhawK5rKhCua3uwrmmL4K4LiaCuC4ogrhg6AK5YW2Cumbhgrph5EK5Zu9CuS7uwrblQror50K5bm2CuiiqwrPjQrpg70K2q8K5oSPCtebCue7jwrshLEK55yLCtekCuWdgArXoQrrk5wK5LqkCsK8CtCPCuWujArOlArkuYkK67O0CuWQkQrmjaIK5bGxCueulwrkuowK2b4K4oGECuWIpArnuqcK5belCuC4lArioIAK5a62CuODrArkuIkK5Y6fCuOAkQrplb8K4Ka+CueuoQrRnQrgpJUK5a2mCuODrQrpqowK5YaZCsWSCuS7jgrjgJAK5pS2CuG6owrmnKoK55m7CuqzoArmupAK5q+PCsK1CuivrwrjgooK7JqUCuaMiQrguKcK5p2DCuaguQrjg5cK5LiyCuC4qgrigLoK7KCcCuOCtwrFngrnoa4K5aW9Cue7nwrmlYgK572RCgEK54mpCuyVhArkuZ8K7J2ACuG7hwrgpKgK6aG5Cui1hArjgZMK5byVCuOCuArguIQK54mICuC4lwrlubMK5LusCuS4jgrjgY0K56e7CuCkvwrntKAK5omnCuyjvArigJAK0pAK4Li1Cuadvwrpl64KzpUK5a6JCuuptArshowK4LiVCuC4tArmjIEK7Iq1Cs6jCuOCiQrjgrMK5b+DCs6gCuaJkwrjgI0K7IOBCuOAjArmo4AK5bqTCsO3CuycvArmtYsK44KTCuClhwrZjwrlipsK55u0CueUsQrZiQror5UK5b+FCuerrwrKuwrlhYgK4oaRCuWRvQrrj4QK7KCECuC4qwrlkZgKyaoK7J6ICuavlArhuaMK5pmCCuaLqQrYsArjg4YK4oCMCuaehArlpIcK6re4CumTvgror7QK4YOaCtefCuetvgrjgYYK2LoK4bq/Cti2CuG4pQrlkK8K66ClCuGDnQrku5gK4YObCue0ogrnibkK15IK6KW/CuuMgArilJwKwpYKwo4K5aSWCtemCuWktArov54K5rWBCuKXhArjg4cK44KrCuCmsArsmKQK5om+Cua4hQrwn6SjCuWOuwrigrkK6rK9CuOCsArZkgrCogrlm6AKwo8KzpoK5aKeCuefpQrCtgrlg48K4pmlCu2EsArjgY8K4bqtCuODoQrDhgrnnIEK4KS4CuCkrgrinaQK44GCCuagtwrotbcK5Y+wCuivuwrop5IK5Y2XCuaVtArorqIKDArXmArjg54K4KeNCuyasArVtgrmgqgK2KYK5Z+6CuawtArsg50K4oCRCuuCmArnlLsK5o+PCuWHuwrjgaMK6528CuGDnArWgArkuJoK4YORCuWIqwrimaYK44KjCuCkpArnu5kK66y4CuW9ogrmjqcK54S2CuuPmQrQigrigaAK5LicCuC4mwrlt54K5o6SCuyEuAroo4UK7ZWgCsSGCuKIngrmtbcK5Z+OCumUrgrlvoQK7Zi4Cu2ZlArhn5IK5paZCsahCuClgArjgqYK5YW3CuODlgrlnZcK5YaNCuG7kQrnlLUK77ybCuychArkuKQK6ICMCuyepQrYogrImgrjg5AK6L+YCuS7pArjgq0K2ZEK6rCSCuuyiArrp4wK5oC7CuCksgrilrIK5byCCuWFiQrlrqIK6Z2eCuG7iwrCgQrDvgroqK0K6L+wCu2VqQrvvJ8K4pyUCuWvvArhuYcK67aACsuZCs6kCuOCggrqtawK6ZWHCuyekQrilpEK5q2lCuG7mQrmtLsK4LieCuKGkArHjgrguIgK5p2fCtmACsKRCumCowrgpKoK44KoCuW/lwrkuYgK6L+QCuWMlwrotoUK4LyLCuW4gwrPjgrNoQrlsJEK7YyMCsqDCuODoArClQrljaEK4KaoCs6cCsmRCvCfmIkK6L6RCuybkArnvo4K5LqnCuWIqQrrqqgK6IGUCueVjArssrQK56eNCueOiwrEvgrsl6wK66mUCuWfnwrhg5UK56uLCuuhnQrqsowK2KUK4bmtCuelngrVuArpn7MK4piGCsORCuyhsArli5UK57yTCuqzvArmiqUKyrwK4Z62CuuQmArVpQrop4YK4LiKCuivpgrguYEKwqYK5oqKCuCulQrgpr8K7LacCuu5hArovrkK5qGGCuCktQrjgrUKzpkKzp8K44KqCsK+CuWOhgrFjwrpl6gK4LiCCuWQqwrCrArlkagK5aGrCuW+hQrguLAK4YOTCtCHCuminQrsnYwK5ZubCuOBoArtmowK5q2iCueOhwrnjq8K44ORCuuemArpl60KzIAK6K+tCuqwnArouqsK6JePCuCkrwrrkJwK5Y2zCuaLiQrshKAK67OACuKJpQrguLgK5LqbCvCfpLcK44GbCuW3pgrhu6MK5Y+zCuG7gwrrgrQK1rwK15YK4KeHCuWRigrhuqUK55m9Cui0pgrotLkK5rGfCuOBvwrigLkK4LmMCsKHCumAoArkvYYK5Y2BCuWugwrgpIIKxYsK0Z4K44K7CuWlswrio78K1asK5LqsCuinpgrtlagK65OkCsSACsKYCuefswrjgogK55SwCuaYkwrop4QK5bGVCsKvCuWBmgrmmJ8K4YOjCuKckwrhg5cK5L6bCuuqhQrOvgrlt7EK5LiUCuaPkgrmma8K5YiHCuC5hArsl4YK44OnCuWPigrOnQrrr7gK2KsK642wCuS7twrkuaEK4KS5CuODgQrnnJ8K5aSqCuC4uQrjg4AK5bGACuKZggrpgIAK4K+BCuCmlQrgrr8K5L2VCvCfmK0KwqUKwo0K4omICuWPuArlsYIK7IukCuermQrpppYK5qy+CuGemgrplpMK1rgK7KCACuebkQrjgqEK5YaMCuahiArgpYsK5Y+NCuWQrArml48K5p6QCuC4twrnp5IK6rO1CsKcCvCfmoAK6rGwCuyerArCggrloLQK5bm/CuaSrQrilZEK4ouFCuaKgArotLQK5oOzCsqBCuG7mwrjg6MK7KSRCuOAiwrpgJ8K6aKRCumYnwrguLMK44GRCuClgQriiaQK4oaTCumhuwroj5wKzIMK5YmqCuuyhArjgqcKzpsK57uGCumBuArgpKYKwrkK6K64CuG6pwrkuJYK44OlCtihCuKAoQrlgJkK5YWxCu2BrArguJgK7ISkCuW/qwrlj4sK1rAK6L2mCuaOqAroirEK6KiACtqGCuiHswrplosK5qChCuWAiwrmnZEK44GkCuKWjArgrqoK6rKwCsWGCuS8mArhnpMK6L6+CuaguArjg4oK5Zy6CuW9sQrwn4+7CumSrgrYuArDngrilrwK44GKCuS7vQrlvq4K4budCuivhgrtlokK44CKCuC5gwrhu40K6aKECuCmrArgrqQKwpAKxbMK66eICuyVigrJoQrqs4QK7JewCuS6lArFuQrjgoEK5b6ICuqwhArnhKEK4Z6UCuekvgrDigrkuaYK6aG2CuGDogrmiY0K5LqRCuKUlArOtgrYjArmkJwK7IugCuycoArigI8K4pyFCuKtkArnhacK55+tCuW3nQrlvowK6IyDCuawkQrmsrsK56ugCuG7gQrrsJQK05kK4pqtCuayswrorroK44GICs6pCuKImgrEggrOkwrlnZAK7KCBCuWBnArstpQK5Y+XCuKZgArKvgrmoJEK5p6XCuy5mArvrIEK4paSCuW8oArnnYAK6K6/CuiAgwrmlZkK4KSXCuWHhgrljbAK57K+Cueqlwrlrp0K44GhCuWbtArWtwroh7QK44OiCuuVjArpmo8K5YKoCuWGtQrpgq4K5q2mCuKblArnu7QK0q8K6LezCuCkrArmipUK4bunCu2RnArrsJgK6IuxCsqwCvCfkY0K4KScCuW4pgrngroK57utCsmoCuyymArigoIK7YG0Cue+pArtmIQK6aOOCui0rQrhnoAK6ICBCueVmQrnkIMK7ZSECuKWhArlj7IK0IkK4p+pCuu2hArhg5IK5bqXCuWuoQrro4wK66qpCueVpQrqtIAK1rQK56eRCui0pwrgrq4K57ucCumYswrhuKQK6LOHCuiLpQrgprgK24EK5a69CuingQrjgroK5ri4CuuwqQrhu5MKyb4K7Je0CuufrArXmgobCuGAugrkvZkK5ZONCue8qQrgrp8K6K+ECuWFgQrnprsK8J+klArQgQrKigrpu5EK6amsCuKfqArlgKQK566xCuyVvArhnpgKxZAK5oSfCuODhArhu6UK44OdCu2ZlQrlo7AK5oiYCtGVCuWkiQrsmYAK54i2CuODmQrliqkK7JeFCsqyCsO/CuWFhQrlvLoK5Y2aCuODnwrplIAK64u5CuiomArku4AK5Yy5CtaCCuOBnQrsvZQK4KayCsWtCuWNiArjg4sKEgrKkgrhg6gK5p+QCuOCqQrotrMK7YOACsOQCuGDrgrrpoQK5pyoCualvArstZwK57qiCsKoCuWPpAoGCuuLqArku4oKypQK4KSfCuCmrgrmlq8K6KqeCsW4CvCfmYQK54mMCuyViArhnp8K6aKcCu+9ngrlhYsK5rexCuq4iArmnIMK5bCUCumHigrmibkK7IKwCumHjgrpmLIKzpcK06kKz4gK44OcCsKaCuWQhArsp4QK6L+9CuWPpQroraYKzqYK0aMK4biNCuivjQrnlLcK6riACuyLnQrpmpAK67O1CuebmArDjArnlLMK6K6uCuOCtgrov5EK64qlCuCmrwrmnbEK6YCZCuCusArot50K6ZmiCuW+twrHkArpkogK4paACuKGlArmiL8K6Z2SCuaUvwrwn5iFCumAkgrgpqoK5rOiCuOCvQrnu5EK44OTCuG7hQrtj6wKEArhu60K65OxCu2ZmArlo6sK4KakCs6YCuy0iArlooMK5beuCumHhwrrlJQKxKkK5Y2HCuiDjArrsLAK6b6ZCuihlwrgs40K4bmbCuCngQrlvLkK6a2UCuqwnQrigLAK4oyBCuG8kArnpoEK4LicCtKbCuWztgrgrr4K4pmtCueZvgrhu6kK44ONCuS4kwrkvoYK5Yi3Cu2VhArVtQrhuq8K5Y2OCs6SCuCktgrCuArlsY8K5q27CumBjQrqsoAKzqcK6rKDCuWFqwrop4gK7YOdCuWUrwriiJkKwqQK7Y6YCuiuqQrplIEK66y0CuaAnQrpmpQKw5QKEwrhuYMK44OvCuS9jgrshZgK5Y2KCui+gwrhno8K5LqrCuenrwrCiArwn5iKCuWFuArHlArlha0K5L6/CsmQCueugArnu6cK5LuFCuWwvgrCiwrgrrUK1a8KwoMK7JiBCueBqwrmuZYK5pu4CuuwnArjg48K5b6qCuacrwrntZAKxLwK5LmQCua7pArsooUK4LiWCuG9tgrmu6EK4pWdCuOCjwrjgakK4LmHCu2YlQrlnIsK4buxCue3mgrruJQK5bCBCueiugrkvp0K1b0K5rC4CuyDiQrmrYwK5pW4Cuemjwrsgq0K5a6fCuugiArFvwrljYMKDgrmr40K642UCuyehArVvwrbkgrlh6AK5Y+MCuuFuArguJMK5o6JCs6hCuG8gArmqJkK6ZW3Cuahowrtg5wK44OaCuuzuArCjArlupUK57uICuiriwrhg5kKzK8K7JiICuKWrArloLEK44OUCuC5jwrmmoIK5p2OCs6lCgUKAgrmm78K7Jq0CuWwhAoYCuunpAoRCvCfj7wK56WoCumZhArjg44KxakK5Y6LCumYvwrDkgrthYwK4oi8CuS4hwrVtArtm4QK5pmuCuaIqgrsho0K5ousCvCfmIAK4K+ICuKWtgrquYwK4KafCuabsgrluIgK6ZKxCuagjwrQqwrotbAK4buvCuKArArlvZIK7KCQCvCflKUK7JeICumAowrnp4EK7LKtCuWImArlhY0K7qS0CuWllgroposK1rkK4pi6CuOCsQrsl60K6ZmFCuuwmwrmnJsK5bidCuWHjwrrkZAK6aKGCsKECumSnwrjgqwK5p62CuuToArgrrIK5p2+CuKWoQrotooK562UCsmVCuG/pgrmn5MK74KnCui0qArpoboK5rCUCuKVlwroqIgK4YOlCuS6rgrwn6SmCsyCCtm5CuW6pwrLjArlnYcKCwrlrpgK6YCCCuaKpArkuYUK5pilCuabuQrnmocK6ISaCuaxoArlu7YK7YKkCu2SiArnj74K5qqUCuOBsAritLAK5biMCueOqQrlm7oK6buECu+CtwrimL0K6ZO2CgMK4pSDCvCfkY8K67aICuaUuwrjgbgK5YazCuKKmQrlroEK4KSaCuapnwrnvqkKybIKFQrtlogK4bqpCuaEmwrnn6kK7YyoCuG6twrpg44K0KwK57uYCui0nwrhu5UK4K6vCuaxiQrnt6gK244K4LWNCuOBmArsubQK5Ly8Ctq6CuOChAroqo0KDwrpgY4K7Ya1CuKWqgrnuqYK6aaZCuS5sArkvY8K4pWaCvCfmIEK5ompCumdmQrroKQK7ZWZCumSpQrspp0K4buJCuWluQrpo58K5b6ACum7ngrlgY8K5bq3ChQKxK8K7KSACgQK4LifCuKZowrmiI8KyoIK5LqVCuWGmwrniLEK2bEK5LiDCuywqArluIEK4pmgCuWTiArpmIUK5LuLCuinggrljYAKy5wK2YsK5Y+ICuWGsgrmnJ0K5aeTCuivvgrpvo0K6rCBCuKIiArnsbMKxpIK5ZacCuWknArlm6IK4oeSCui/nAoaCuG9kArmib8K4LK/CuWupArKgArhnoQK4KSFCue9lwrwn5mPCui9rwrwn5+hCuqxtArYnwrhgLgK4bSHCuODpgrthqAK562WCsyECuq1rQrWtgrljY8K6JClCumWogrlkIkK8J+SgArlpYcK5ruaCui9tArlh6YK5ZyfCuWIkgrgpKEK5Li0Cta1CuiIqgrmtY8K44K0CuWIpQrlr7oK5pa8CumAsgrhvbgK6aKoCuCuqQrnj60K4pe8CuS5nQrMpQromZ8K66WYCuehgAroiKwK77iZCsyICueVqgrinKgK8J+Yjgrgp4sK8J+YjQrllq4K5binCuaOiArotYsK5be0CuWNoArlgYcK4bmFCumAjwrpoIUKxKcK6aasCvCfn6IKxL0K1awK5Yi4CuqwmQrpoZ4K5bCNCuyblArmv4AKFwrmiKYK54usCuioigrhnrcK5aWXCsq3Cui3nwrhu58K5riyCumhrwrpmY0K4YCsCuWwvArooYAK7Ja4CueJmwrlsIcK4LioCuaLjQrliLsK4YOWCuKVlArol6QK4LGNCuG/tgrwn5+gCuiJrwrquYAK4KamCuG5ogrpjLIK5LyKCuiQvQrpm4QK6ZuqCuaYoArokZcK66W4CuGDpArlr74K5pm6CuivkQrilKwK5oq9CuG/lgrphZIK0IsK6IKhCuGfiwrsiJwK7KeBCuCkrQrosLcK66y8CseSCuKghArng60K57WCCuWkuQrlubIK5b2pCuaVlwrRnArima8KzKMK1b4K6L2uCumYtQrlpI8K5bmVCuWQpwrmuK8K55uKCuWEvwrslaEK5ZSuCuWFtQrmg6AK5qyiCsKbCumbtgrlrbgKwp4K5ZOhCuG7lwrnjokK6YC7CuGlgArlkJcK5rKSCuKJoArrhIgK4K6aChYK5aSrCuGDrArloIIK6Zu7CuKJoQrpmYYK7KC4CueglArojZAK5YGlCueivArnu4MK5qScCuyGoQrgpYgK5ZOqCuWchgrUsQrihqkK5omYCsyqCuClggrnvIAK64SkCuaymQrlhbQK55eFCgcK4Z6bCuG7qwrhvIgK6rCVCu2VrQoZCuaPmwrmuKkK5biWCuGekQrovrwK5YmKCuyVjArlvoEK5LmgCuuylQrmoIgK57udCn8K2pUK5ZyWCuiLjwrnmboK4YCvCueUugrkupIK4Ka8CuGDqgrlrogK7IOICuS+pwrojYkK4L2mCuaJqwrigJIK5oGiCtKjCuCkowrgrrEK7Ke4CuC3igrmi58K5rS+CvCfj70K5ZG8CsKKCua8lArnqbYK6rWQCsmjCuCkjwrhnrgK16MK5a+MCumnhQrjgZoK4pmqCvCfmIYK7KCRCtKTCuKWkwrsobQK4LK+CuaXiwrjgoMK6KGlCtelCumWgArhnoUK64KgCuC4oArgvYIK5YKzCuKIhgrChgrXgQrnvLoK6aCtCuaAqgrntYQK67OECtCqCueZvArpm7cK4LKwCuC4iwrjgbMK57+7Ctq+CuGDngrpoYwK5bGFCuynkQrwn4yNCsuaCumBvwrspIQK4Z67Cua7kQrmlYUK4LiNCuOAnArgsqgK7JaRCuyZhArgrrMK5YCNCuWulwrmip4K67iMCsm0CuWKuQrlsLoK6KaWCuG6vQropoYK4KSnCumqqArri6wK4bSbCuiTnQrpl5wK6aGNCsOVCuKIlwrljbcK6rCRCuultArkvJcK4bSACuaFiwrZsArmmpcK5ZCbCumMrwrJkgrhnpkK4birCuG/hgrkupoK4pmhCuWJsgrpvKAKzLYKw4sK6KqtCuqyqQrjgrIK55y8CsOdCtqYCumbqArlrq4K7Kq9CuCktwropIcK5YmpCuaXqQrmnYIK54SmCui0nQrnqoEK7JuMCuWPpgrmkYQKCArigK0K5bqcCuyZuArnm5YKHArguKkK5L2bCuamggroiIcK57aTCu+8jQrSuwrllY8K4LOBCuG8sAroqbEK5YCSCuiRmwrjgbkK44KNCh4K4KWkCuGAsQrhtI8K6K6tCumrlArwn5GMCuWFpwrhgIAK5LyBCuyVvQrssL4K4L28CuegtArovLgK66a8CuWhlArthLQK5p2ACuOAjwrlkbMK5rWuCuKUhgrEoQrpg6EK4pSQCuOAjgrpmLYK6ZuFCuKUiArlm60K77yOCuWQgwrrgqgK4oCCCuC9ogrluK4K5q+bCuiAlwrkuL4K4LCwCuaLvwrrsIAK44GUCuWknwrnpLwK4Z6WCuOBrQrCiQrlhbAK4p2MCuaKmArsi60K8J+Sjgrmpa0K6K+4CuWtmQrgvZYK8J+YswrnqK4Kw48K4Li2CuKBowrljLsK5ou8CuKGtQrihZMKHwrhgJkK5Y+rCuCmnArkuogK5a+4CuaihQrphpIK5rSlCuGAlArgsL8K5Y6CCuWxiwrgpJYK5birCvCfkYAK4buPCuODpArhvbAKHQril4YK4Z6KCuadkArjg5sK5by1Cua0ngrppJAK7LKcCuCmuQrpgZQK5YCRCuaWlwrmqKoK67CxCuGfhgrbhgrrp5AK4KaXCuS9swrrnpwK5LuBCumZiArpo54K5p6BCu+DmArrsI8K5LuTCuKsmwrmmIwK6YyiCuauigrilLQK4peLCuq4uArms4kK55SyCu2ZnArjgbIK4Ka2CuGKlQrFpArhg6YK55quCuW8twrotZsK4LC+CumgkArhgIQK7Yq8Cu2UjArhg6cK4ouGCtaECuCqvgrlsJoK65iQCtWiCuKUjArnr4AK5qOuCuCkhgrlip4K5ZySCueJmQrluoYK6ZqGCvCfmJQK5Y+JCtWjCu2UvArjgq4K5ZWKCue2mgrngbUK44OSCuW/vQrKjArrn4kK5rK5CuiurwritYkK66atCuWImgrmsI8K4YCtCsSqCuiqpArpvZAK5pyrCvCfmYwKzJ4K5ZyICuW/tQrsiKsK5q+rCueVtgropo8K7YyQCuCxgQrml6cK5Y2WCuC4iQrlubgK572yCuq3vArgpocK5bKbCtWkCuiniQrlrrMK5q+VCuC4kArlqIEK6IKyCuWRogrls7AK6IGMCumZvQrgt5IK5LqeCtKxCuKCgwrrlLAK5pa9CuazsArovIkKwoUK56yRCuiPrwrov44K65CpCuixhgrlmIkK8J+koQrElQrluoQK57SaCs6oCuC9sgrmsJcK6LSjCtWwCuGeogrkubEK5LyRCue0hArguIYK4oiRCuWvnwrsmKgK8J+YrArgpqEK5LmYCuuejArgpIcKzoYK4K6oCuGevgrkurIK4Z+BCuWnlArotaQK65CoCuWLnQrmgI4K6rCQCuWuiwroqr8K7KecCuCngArpmr4K66q7Cu2LsArlgpkK5aGeCuGenArpmakK5peFCuiZmgrihrMK56yUCummhgrSmgrimqEK4LOGCuKAuwrllJAK5b6LCueojQrmlaMK4KqwCuODtArlia8K5bC9CuaMggrnnIwK4pqgCua0iwrprLwK7JWUCuWtqQrihIMK5LimCtaBCuGevArihJMK4rWPCuaJowrpk4EK6Ze7CsuGCuaIswrjgoAK56eACue0sArhgJUK5b6hCuaLlgrsoowK2KQK57uNCuG7uQrssLgK7ZalCsSOCuuBnQrrr7wK4YOrCui0tQrnuqoK56eLCuCylQrTjwrntrIK6ZO6CuaBiwrvrIIK5YW8Cue+vQrssL0K5ZWfCuW8nwrrhYQK5oWiCu2aqAroqLEK56GsCuyemArthZwK4KuNCuC2sQrooZMK2ogK5rqqCu+/vArmmrQK5re3CuWkogrrnpEK4KaGCumChArmjqIK56WWCue7hwrou40K1akK5YuZCuiJugrgvZEK4Ym1CuG5gQrmh4kK5pOHCvCfpbAKxLcK5rihCuiRiQrroLkK5rG6CuWIgArlvp4K6K6KCuyYrArwn5KqCueBowrhiK0K7Y+JCuihowrwn5iECuC0vwrhg6kK4b2BCuOBuwrDmwrgppoK4La7CuijvQrpmooK4oKxCue6swrotZYK5YacCuahpQrhu7MK8J+PvgrpmLsK4Z6HCuenmArrsJUK5LykCueovwrgsIIK5oumCuuEowrwn5KVCuKCgQrlrr8K6YyECumVnArssYQKxo8K4L2ECuKHlArimLwK4L20CuWFmgrquIkK5rSyCtWyCuiqqgrErQrlsJ0K64u0CuCkqwrlk6UK5ZyjCuiQqArwn5iPCsqPCuCvhgrkuIEK6JmOCuq2jArlloQK5bKpCuy7pAril6YK5oqbCuyEnQrOiArlrqMK5ouzCu2MhQrmnpoK5rSbCuiovArpmbUK5L2QCumkqArriIQK64+MCuKChArnqLEK6IGKCui7igrro6gK17QK4LKgCuW6qwrgvZgK57WxCuugqArgpLwK4bmvCuC0lQrml5cK5YqxCue0gArlv6AK4LqyCuadqArkuLkKw5kK4LidCuWNtAroiJ4K6L2JCuGAkArkuL0K5YCfCuC3jwrjgocK7Ji1Cu2OuArokpkK6KGhCsqLCuWPtgrMhwrirJwK8J+HugrVgArosKIKxIQK4K+HCuG6sQrml6IK5rWOCuKJrwrmupYK64u1CuCysgrmrosK6JmRCsyGCuKUmArmgKUK5oubCuuniQriia4K55SiCuG5rArwn5iiCuWeggropqoKxKMK1r4K54yrCsqfCuKYgwrinKoK5YiqCuiDoQrimIkK5pmaCuq1sArsirkK4LCoCuG9tArmm74K6KuWCsmvCuCwpArmiLAK6bG8CsenCuWvtgrtirkK8J+SrwrltI4K55SYCuipsgrrp4EK8J+YoQrgpIkK4Z+CCumggQrtgbAK4p6kCuy0nQrwn5KwCuKIggrmr4EK6IGWCum6uwrKkArmlY8K6YGLCuuQoArsk7AK4LK4CuGAhQrinKYK7KCdCuW+qQrlr7sK6Iy2CuCovgrnq7kK6YGHCumghgrrqbAK57SvCsSdCsuHCuimpwrgpo8K5qCqCuy3qArhiLUK5LqJCuWKvwrlrocK5qmLCtOACuWghgritZkK5Li2CuajiwrogokK4YuoCu6/gArinbYK5a2jCuGIjQrmrr8K5YSqCuippgrssqsKzowK5oi2CuCuowrnvoUK5qGDCuumvQrmtaoK6ISRCvCfmJsK5byDCueCrgrovbsK7Jq4Cu+7vwrjg5gK5aWlCvCfkpwK5b+YCumBoArpo5sK6a2PCsSSCuaxhwrlpK4K6YCGCumcsgrpoIgK0ZAK4bi3CuCypgrinK0K5a+ECuebnwrotKIK6ZqbCuG8lArHqwrgpKUK4LS+CuWuqwrlt6gK6YCUCsq5CuCylwrluJAK4oCqCuaLkgroja8K8J+ZgwrFlQrkuqEK5aOBCuGInQrlj4MK8J+YqQrVtwrgsrUK4Z6OCuS4sArnjbIK6I6JCuyiiwrhgJsK4oKmCuqyoArwn5GJCuWQtArlsqEK6K+JCuydvQrwn6W6CueIhgrwn4e4CuCmrQrov60K7JeUCuG8hArmjbcK57SNCumCgArgsq8K54i+CuiIuQrotZ4K6IOcCuuvgArhgJ4K5qeLCuejgQrlhrAK65SpCuCrhwrlqpIK57mBCuKYoArinZIK5LuqCuugrArmmK0K54+gCumbogrgvZMK4LCyCuCypArmi7cK57KJCuuypArih70K5LmMCuaLpQrSswrgtroK4L26CuS7mQrloYoK5bmFCvCfjokK1YQK6LeoCtmUCuaBqQrmjZ8K5YW7CuWliArHgArkuKUK5Y2rCui/nwrmp5gK6KOhCuuCnArslZgKzZwKzpYK4KiwCtW6CuCmggrkuKIK5LydCuy7qArgt4AK4YC8CuWGtwrpgZcK6YqACsyMCuG0nArnkZ4K4LiMCuKdjQrjgbUK6IGaCueijgrooZsK4KaFCuGeiQrtjbwK1Y0K4LqZCuG6kwrinIwK5a2dCumZswrtnogK4LaaCum7kgrwn5KWCuG4qQrlv5wK6aWwCuKIqgrlrpwK5qiCCuWJhwrli4cK5b6QCuK1kwrmrIoK6bKBCuKAnwrluq0K6IuXCvCflLQK6ZeyCuuPhQrJuQrSvQrhnpAK5a6PCuWwigrnuL0K6KOdCuC2uArilrgK5risCuCyrgrhiqAK6L2pCuWFhArliZEK4KqoCuacsQrHnQrhuKgK5ouFCueBsArorrIK66GkCu+4jgrwn5ikCuGfhArslaAK7JiACuyniArmjK8K54GvCsSJCuC3gwrplokK656oCuCyggrjgZIKzKcK54uCCuiejQrku40K5a+mCualvQrnr4QK2YwK4LC1CuW1jArmkakK6KKBCuCmtwrkuY4K6recCuWylwrns4oK4LCVCumbsgrsi6wK4KSICuC9oArhvKEK5LidCsSmCtmNCtmTCuGAoQrln7cK67KoCuOCvArmoqY="; +var merges_binary = "IXAjcCZwJ3AicChwIXAkcCxwInAlcCdwKHAicCFwKXAicCdwJHAjcCVwKHAFAQkBMgEicCFw1QQicClwIXA3cCRwJ3AhcC1wJnApcCZwI3AlcC5wIXArcCRwKnAkcChwIXAwcCFwMnAicCtwIXA2cAYBMXAmcDEDIXAlcCFwL3AqcCJwJ3ArcCRwKXAmcC1wIXAscLMCJ3AmcAoBZQIncCFwBgEFASVwIXAUAiJwI3AlcC9wInAqcCEBMnAhcPEDKXAjcAgBJAGMAStwIXCHASFwKnAFASxwIXBqASFwJ3ANASNwInDAASZwKnAtcCNwKHAlcJgBInAhcAsBJnArcCRwL3AhcEFwJHArcCFwInAhcD9wIXAxcCFwQnAmcC9wJXAjcCRwLXAucChwIXA8cCZwMXAhcEpwJXAqcC5wI3AhcEVwKXAicCFwLnA4cCJwIXBHcCZwMnAlcDdwIXA0cC1wLHAkcDRwGQEicCFwwgEMASNwIXAvASFwXnBNAShwOHAHATtwSXAhcENwKnA0cB8BInAhcFEEQHBAcGUCKXAhcBYBJXArcCFwU3AOASgBkg8KAf9AJ3AucCpwHQEPAaswKHAhcHAFIQEncCFwCgEkcDFwLXAicKgBKHAjcAcBJnAocCNwLHAhcDhwZ3AucCFwWHAicC9wIXBRcFEBGAF+XS5wIXBsGwUBIQ4yAQ4BIXDHFy5wJ3AhcE9wFwEscCZwagEocCZwEgEjcCJwLwEkcDZwPXA9cCRwMHBlAiNwIXAXARUBCgHpAydwIXACAg4BInAkcKgBLnApcCFwYXAucC9wIXBVcCVwKXAwcCJwIXA9cBMBLHAhcLAFCAEqcCFwGgEIASlwIXAlARQBK3AkcCQBFgEjcCZwLwEhcFZwIXBscBMBdAEhcFcNCAEncCFwFAEHASJwInALASFwQHAhcFJwJwEicCFwCQEhcF1wJXAtcBMBJQGmGylwIXCkJAcBKXAicOoROXAicBgBI3AlcEkBLHAjcCFwKHASASlwInAzAyVwMHALASlwKHASASZwInAhcE1wIXBUcEABCQEeAiJwIXD2Aw0BK3AicCQBKnArcCFwV3APASNwJXAQCiFwaXBMcExwIXBjcBgBKHAlcEQBI3AicDUBKnAmcEgCMQYncCRwBgEMASJwIXBLASFwaHAcATcB1AIlcCFw2QIPASJwJXALARUBLAHpAy9wIXCjAjoBInAkcGcEI3AocDMBInAhcOUBNwEvcChwLAEucDZwCAEjcCFwDgE9AUhwIXDQAhQBI3AkcMABLnAicCEBKHAhcA8BIXBQcBsBI3AkcBAKNgEoASFwOXAwcCNwJ3AjcCZwOHArcCJwIXBacDBwKnBEASdwLnDWaUYBlwG8AyNwJnACBBoBKnAkcEgCBQHjPzIBFgEhcH4DSwEocClwBwHuASJwJHBNATMBQgHEAiNwIXDGBQgBCwFVAiJwIXDsASFwYHAxASJwIXAjASZwXHAhcEZwZQEicCRw6gFnBMABUQgjcC9wNAEFAShwIXCyAUMBOXAkcF4CfQEjcC5wLwE8cDtwPXBfcBcBNHAmcHQDBgEicCZw5QEYAaEBIw4rcCVwzmAhcH5wJXAxcB0BtAFQBCwB6R8vcCFwiwwTASJwIXABAy0BKnAicEgCDAEscCFwKwM9ASdwIXANAUQBInAucAsB1gcjcCkJEAowcKMBFQEscCFwUgEncCJwHwE0cCFwewWCAShwMHAHARsBK3AkcHgUJQEpcCRwMwMxcCJwJHA5cBsBInAkcAsBJXA5cCRwOHDBASJwJnBNATJwMnCcASlwJnASAQ4BLHAkcGoBaETWaSNwxQEhcGtwBgEjcCZwwAF4AXgB4xw9cD1w4xxlAi9wIXBBAYEBI3AlcC8BAwIqcCZwGgEnAcoBLw5NAQknInAhcBI8BgErcCZwJAEmcDBwFAEpcCRwbQtIcCNwGQElcCFwgAktcCpwZQIycCFwTwFbBCdwLXAKASZwJHAnARYB7i4pcCFw4z9hASNwLnDECDcBLnAocBgBDAEucCFwYQsocCRwTAEncCFwcgF3ASMBszUicCRw1gMhcHVwIXB8cCwBInAlcGcEoBAucCFwbAHqASNwMXArASIBInAhcGcEJQEjcCRwLwH4AiNwInA2AaYBY3AhcCgEI3AlcBUBKnAhcAACCAE2cCFwdwEmASJwJnBmAWkBInAmcAsBUQQocDZwBwEKASJwJXDlASYBLHAmcFIBCQEncCxwDQEVARQB6R4ncCFwhhBAASxwIXDLBDEBJHAhcKwICAFIAoUBKnAhcMcBQQEicCZwZwQ1ASJwJnAjATkBInAmcMIBQ3A1cBwBKnAhcMQBIXB2cChwLnAPAS9wJXDJBicBPAEvDitwIXBBQC5wK3AlASJwJHBLAQ8BK3AlcHgUO3A1cCcBBwGQAShwIXCXAjsBJ3AhcJECQwEicCRwZgEfAUkBvQMjcCFwVwkOASRwJHBMBEtwS3BcAVwB70BAcEBw70AKATFwJXAxAyFwgHAzcDNwFwEicCZwqAGIBSJwNHCCAUMBI3AkcDYBXgEicCVwwgFRAacBcAEocH5dRAEhcD5LIQFJAYoNI3AhcJYBPwElcCFwbAZ4BC1wKnAmARoBWgHHATRwDAElcCFwmwIPATlwJHAucEwBMHAhcMsCIXA6cCpwKnBKcEpwIgE0cCFwfAcwcDBwLXAtcNwCTHAhcKUBEAE0cDIBnQUhcMwzMXAscEwBKXAhcH0BJnA2cCgBKXCzAm0LJnAdBEMBLHAkcFIBDQEpcCJwbQsIAShwIXAbASVwNnAtATJwiA05cCVw7QEOAR4BfAErcCRwukUUATFwJHAxA0YBJ3AmcG4QOAHzAZgBGQyjBsUBIXAnAzgBKXCYARIBIXCbAS1wOXAYASlwJXB9AXRwcnA7cDNwIXCHcDNwQ3BqcFtwIXAmcDEGKnAkcDUBInAwcAgBK3AhcDwBFAFmAUIDInA8cENwjgFAcCFwXAFqAQcB1QQocCNwlwLrASJwJHCVARMBqQEhcIEzFQGLXbABMHDpA6cFIXAODCEB5QFkASJwIXAaAj8BKwGaCyNwIXAPAiVwOHAhcIJwGwE0cCRwgwKSATlwJXBeAgwBCQHgASJwIXDfGVIBInAtcAkBMnAjcDMBeQOzATdwIXBHBBkBEgFUASlwIXDnCDEBJnAhcHgEDQFmAT8DInAMASRwIXDsDgsBMwObASlwKHCZAT0BKnAhcC0BTAEkAQkCK3AhcJMDInAxcOgFKHAycAcBKHA0cDYrKHAicBsBgQEicCVwSwFNAYMCVwE0cDhwqQRGcDVwIXCGcCFwd3B+ASJwIXB8CbUBQQIxMCYBLnB5HRABaQHPASJwJnBeBRMBjQHeAQsB3QsicCFw2WsGATlwUAEncCVwcANBcCdwT3BUcCcBJQEvDilwIXDRDRwBBwH1AihwIXDnATsBI3AhcCEFPgEjcCFwzgIJAShwLHAHATMINgFgcBICcXBbcDUBK3AmcKEBKXAlcAwBMHAhcHYDanBkcCtwLnA3ATdwKHBQARoBuQHzEyJwSwEjcClwKwGGA8kGcAUvcDJwKAJbBC9wLXAsASIBFAEgECdwIXAOBQoBI3AlcMABYQEqcC5wSAIVAaUCewEjcOkDwAEhcHcFIgGvAfAJInBaDQsBIXBkESYBOXAmcF4CEwHaAcU3zmA9AThwIXA8AxYClgEhcEI3FwEoASwgCgEhcFxwGAEkASwEK3AlcJMDCwEicChwiwlOASxwIXC5BIQBGwIhcD4bJnAlcNYBSXA8cFgBEwFMCIQBJXAhcIoyBwEocCJw3AQPATRwJXCDAhgBwAEsBCNwJXDqCg4BUgJgASlwkg8dBP9AbQshcHRwdQExA8xNMXAocCABdXBMcB0BInAhcOgFe3BZcGpwWXAZARYBegMpcCFw5QcvcCRwBQFFGxABL3AyAW4BCAH0BowBNHAhcIwEMwElcCFw5gV4AQlJ9gH2AeMcXjZeNuMcCUl4AWZkPXA9cGZkHAELAdQCInAhcPMGBQEicCFwqAGYASVwIXA3AScBQQHuLi9wIXBdYCFwS3AucDBwKQEjcGUCwAEhcPUBCAExcCFwZQE/cCNwGwE5cCJwSHAwcCxwnAHAAV8FI3AmcDQBLQE0cCJwWgEcAShwIXAPA01wUnD3AeMBCAujASFwoR4FASEC8BMicKVCZwQhcAAGcXBZcA8DJXAwcDcBdxUHAV8hKHBrcMkBKnAlcCFwTHAhcHhwDwEpcCVw6hFKcENwBQFGHhABCwEyAY0BHh0icCFw3TsxAaoJewKVARcKInAhcPsPSAErcCVwoQETARwChAENAeUIJ3AhcOErTQHqEVcBKXA4cJQBDAENAkMCZwRZBCJwIXCvKwYBQgogASlwO3A7cBwBvAGsAyNw+RYQCiFwxAYmARoBBgUqcCZwbwUdAXIB+RkncCFw2wa+ASdwIXCnM1MBKXAkcE4DnAEocCZwBwEfAQsnWwENAXICInAlcE0BDAEtcCFwOAMDAidwJnAUASEBVwGzSAcBIXDLBZwBKnAmcC0BHAEicCFwggF1ATZwKHBRAsIJI3AwcEkBInAtcCsBLHAicGoBGwE6AWsLL3AkcIwMeQEwcCRwSwIhcJBwDAE9RFUBDgFHTyNwIXBXFykJJ3AwcAoBEwEhDoQBDgEhcJIavwEoATdwInA8ASJwJHDCARMBRAIVBDlwIXAwBagB/gFSEiNwI3C1BAwBbw19AjkBpgEoBBMCY3AhcMRqQXBXcM0B1QEiFi8BIXC2D2kBLwHrOiNwKQEUAswCJXAhcKMlewEvAU4EI3AhcLoHpwFmASNwI3AwcClwMHAocAcBOHAicHwjFwEjcCZwDQMucDFwOnBPcA0BMgQ0ASlwFgEscCZwKwMNAQcBRAcocCJwNwQpAWgBzAIHASkMKHAhcG4GxAEicDBwIwFIASpwJXBIAmcEKHAvcAcBDgEHAXwBKHAkcGgBiA0qcCVwSAEicDJwHAGLAvIHQQIhFHkdPmUtcCFw0QchAWwCLRuXAiFwDwRxcGVwGQEdA1QBMnAhcPYEIXCScIpwWXCQCSNwbg/AASVw9QEhAfABLgEycCFw6QZuDytwJXA5AQsB8wGhBcUBKHAZDAwBKwGrASNwIXChAjdwJXB4AgcBmEgocDJwaAEpcCxwXAFxJDUCNQJxJFwBIQFEAYoNKHAhcKcBdQE4cChwwQEWASlwJnAzA4oBInAhcBQJJ3AxcCEBNnAhcFYCKXApcDFwKHAFAd0dMgEUASFw6lmCATYBSQMjcDBwEgKcAStwJnAeASlwLXCcATdwJnB5A8IBKHArcAcBTgMjcDRwLwEicDhwFQHaAekDzmDKCaEBIXDvYhQBJ3AkcAAlDQEtcCJwsjlacFdwJnBIcBQBLXAkcLI5hQGbAhMLJXAhcHFGCwEOAdooI3AIAS9wIXA6AR8B+AJbAS1wIXAoMCFwZHC8DipwLnAaAYIBLXAwcPgCIXAzcB8BKnAhcM8EIwE2ASpwEgKaASMBBTQicCVwGAM0cClwPwEocCFwNAMmASNwJnA2ASZwOXCyASABJjYxAyNwuwJAAeM/HgIWASFwvAwfAdQBmz1eAiFwmwUhcFlwHQEGAQcZJ3AhcMULDgFSAQIcJ3BHcAoBPHBGcAcBL3AicMkGRwFKcCFwSQI6cDpw8AVnBC0aInAncLEBNXBDcBkBOQF6AytwIXCISBYBInAmcEsBZAFaASFwsRMnAjYBKHBzDiMBKXAqcBIBBQEcAhABJ3AyAQ0BIXDnFkUCSwFrByJwJHDCBndwW3B6ASlwZQIyBCFwFgR1ASNwKHAXAb4B6gzrAlABIXAOTZwBoQHzAitwJnDtEBUB9DAVAukBL1opcCFwYQchcF9wPQEvcCFwbgGtAVRwIXAzElEBhAKsORsBIXArETdwJ3BQcDVwGQEtAVQBKnAhcB0UGgEicCRwIwEjcDRwIx8xcDJwRgEpcDBwCQErcCxwHgE3AZMDBgIkAShwrwIicDdwGQEmcCFw5RUZAQcBVAEocCFwOgNxcGRwCwErcChwHgFqARYBI3DjPyMBI3AqcCsBUnBNcCRwSHAycChwmQHRATIu6gEYAU8CJXC7EhUBWGiwAS9w6QOVDCFwDQcycCVwzQUscC5wUgElcDRw9QJNAyFw2VQ7A24BTgMjUB0BCQNNMS8BIXB+ER0Bp03qAr0BIXBEChQB6gFaAiJwJwFQAScdN3AhcNUWPQEjcCFwKwEkcCxwMQFYAqgF7QEhcLsWcnBZcHIBK3AucCQBTAHYCQkCOgOAAgcBIXAgFntwW3AhcIhwCAI0cChwUwE/cEJwTwEmASEoLXAmcCI+enBkcAsBPAHaKCtwKHBVBB8BKwFbASNwIXDYJ7MCfQEmcF8CGwExcCRwxx4zAbwrswEeASFwgDjBAmoBBAwscC9w8gETYFtwIXBkAgcBI3AicBAKIQEwcCFwmgEIAUwCnwQtcCFwFRFBDSVwUXA3AT0BLwENBCNwIXB2AfQBJ3AhcMUGPQHAAeEBI3AhcDQBOAEtcJgB+AIhcBoNTAFLAVACInAhcMIGZXBqcBwBGwH5FihwIXBtBSRwXHAhcH9wigEscCFwTgcVCTJwKXBXAr4BInAhcJUBcnBbcBMBuAGmG8ABIXCxYj0BJAHhAStwIXCgARkBCgH/ASdwIXBoKyJwOXALASdwKHANAZBEZwRXcLEBRwFfcCFwQRMIAUsC0wMwcCFw+wIOAiJwoBC5ASFw8wNGASxwJnBPAh8BLnAhcKIciQYucCJwbAFNASpwOHAtAQgBNgGfBCNwIXA8AuIOInAtcAsBRXBCcGsBGwG4EShwIXBiBGYBMwNhBSlwLXCZAUkCSQJ7N0pwSnB7N01wSHAIAQwEaAIrcCFw3AMiAV4BWg0rcCFwdgVyATFwLnAxAxMBRh6EAY0B5QgLASFwjAvPCzEDJ3AgAR0BKnAhcG4EGgEpcCRwLxNoASdwqAHWaSNwlQRQcFBwSgEqcCFwkwocAYEBWwYpcCFwKQQUATlwCAEwcCFweQENATFwInAxAyFwo3DPBCJwNnAjATgBMXCYAYECIXBgBY9wT3A+AQkBDwUicCFw9RKOAUxwIXAzBCoCInAucMIBPAErcCRwDAQFASkDEwklcCFwbSoVAUgB6QMqcCFwdAUMAS9wIXDKCjEGKHAkcGkBIgFTASAQNHAhcOEuhgMLAXAFInAycK8BcwIYASFwuAc3AbsSBgJPAihwhAMVAQkB5AEicCFwdwIIAQ0DtgEjcCFwJQRCASxwJXBqAXpwW3AVASVwIXBbBA4BEgF8ASlwJHAxCDgBL3CYAW4BIXAhBogNK3AlcF4BrTKCAVk3InBCcDsCIwErcCpwHgEeUypwMnBhAQwBVwJqHTJwIXCwAyVwMnBKAShwIXBUBWwBInBncLkBPQGGAqsCqQTeCDRwIXDOTAsBMnAocB0DywQicEJwCQFKASQBRgQrcCFwowk4ASpwmAEtASFw5QtacFJwQXArcD0BmgWrAg0BIXBWIk1wV3AnAYcBLw4kASwaK3AhcEEKMQYjcCRwFwHgAdoBIXA8GggBKgP5DmgBIXBwHhkBTwF6AzJwTwIjcDFwlwFPASJwJnDoBQ4BDwEjByhwJHD9GiUBLHAkcCsDdQFXCfYCSQEtOyNwfwEZAmMLBwEucCcJDAGLCasBInAhcK0ML3ApcBUBxwH8CCpw6R5IAiFwHQs0cCdwK3ArcD0BKXAhcBIBIgFtAiAQlQEhcIsZQgGXAucDBwFjOyhwJXBsAiFwlXDbBElwQ3BYAS8BKHApcLIBMQE2AqgFMQPVPzFwIXABESMB0gF1CzQBKnBcBBMBDwHFNyhwIXDdVxcBKXAmcDIEOwEycCFwNQ0aAUsBzQMicHpwlnB5E3gUWhgrcDdw6AFiAllwIXBtB9ILKnA4cBoBCgEpcCVwbQshcJxwMwFQAcQCN3AhcOoMqQZMBGkQJHArcDMCOgEwcCRwpwUNAUsBVAIicDIB5AMrG4QDuyC7EiFweDoZAZAC/wFwA8otJ3AhcLYMDgEjcCRwDQNVAa8G/QImASFw8BUmASlwJnBFDGNwY3ApCSlwMHCBAWsBJgPwBjkBIXAMCyRwN3AYASdwJXByARMBUwGmGzRwIXBoBFECIwEmcNYDTQHAAZoFI3A4cDQBUAEHARMdKHAlcGUQMgGPAkIjOXAhcORdI3ApcEBwTHAIAVJczQKqASFwF2oOASABkg8xAywyMXAkcIUEcnBlcOUBKHAncAcBIgH4AVoNLwHqSCNwIXDsCHgE5QH2CCJwKnDZATRwL3AMAbUBBwI2cCFwggYHAfEElAEKATgBbAGYAb4DaxwucCFwkQZFcFZwRXBScHcBLQFPHCpwJHBMHAoBK3AlcCQB5wJJcDtwWAE+ASJwIXC8B20BSQHAKiNwIXCGCRoBOXBKASdwIXAEC+UBN3AncHkDHwEfEUYDZQMhcPtP6gEocDFwBwFhARsBgA4ocC5wszo3AcsCBgIwcChwpTcjcCRwOAIzcDNwOAIVAR0EewEpcOkDbQshcHwZmAHGAXcMAgQoKZcBIXDeBB0BKHAhcIIDNnAicDUBNHAmcFoBe3BkcBwBLHAhcNECNisrcCJwPAGEcENwPwEucCFwIwt/AksBEh4icCFw3QcMASwBQwIvcCFwNzwLAcABtwMjcChwNAEtcCVwbgE0Aa0TwAG/OyNwInDSAQwBsgFVAShwIXASBEUCxAgpCyNwJHAFAiFwjHB6cFlwSwEQCskBI3ApcKID0gsocDhwGwF0A4IBClsicCNwOwJOASwBFAwvcCFwiwR6cGVwBgEpcCZwbQsvcCJweRM0cDdwUwE5ATQBIwLAAQsaI3AcAWQtrgE4cNQCcgIhcK8uIXCDcNMBuQEhcOsMbwE3AYEHJXAhcKUDMnAqcAwBKnAhcIUISgEpcCFwlghQcFRwQXBVcLkBKXAucBIBKQEvAdAFI3AhcCoQMwGxAVcHZwSxKSJwIXBdAyVwSHAhcDtwKnAmcDoBEgGxASlwJHApEIUHKXBScBIBDAFEAQcCKHAhcPsebQU6AfMPjAwvPy9wMHD6AlUBvAHkESNwR08QCiFw2QkkcGBwP3BNcCUBOXAkcOQEQXBCcM4CuwKiDSABP3BSAwgBMwOGASlwIXDpARwBIx0lAlMBIXCKBn4WMQMjcCABFAIncCNwCgEfAekQWwHiA2dbrwEhcEIvHAFIAVsGKnAhcIoOGwFSAX8ZLHATAd8B3gFIAh0WKnAhcFIVAhwvcEdwLAEUATRwJHD0BkgB3AG9EzFwJXAuBj0B3ATSBChwIXC2AhABSwEyASgNGwEpcCRw6hEicDZwHwEocCFwwQUpAQAC0ggqcCFw4QUnAS0BkAEqcCFw9QoHASdwInDWaV4BNHAlcFESd3BZcCkBK3BlAiQBIXD7AXgBUVz2ASImxQLFAuMcO1kiJvYBXjY8aCFACUkJSSFAO1njHFFceAEjZGZkZmQjZDxoXjYZATMCSgdMBOYLJHAhcCAEPwHsA0ACXgEhcIwxVnBNcHlwNXAIAThwIXDuAQgBLXAhcEMBOQEHASMCKHAmcDoDanBlcCFwmHAiAQYBSBQncCFw2AQiAYcDBSFSAS1wJnAtASlwInAvExUBRAGuDyhwIXBIBWsBoAKGBbkBIXCXBQcBNHAicIMCLnAycDEBkgGoBS1wIXBOBgsB6wHaKDlwDgHvAZIPTQFKJCJwQQESASECKXAmcCkQR3AqcCFwNXAMAQcBqwEocCFwyQEZAZwBegMicCFwsT/TAf0BTxVtCyFwAQVdAgUCIXCICdACI3AicP4BCAFJAckJI3AhcMwErAgkAfMcK3AqcIcBNwKAcCFw5hlHcCxwqAEncCNwDQFQcGhwBQE7AtIJInBwNoIBIXBjBAICK3BbBCQBLXBBBCYBEgEXAilwJnBhBWsBqQSVBTRw7QaDAiFwhgIhAXADIXCQAh0BNQEHGSpwIXAoCBcB8QEsIBIBJnAxWRwBRw2uAZ4CDUoucCFwjRw4ATwBmAFVBCFwmwMdASgCYgEvcKswyQYhcKICFQErAsoMInDpHksBIXCiCA4BlwLyAQcBJHBsAnJwZHB/cFtwZXBxcEJwLHBFAiNwJHBJAQwBSQOcAvgCXgctcCFwBRAmcGBwNnAqcDUB2AGBCnQDIXB9cD0BKHAhcAcBGQFgGf8BEgEhcK9cJwGNAZABCwEvAiJwIXBGHmoBInAjcAkBRAESAeIBKXAucJsBIXCXcAUOJ3AvcAYBMwGmAqEZSAIhcPgNCAIwcChweQFDcDtwKHAocK5rLwFWcIgBdQECBL07lwEocMYB9AHJAcMRBwEyFyhwIXDaAmtwVnAOAccFYAEaAZIPYTb/QCQJHwHSU1sBIAHxFTEDIXDPPUVwV3ApcDlwFQEbAekeKHAhcMoZSAEicCVwIwEZAYgBwAIjcHoDLwEhcDcoxAEmATBwQQJIAaUkGQNQARwBmwHGAilw1AISASFwVS4MAYcDBwJSAYYjLHAhcCJHCwE6AdooL3AGAWYBFgcicMgJJ3AxcBQBkQEPAYxpKHAhcAUKQ3BLcJsCJ3ApcAoBLgN8AVEBNBdvAylwrDmQBAwBEAOrAXwjsQQ4cCFwwAUiAQIDIBDCAU0cInAhcJA7wgEycCtwHQNJcIFwPwEqcCFwvwYfAS0BWwEqcCFwTBwxAYgBewIvASFwpwYVAQ8B6QMocCFwkhIZASsBVAEjcCFwXRJmAQADTgUoAYECBgEicD8YIXCRcBUBVyjkARsBcygocCFw4AuyAf0BmwdtCx0BOgECDi9wlgNKcCFwKzgYAUsBXwIicCVwwgYZAfgCVAEtcCFwDRomASRwJnAfCiIBjASkAjRwIBD0BiFwEV7rASABHigxAyRwiCAhcKdwDAFBAWAIL3AhcDoRZQESAdEBKXAkcJcKqgQycC5w8AElAR4BKwIrcCRw0CfBAidwL3AUAT4BLHAhcL0HnAEjcCZwKwFpARICGAI2ASZwMwyPASJwIXCFBxkBdyoBBIIC8AoHAR0B+wFWAytwBxkkASFw/gz5Al4BIXCBcAYBEgHZASlwJnCfESkBOHBlAvVBIXCOIxwBJANbBvUBfUvAASFw4wifATRwHgKdBSFwlRdMAdAnUAIeAaoDK3AhcGwNNgFSAr0BKXBVAakBJnCZcAYBHgHZAStwJnBBL4QBIgIhcCUVQXAjcG4BGQJ7UAcBInAnCQwBUwF9AjRwIXDVUpABGDCUBDBwIXASLRUBCwGfBSJwIXDBAyFwSHBAAShwIXC+BX8BNAFmCMABdU8jcC5w0gEMATlwIXDkBBgBAgSEAyNwSANaAS5wQgIvcIMDTgEKARQMJ3AhcFgDIgEKAVoNJ3AhcFAKGwEeAewBK3AkcH0D3Vc5cDdwRAI7cEtwFgFoAYgBBwFsGShwJnBmCRsBJ3AkcNZpzwEeAY0CK3AmcEgx6RckcBhsTARVcDMCDwEncCVw1mknAVUEkAE8ASFwEwdVcE1wiQEicCFwug0cATwElALxBHwOCgEhcOUl0gEpcFEIMgQvcBQD1ANqASJw/18dARgEpD1LATZtInAhcHAPIgEeARACK3AhcDcGgAEicCFwCQ1DAQkBUwIicCRwdwIXAR4BOgIrcCZwukUxASsBzgEjcCFwfwMMAdUW4AFQASFwGBMMAbEBfQJnBMERInAhcEVTfQEpcC5wMwM/ARYDXAoHAZoLNwQuQyhwIXCaESFwhXCsHChwLXBEATgBGgEhcFcZZgErcC1wHgFDcF9wLwFiAxIEcw5IOTYBUQQ/GDZw/gRmAb8BjEcjcB8BJXAhcAYHaQEeARgCK3AmcH0DkQEocCFwUgpVASoCIXAaM8IBOHArcDwDRXAocDxwVHBOASpwIXCvBAEDDQE3cAsnBQGIDSoBJXAhcJNhBQF2AccCLwEhcE0GGQFTAUoHNHAhcLoFJXAscB0B6QTSE6UkIXCPXQ4B4gFUEiJwUFgLAVxwInCcASdwJnANAQsBMXAocIECZgEpcC1wEgFEASAB+xgxAy5wuwI6ATZwJHDdBgYBJHAmcPAF4g4mcC1wdQE9AStwIXAeAT9wP3DNBTlwLnBeAtwCQHAhcMUFR3BCcEABRh6fAQsBHgKNAWFAInAhcLgWBQFtApQpInCPN5UBIXD5UfMPKHAwcBsBYQEicC5wIwEfCipwLXAaAYYDKHAycA8BXAE+UTUCsEMsAywDsEM1Aj5RXAEpcAwDMgGFAlsEKnAtcEgBPQHwASFw0hnOFCtwL3BeAQICI3BbBMABLXClAlBwT3AIAXgDVQKvAiFwllEPA5kB8wYzA1UuKXAwcH4CNnA0cEACIAEhcIwj/gJLAdw0InAhcKxwMQHZAXsC5QFdMiJwIXA5BKkGqAFpECJwK3B8AVsEwgGqSiJwLXA9AnhwRnAxAQMEewLoBS4WInAhcJMoJQEKASRw8QRMAVEtUAIgASFwSSFrARoBuBEqcCFwHAQZAS5wIXCeAjRwMHDDASdwIXC2CR0BrwKrMJMDtU0kASFwOCNIAUkBYEUjcEZweXAbATQB7AHAAVgQI3AkcFoEDAFSA1UBuwJdBCABeBAxAyFwkwUiASsBEAIjcCFwwwgTAShwIXCbG30BLHAucCsDLwG7AhIEIAF1ZjEDKXBSA8sPXgUpcI0CawEHAe0GKHAhcFcBPQFTAiFwrSAcBLkBOHCgAjEBEQIfAi8BSwojcCFw8Q8/AUIBQAIjcCFwshdNASdwOHANAWcMXgI2cNQBvAcjcD9wKwEicDRwNwEqcChwSAEVAShwIXDiDmoBIAEjcPsICwEjcChwKwF9cClwFgEvcCZwygqcA1cFIXD9YFpwNnArAfsI+QIgASJwoAUvcDBwMQElcCFw2wIOASlwJHAyBKIBeQNLDDdwIXCcC3dwZHA8ASVwJHCACcIBSHArcNACf3BkcBwB6QHlDSlw+RYzAyFwFxA3cCxwGQENAVQBJ3AhcFQGFRcjcGlwKwF5ASNwJHC/AQgB5ASGATlwIXCABAwBywIHAjBwIXA5Kk0KuQF2cKACanCdcAUBgwLTATRwIXARBtscKAEqcGABqQY0cCtwUwHlATMDnxEpcCdwmQErASlwInAyBLcB5wE9CQcBIXBdQ0JwKHBfARsBtBcocCFwjBxLAXwjyQE4cClwEAM2cChwMwEHBBsIGQKhGScJIXDKEgYBGgFkBSpwJnAkCWYBwAFSPSNwLXA0AUxwQHDmBSNwJ3BCASgBGgGzAiQJ70QqcCZwYTYdAcMFVgMaAQcZJAkhcKAZRnA7cJgBcgHVGidwIXCUDHICBwHvAihwJXBXATMBDAazAVcBIXDuHy5wLXAnAbwDuwwscO4uTwIhcFUkhwsicDRwIwEpASlwZQJtCyFwZgQfAXYBWwEvAWgNI3AhcNE0FwEiMhEDIwF1AS1wKHAmAQwBWwJgCG4Q0xIncCFwnRgZAW4BVAEvcCFwlyAGAZkB2QEzAxcFKXAmcLsFMXA0cBMBGwGmGyhwIXBaGBYBdwMVAx4BPwHBAWQUOHCVATRwOXCdBSFwjnA8cGhw5AGaAgRQoQEhcDESIwEzA2MDKXAqcJkBaAQpcHkTTgM3cOwCBgEAAhYHKnA3ATBwKHCaAQgCN3AocCsES3ClASFwsnAncCVw+wFQAXFYN3AycCJwdQGgAeANJAHAUitwMQESAc4BKXAhcGMDMQGBAagFKXAhcKJDKAgicCMfIwEycCICogJgAbIOKAFMApkBLXDEAyFwsXAncCRwZQIqcCFwNQEWASgBcyoKASMBKHAqcAcBCAEQClUCI3AhcLwBWAMjcAIcwAFHcKUCEwHmCRUEoQEhcP8kBQHFAYYh1mmKISdwIXDzATgBQgJJBVoBnQFIcCFwxgODcFtwIXCvcGgBKXCoAeoRI3CUARsBDwKeAysB2gcjcOxFKHBNcNwEJwH7Ai8OSwJ+FmcEHB0icCNwIQI+ASVwIXAWFOUVOHArcMEBXwMncHoDoDY8ASRwJHCpBogNI3AlcEIBUHA7cAwBUgHwAixwIXCUCRUBIwEVAiJwIXAUB+UCoAVZBKYFGhH7CCFwYmDWATNwPHBhAhUBpwHpA0QBygkocDwDBwF3UihwInBXARQBMgS4ASlwIXCEcEJwJXAhcKBwsgE0cCNwgwIucEhwMQYpcCRwFgE3ATMDsQopcChwbgj1FDBwLHD8ATgBMHCYAWcCIXDFI6wITBzPQS0BKnBABB8B5wNPBWoBkzAscCFwUFZAcDVwQgEjcCVwDQODcGRwFAEicCRw5QEhAbwKowMNASFwHBA3cDdwFQENArABInDpA2cEIXB3ED0B/gG3ASNwIXC1BAsBL3AocG4BEwNUcDpwkgIhAaEBgigrcCFw4gJSAR4BdwIrcC1wdwMzcDpwU3BNcE8BNHAmcI1mMXAxcAIcKnBHcEgBYxR5AzhwOQMfAX0BvQMpcCFw7xgiAdUB2QcjcAUhLwEhcPdNGQGvPRMFNAHbAjFwKnDcARYBMgSIASlwJnAKVDcBSAKeBSpwKHAZAyRwJnBfBFtwIXCiCwwBigOdLSNQukluASFwrhnBAZQB7wHqEecHKXAmcOQCDgF9AVBYKXBCASJwJXCoAWcEK3AvcB4BeXAzcOsBEgFtAilwJHAWKlJwWnAVATQBVg7AASFwxAU0AzoB7V0vcDFwjAwcAfIEEBR8ASFwpA8/AUQDSA4OAUNwSXCaATRwJXASC70CLQFvKCpwfgFQAfgoN3AhcBwWpQGlAfAMTHBMcPAMQXBHcBkBKHAhcGoLqgEpcDEGbQskcGYE2wJeAk4GOXAqcHUCTXAncD4BUgHaCSxwIXD7JiIBDgEgECNwIXAEDCcBDQJRDCJwJx1nBCFwRSPnAXQDsgk0cKgBLwExCCNwI3B2AdsCLXAqcJIBEwEsAcU3L3ApcDdwGwFaAbkHNHCdASdwIXBIBlYHWXAhcL4CwgEncCtwDQFgAltwdHCyAyFwW3ArAQcB4w4ocCJwaAGTBCoCcGQrcOAEVnBrcKwUIgFuARACL3AhcMcMHAElcCFwKQkxAdIFFCIiMpVmIwEIAcceVQIxcCFwngO7ATVwIXBxAwYBODLhBdsDKwEkcCJwTAQcAYZZJQIxAgNPInAhcGALOQFqAX0B+m3VASwBVgFecCFw1SMFAW4BxwIvcCFwI1B1AR4B4A0rcChwNwMdATwCtAwjcAIONgEhcClXXwVmASZwfAJvASpwIXDJCJoBI3AlcL8BLQEicCJwIwExcCVwRXBHcAYBaAH1AQcBCz4ocMUDxQPWATVwPHAtAkIBKXAlcDIECAIqcChwGgG1CiJw1Wa5ASZw8wPuASABzUIxAyRwBA8vcCpwMgEqBRYII3DQbQIEggNDATJwvlIVAewB5QQicOkeCwEhcEEf1gFYAXAHSXA8cEIEHAFJASEUI3AhcPcCIgHGAUgUAgTZPpcBSgEaA7QKBwEhcHQiRQGIcCFwRRk6ARgDIQQjARoBagEACSxwHQF5A70CN3BVAXwB/QIicEdPqAEhcOsHYQs2cClwtQHDAShwIXC0CHlwSXAMAY0CYAheBSFwlAU+ATBwIXBNE4sBlgEhcDtRHAFuCNEDKXBbBjMDIXDCGCJwZ3DEAVMBMHAjHbcBNgM9CRICIXAMKasBvQSTFEEEIXCiGT4BUgOWArsC/g4gASFwggS8BqEBLnCaAjMBtQSzAf4BIXBfDYZwhnALAWwBPA4ucChwvgNKAUgC0AMqcCFwIwoiAQ0BEAIncCFwUQiKARwCrwMNAVIaJ3AhcDUdFwEHAToCKHAmcGgBOgE0AbEBwAEvJSNwJHDSAeUBI3AncCsBIXC0cDcBJ3AocAoBqgEjcDEGwAEkcPUBOwEpcCFw/Qh3cGVwggEkAbwKK3AwcKABAQW5BbdSYAF3B1lwIXAjA5pwZXBrARQBuBEncCFw+x2MAQ8E3W1sAjgBI3CYASsBIXChBYkBJHAhcKYWG2ArcFNwXgFKEVdwQXBAA3gELwEqcIgBHAH4AdEDI3BbBi8BIXB4DCtwJHB5EwsBWhgicDdw7AETASwCFQQrcMU3eBQhcIoI/gUPAexFTxarAW4BCAQvcKcCBgEhcEscDgEmAZIPLXAyAbACKxuLCSFwYEClBZgCaRsSAugCJgHzbi1waHAzcCIBzwIlBzlwIXD9DGsBFgECDClwIXCZDChwLXAMATdwIXBQBr8BUgIAAylwHwGsBFQN6wEhcDwLMgHmArIHKXBCI0IKSQEicC5wqAEucCZwQAEhDh4CDgEhcAAPRAEpcC5w6hExcCpwcXCFcB0BIgLBBCJwBxkjASFw7AV9ASJwLnBLAUYBQS9bAh4BtCYrcG0FI3DzDxAKMHC8AWtwJ3A9AWwBNC8ucCFwvgM8cIBwMQFVBM4BPAEocC9wqgEeATEGQS+mECtwJHAfBW0BInAhcPYNHA4scPMPagEwcPIB3wPHASFwXiRlAQcB0QEocCRwSQSFAeAFIXBcVp0BKnAhcI0WugE6A94RBwEhcOIIPQE0cCFwnQUTAQoBxTcncCFwJ0Z5ASJwJHCCATEBA0fOAXgCIXAkB+4BJHAkcNILFwFuAToCL3AmcCNQTAgocCxwDwEIAWgE8glTASFwei82cDZwHlMncDJwcgE7ASQBMAIrcCFwqQcvcDZwVQFiA10Ecw6UETYBIXBMBa4BxAP9MpkB2lYpcCFwahQMAUIOtQXjAe0JowEhcAIaWAGBcDtw9wQeBSdwJnCDDFZwWnAhAecBowMHASFwxwtrcEJwIXC2cFFwTXDbAjwBKnArCPEDMnAlcPABogElcCFwxQnBARIB7wEpcCZwPwcmARQBBgUncCZwhhBrASJwIXBNATwCKAEkcL0BRnBJcGsBJXAhcEgMaHA1cKQBKHAhcO4cDwMicDBwCwEncDRwqgEgATEGywMkcMYPswIocCZwDwEGARcBpg0jcCZwd20jAb0BTAMoASpwdScbAS9wJHDJBn8BJ3AucP47ZQEpcCRwQgqhcGRwWyBZcHRwvgLkAigBOHCoDEABJXAhcA8GOAEycJgBHQMhcPUDLwGHAXIZJAHHNCtwSgEjcCFwXwxPASNwJnB4Aj0BBgGIF2YBi04icDJwMQI2cCVwTwE3AyEoHgFNAStwOHAeAWELL3ApcH8BcgEicC5w5QEXARoBVAwqcCZwgD5/ATBwLnCnBaMCL3BbBJUMLXBYaCIBcgJaDThwIXCJRi0BI3AicMQIawEKAfAGJ3C/A5oBNgEPAS1w/RoJATwBLHBVBAACInAtcCMBHwGOBr0DmgIhcD8SBgEtcCZwsjkzcEZwNnApcAYBhgOvIiVwUgEncC1w4SneAbYDIXDhNh8BWAJPBe0BIXDBDWFwTXBnDChwNnAbASYBIgSKASEOrwMOASFwewwOAnYBuwMvAaAQdV8hcP8aRAFSAQ4BJXAkcBQCIwF4AipwA0ciARsBIBAocCFwlw0FAZoBKgEwcCFwog5dcF1wHQHpBSFwjhkfAVUnWwEscB0BagMHGe0QIXCuCDQELwEIAjYBvlIjcChwPALPAWABfQEHAcIGKHAucMkBUgENAXcCJ3AtcBwCsQNnAiFwGUBFcFVwFwEPAfwLKHAmcP0aMwEKAcQCJ3AhcOURaQErcCZweBSaASJwJXCCATgBLwGYAXYBXQIjcCFw2gwZATwDVAE4cCFwUwVHAjpwIXBcA0wB8AUJAiRwIXAEFwUBWgPHAskGNA4vcCFwvhlBcD9wHAGaAVsGMHAhcD8XdQEvAVEOI3AocIgBDAHtBEoVZgFRSiJwIXApKk0BKXA4cBIBJwHoAS8OeBQ8EStwIXDAIjBwJnBJATUBy0YqcC5wdwgMAZIBQwItcCFwGygNASJwInDlAcYD/QQxATw7qwQaAagFbwUhcHcPGQERBXoDMwyvDDYBjhQSAiFwzyQMAeIBBwILAXsEInAhcEVGHwE3AZIEJXAhcOEVGQEkcCFwqQYLAkxwIXC8AqcEWgQmTDQBIXDOC0ZwS3BscCxwKQHtBWsUYAEhcG5QZQLCAXYHInAhcCMCnANoAfIi/gFERCNwQnC1BAgC0QLaBCxwKHA+CVUBhwEARitwR08kASFwAQcVAe8J5QNeAiFwSAshcHtwMwEkcCFw8AU8cDxwGAFqAZYBLHAlcGEKeQEpcCRwDgNMAcABCQIjcCFw6go2cDJwewEycOkDXFwhcLAVDAGCAZwCInAhcKQ4FwEjASZwIjJOAUgBFAwqcCFwKQYAAukBLXD0MEQBGgE2CipwLnByBhkCKXBRBOoRNnCUAVNwRXCZASgBIXC4cJEChgPBTyVwbQEocCFwfhs9ASUBEAMXAkUCKXAkcH0BGwEmcCRwdQGHcFlwFQEsBOkDcgHKCSdwf3BlcNYBO3A8cOcCeAQxA/YIMXAqcCABTXBVcHcBWgGzNTRwHAEOAfkWI3AhcBwODwExcCVwxx5lAitwIXA5ASFwinAFAd8BxwJIAuhHKnAjAUhwKnDQAoUBpSQgAlABIXDyFQsBDQGwAidwKHALJy9wNHBOBKAENFwHAccCOgEmJS9wIXDjOiMBKwKXASNwLHANA28BKHAhcEENxQVAcExwXAEMASABYAgxA0oVMXAhcFEthQdsAac/LnBScL4DUnAicDkBEgEjAilwJnDnCFIBEgF3AilwLXAFCDIDmALoERICIXD+CvkBWgEmcEICWHA0cHRwi3A5AR4BIwIrcCZw2g4dAbACUASLCY0fInAhcFUOrgHWAysJIwGlBKgB5lUicC1wOgJ3BElwIXBYAS8DKAEZAWIFhwW7At4VIAGDAT1wIXB4ARcBlwJ0AQcBJnBsAnpwi3AxAYECzgExcCFwmgcMARcBYAgjcCYBQgLpAloBvgGdBbEDNHAhcNsFIwExcCpwgQKyASRwI3AIAiIBLAFaDS9wtwHEAT0JKnAhcHxFVAERByFwbz89AS8EqwI0AfsDI3AhcEMLogFZBiFwaBdbBSdwJXDhKU0CTHDcAqUBIXDwDCsG1gUhcGNjmnBbcK4BMnDUAvEDIXAkRwcBTxa2Ag8BHAEPAVsGKHAhcNYH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"; +initializemistralTokenizer(); +var mistral_tokenizer_default = mistralTokenizer; + +// ../core/dist/tokenize-mistral.js +var TEKKEN_MODELS = /* @__PURE__ */ new Set([ + "mistral-nemo", + "pixtral-12b", + "pixtral-large-latest", + "mistral-small-latest", + "devstral-small-2505", + "devstral-small-2507", + "devstral-medium-2507", + "mistral-medium-2505", + "mistral-medium-2508", + "mistral-medium-latest", + "magistral-small", + "magistral-medium-latest", + "ministral-3b-latest", + "ministral-8b-latest" +]); +var isTekken = (modelId) => TEKKEN_MODELS.has(modelId); +var MISTRAL_HEURISTIC_CHARS_PER_TOKEN = 4; +var heuristicCount = (text) => Math.ceil(text.length / MISTRAL_HEURISTIC_CHARS_PER_TOKEN); +var mistralCount = (text, modelId) => { + if (isTekken(modelId)) { + return { approximate: true, tokens: heuristicCount(text), tokenizer: "heuristic" }; + } + const ids = mistral_tokenizer_default.encode(text); + const tokenizer = "mistral_v1_v3"; + return { approximate: true, tokens: ids.length, tokenizer }; +}; + // ../core/dist/tokenize.js var HEURISTIC_CHARS_PER_TOKEN = { anthropic: 3.5, + cohere: 4, google: 4, + mistral: 4, openai: 4 }; -var heuristicCount = (text, provider) => Math.ceil(text.length / HEURISTIC_CHARS_PER_TOKEN[provider]); -var countTokens3 = (text, provider) => { +var heuristicCount2 = (text, provider) => Math.ceil(text.length / HEURISTIC_CHARS_PER_TOKEN[provider]); +var countTokens3 = (text, provider, modelId) => { switch (provider) { case "openai": return { approximate: false, count: encode2(text).length, tokenizer: "o200k_base" }; @@ -58775,16 +59142,24 @@ var countTokens3 = (text, provider) => { case "google": return { approximate: true, - count: heuristicCount(text, "google"), + count: heuristicCount2(text, "google"), tokenizer: "heuristic" }; + case "mistral": { + const r = mistralCount(text, modelId ?? ""); + return { approximate: r.approximate, count: r.tokens, tokenizer: r.tokenizer }; + } + case "cohere": { + const r = cohereCount(text); + return { approximate: r.approximate, count: r.tokens, tokenizer: r.tokenizer }; + } } }; var tokenize2 = (options) => { const model = getModel(options.modelId); const rate = getRate(options.modelId); const converted = toFormat(options.prompt, options.format); - const counted = countTokens3(converted, model.provider); + const counted = countTokens3(converted, model.provider, model.id); const inputCost = counted.count / 1e3 * rate.inputPer1k; return { approximate: counted.approximate, diff --git a/packages/claude-code-skill/README.md b/packages/claude-code-skill/README.md new file mode 100644 index 0000000..78a07a8 --- /dev/null +++ b/packages/claude-code-skill/README.md @@ -0,0 +1,59 @@ +# Tokenometer Claude Code skill + +> Give Claude Code real token-cost awareness. + +This package ships a [Claude Code](https://docs.anthropic.com/en/docs/claude-code) skill +(`tokenometer-cost-check`) that teaches Claude Code agents to invoke the +`tokenometer` CLI for empirical prompt-cost measurement. With it +installed, Claude Code can answer "what does this prompt cost?" with a +real number sourced from provider `countTokens` APIs and the +[`tokenlens`](https://www.npmjs.com/package/tokenlens) pricing registry, +instead of guessing from `tiktoken`. + +## Install + +One-shot copy: + +```bash +cp -R packages/claude-code-skill ~/.claude/skills/tokenometer +``` + +Or, for a one-file install: + +```bash +mkdir -p ~/.claude/skills/tokenometer \ + && cp packages/claude-code-skill/SKILL.md ~/.claude/skills/tokenometer/ +``` + +Or use the included installer: + +```bash +./packages/claude-code-skill/install.sh +``` + +That writes `~/.claude/skills/tokenometer/SKILL.md`. Restart Claude Code +(or open a new session) and the `tokenometer-cost-check` skill becomes +discoverable. + +## What's it do + +The skill registers trigger phrases like "what does this prompt cost", +"is this cheaper as JSON or YAML", and "did my change increase prompt +cost". When matched, Claude Code knows to shell out to +`npx tokenometer …` instead of guessing — then surfaces real token +counts and USD cost across Claude / GPT-4o / Gemini, with an +honesty flag for approximate vs exact counts. + +See [`SKILL.md`](./SKILL.md) for the full skill content (trigger +phrases, invocation patterns, output handling, and the empirical +findings the skill is allowed to cite). + +## Skill registry + +We'll submit this to the community skills registry once one stabilizes; +track issue [#TBD]. Until then, install via the copy / installer +commands above. + +## License + +MIT diff --git a/packages/claude-code-skill/SKILL.md b/packages/claude-code-skill/SKILL.md new file mode 100644 index 0000000..d013d15 --- /dev/null +++ b/packages/claude-code-skill/SKILL.md @@ -0,0 +1,229 @@ +--- +name: tokenometer-cost-check +description: Use when measuring or comparing token cost of prompts across LLM providers (Claude, GPT-4o, Gemini), estimating cost of agent system prompts before deploy, validating that a code change doesn't increase prompt-cost, or picking the cheapest model for a given prompt shape. Wraps the `tokenometer` CLI. +--- + +# Tokenometer cost check + +## What this skill does + +This skill teaches you to invoke `npx tokenometer` for empirical token-cost +measurement. Given a prompt file (or stdin), `tokenometer` reports the token +count and USD cost across one or more LLM providers (Anthropic Claude, +OpenAI GPT-4o, Google Gemini) and one or more serialization formats +(JSON / YAML / XML / Markdown / text). Counts can be offline (proxy +tokenizers) or empirical (provider `countTokens` APIs — both Anthropic and +Google offer this for free; OpenAI's `o200k_base` matches production +exactly). USD cost is sourced from the [`tokenlens`](https://www.npmjs.com/package/tokenlens) +pricing registry. Use this skill any time the user asks "what does this +prompt cost" or anything adjacent. + +## When to invoke + +Trigger phrases (verbatim or paraphrased): + +- "what does this prompt cost" +- "is this cheaper as JSON or YAML" +- "did my change increase prompt cost" +- "which model is cheapest for this" +- "estimate budget for this agent" +- "how many tokens is this" +- "tiktoken says X — is that actually right for Claude?" + +Proactively suggest a measurement when: + +- The user is iterating on a prompt file in a `prompts/` directory and + about to ship. +- The user mentions hitting a model rate limit, a context-window wall, or + a surprising bill. +- A diff under review touches `prompts/**`, `system_prompt*`, or any file + whose role is to be sent to an LLM. + +## How to invoke (offline mode — no API key required) + +Default invocation: + +```bash +npx tokenometer --model +``` + +Examples: + +```bash +# Single prompt, single model +npx tokenometer ./prompt.md --model claude-opus-4-7 + +# Cross-model + cross-format comparison +npx tokenometer ./prompts/agent.md \ + --model claude-opus-4-7,gpt-4o,gemini-2.5-pro \ + --format json,yaml,markdown +``` + +Output is a table with tokens and USD per `(model, format)` cell. A +leading `~` (or an `Approx ✓` column) marks proxy counts. Returns exit 0 +on success. + +## How to invoke (empirical mode — exact counts via provider APIs) + +```bash +ANTHROPIC_API_KEY=… npx tokenometer ./prompt.md --empirical --max-spend 0.05 +``` + +In empirical mode tokenometer calls: + +- Anthropic → `messages.countTokens` (free) +- Google → `model.countTokens` (free, requires `GOOGLE_API_KEY` or `GEMINI_API_KEY`) +- OpenAI → `tiktoken` `o200k_base` locally (matches OpenAI's production + count exactly — no API call needed) + +`--max-spend` is a hard ceiling enforced before any paid call would +happen. The default is `$0.05`. Pass `--offline` to force the offline +path even if `--empirical` is also set. + +## Output formats for parseable downstream use + +- `--output json` — emits a `TokenometerResult` JSON shape with one entry + per input file. Pipe to `jq`: + + ```bash + npx tokenometer ./prompt.md --output json \ + | jq '.files[].results | map(.inputCost) | add' + ``` + +- `--output sarif` — SARIF 2.1.0; `gh code-scanning` (and any SARIF + viewer) ingests it for inline PR annotations: + + ```bash + npx tokenometer ./prompt.md --output sarif > tokenometer.sarif + ``` + +## Per-file attribution + +When measuring multiple files (e.g. an entire `prompts/**/*.md` glob), +pass `--by-file` to append a ranked per-file token-and-USD table: + +```bash +npx tokenometer prompts/**/*.md --by-file +``` + +Useful for figuring out which prompt files dominate the cost of a +multi-file pipeline. + +## Vision tokens + +For multimodal prompts, pass `--image ` (repeatable). Each image +becomes a virtual file in the result, and per-provider vision-token +formulas are applied: + +```bash +npx tokenometer ./prompt.md --image ./logo.png --model claude-opus-4-7 +``` + +Provider is inferred from the model. Vision-token cells are always +marked `approximate: true` because they are formula-derived, not +tokenizer-derived. Surface this when reporting back to the user. + +## Auto provider detection + +Omit `--model` and tokenometer picks a default based on which +`*_API_KEY` env is set: + +- `ANTHROPIC_API_KEY` only → `claude-opus-4-7` +- `OPENAI_API_KEY` only → `gpt-4o` +- `GOOGLE_API_KEY` / `GEMINI_API_KEY` only → first known `gemini-*` model +- Multiple keys set → defaults to `claude-opus-4-7` and emits a stderr + note. Pass `--model` to disambiguate. +- No keys set → existing default (`claude-opus-4-7`). + +Means `npx tokenometer prompt.md` does the right thing in any of those +environments without remembering model names. + +## Config file + +Drop a `.tokenometer.yml` (or `.yaml`) at the repo root for declarative +defaults: + +```yaml +models: [claude-opus-4-7, gpt-4o] +formats: [json, markdown] +budgets: + total: 0.50 + per-file: 0.10 +paths: [prompts/**/*.md] +``` + +Tokenometer walks up from the cwd to find it (stops at `.git`). CLI +flags always override config. Use `--config ` to load an exact +file (skips the walk-up); use `--no-config` to skip config loading +entirely. + +## CI guardrail + +For repos using GitHub Actions, scaffold cost-regression checking with: + +```bash +npx tokenometer init +``` + +This writes `.github/workflows/prompt-cost.yml` and a starter +`.tokenometer.yml`. The Action posts a sticky PR comment with the cost +diff vs the base branch and fails the check when total Δ exceeds +`budget`. + +## What this skill does NOT do + +- Doesn't generate prompts. +- Doesn't optimize prompts (yet — measurement only). +- Doesn't track cost over time across runs (use the playground at + https://tokenometer.vercel.app for that). + +## Empirical findings worth citing in conversation + +Tokenometer's own n=150 measurement (10 prompt shapes × 5 formats × 3 +Claude models, all empirical via `messages.countTokens`): + +- `tiktoken cl100k_base` under-counts **Claude Opus 4.7 by +62% + median**. If a user is budgeting Claude Opus 4.7 using `tiktoken`, + their real cost is approximately **1.6× their spreadsheet**. +- `claude-sonnet-4-6` and `claude-haiku-4-5` are within ~17% of + `cl100k_base` and are identical to each other (same tokenizer + family). +- Format choice (JSON / YAML / XML / Markdown / text) is a wash on + Claude — within ~1pp of median delta. Picking a cheaper *model* + saves 7-12×; reformatting saves ~10%. + +Cite this when a user asks "isn't `tiktoken` good enough for Claude?" +or is reasoning about budget on the wrong tokenizer. + +## Honesty contract + +Tokenometer marks results with `approximate: true` whenever the offline +path is a proxy: + +- Claude offline (`cl100k_base`) +- Google offline (`chars / 4` heuristic) +- Vision-token results (formula-derived for all providers) + +When summarizing results to the user, **surface this flag**. Don't paper +over approximate counts as if they were exact. Either run `--empirical` +for an exact number or call out the approximation in the summary. + +## Full flag reference + +``` +tokenometer [options] +echo "prompt" | tokenometer - [options] + +--model Default: claude-opus-4-7, or auto-detected from env +--format Default: all (json,yaml,xml,markdown,text) +--output table (default) | json | sarif +--by-file Append a per-file token/cost table (multi-file only) +--image Add vision-token cost for the image (repeatable) +--config Load this exact config file +--no-config Skip .tokenometer.yml loading +--empirical Use provider countTokens APIs (free, exact) +--max-spend Hard ceiling for empirical mode (default 0.05) +--offline Force offline (overrides --empirical) +-h, --help +-v, --version +``` diff --git a/packages/claude-code-skill/install.sh b/packages/claude-code-skill/install.sh new file mode 100755 index 0000000..8b992a2 --- /dev/null +++ b/packages/claude-code-skill/install.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail +DEST="${HOME}/.claude/skills/tokenometer" +mkdir -p "$DEST" +cp "$(dirname "$0")/SKILL.md" "$DEST/SKILL.md" +echo "Installed Tokenometer skill to $DEST/SKILL.md" diff --git a/packages/claude-code-skill/package.json b/packages/claude-code-skill/package.json new file mode 100644 index 0000000..13be3a3 --- /dev/null +++ b/packages/claude-code-skill/package.json @@ -0,0 +1,30 @@ +{ + "name": "@tokenometer/claude-code-skill", + "version": "0.0.2", + "description": "Claude Code skill that wraps the tokenometer CLI.", + "license": "MIT", + "author": "Faraazuddin Mohammed ", + "homepage": "https://tokenometer.vercel.app", + "repository": { + "type": "git", + "url": "git+https://github.com/faraa2m/tokenometer.git", + "directory": "packages/claude-code-skill" + }, + "bugs": { + "url": "https://github.com/faraa2m/tokenometer/issues" + }, + "private": true, + "keywords": [ + "claude", + "claude-code", + "claude-code-skill", + "llm-cost", + "prompt-cost", + "skill", + "tokenometer" + ], + "files": ["SKILL.md", "README.md", "install.sh"], + "scripts": { + "lint": "echo skipped" + } +} diff --git a/packages/cli/README.md b/packages/cli/README.md index d318ede..c77424e 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -76,6 +76,25 @@ npx tokenometer ./prompt.md --output sarif > tokenometer.sarif npx tokenometer ./prompt.md --output json | jq '.files[].results | map(.inputCost) | add' ``` +### Latency + +`--latency` measures real generation latency in addition to token cost. For each `(model, format)` cell, tokenometer streams `n` real chat completions (default `n=3`, override with `--latency-trials 1..10`) capped at `max_tokens=200`, and reports: + +- **TTFT** — time to first streamed token (ms) +- **Total** — wall-clock from request start to stream end (ms) +- **tokens/sec** — `output_tokens / (total - ttft)` + +Numbers are reported as **p50 / p95 / mean** over the trials. Full per-trial data is included in `--output json`. + +```bash +ANTHROPIC_API_KEY=… OPENAI_API_KEY=… \ + npx tokenometer ./prompt.md --latency --model claude-opus-4-7,gpt-4o +``` + +`--latency` implies `--empirical` (offline mode can't measure real latency). The default `--max-spend` ceiling is bumped from `$0.05` to `$0.25` to cover the `n × 200-token` generations; pass `--max-spend` explicitly to override. + +Supported providers: Anthropic (`messages.stream`), OpenAI (`/v1/chat/completions` SSE), Google (`generateContentStream`), Cohere (`/v1/chat` NDJSON), Mistral (`/v1/chat/completions` SSE). Each trial retries once on transient failures. + ## Per-file attribution `--by-file` appends a per-file token + USD summary table when you pass multiple input files (single-file inputs are a no-op): @@ -124,7 +143,9 @@ echo "prompt" | tokenometer - [options] --config Load this exact config file --no-config Skip .tokenometer.yml loading --empirical Use provider countTokens APIs (free, exact) ---max-spend Hard ceiling for empirical mode (default 0.05) +--latency Measure real generation latency (TTFT, total ms, tokens/s) +--latency-trials Trials per cell when --latency is set (1-10, default 3) +--max-spend Hard ceiling for empirical mode (default 0.05; with --latency, 0.25) --offline Force offline (overrides --empirical) -h, --help -v, --version diff --git a/packages/cli/src/args.test.ts b/packages/cli/src/args.test.ts index a232578..0e87e4d 100644 --- a/packages/cli/src/args.test.ts +++ b/packages/cli/src/args.test.ts @@ -90,4 +90,41 @@ describe('parseArgs', () => { expect(r.modelsSet).toBe(false); expect(r.formatsSet).toBe(false); }); + + it('--latency parses as a boolean and implies --empirical', () => { + const r = parseArgs(['p.md', '--latency']); + expect(r.latency).toBe(true); + expect(r.empirical).toBe(true); + }); + + it('--latency without explicit --max-spend bumps the default ceiling to $0.25', () => { + const r = parseArgs(['p.md', '--latency']); + expect(r.maxSpend).toBeCloseTo(0.25); + expect(r.maxSpendSet).toBe(false); + }); + + it('--latency with explicit --max-spend keeps the user value', () => { + const r = parseArgs(['p.md', '--latency', '--max-spend', '0.40']); + expect(r.maxSpend).toBeCloseTo(0.4); + expect(r.maxSpendSet).toBe(true); + }); + + it('--latency-trials defaults to 3 and parses an integer in [1,10]', () => { + expect(parseArgs(['p.md']).latencyTrials).toBe(3); + expect(parseArgs(['p.md', '--latency-trials', '5']).latencyTrials).toBe(5); + expect(parseArgs(['p.md', '--latency-trials', '1']).latencyTrials).toBe(1); + expect(parseArgs(['p.md', '--latency-trials', '10']).latencyTrials).toBe(10); + }); + + it('--latency-trials rejects out-of-range and non-integer values', () => { + expect(() => parseArgs(['p.md', '--latency-trials', '0'])).toThrow(/between 1 and 10/); + expect(() => parseArgs(['p.md', '--latency-trials', '11'])).toThrow(/between 1 and 10/); + expect(() => parseArgs(['p.md', '--latency-trials', 'abc'])).toThrow(/between 1 and 10/); + }); + + it('--latency-trials requires a value', () => { + expect(() => parseArgs(['p.md', '--latency-trials'])).toThrow( + /--latency-trials requires a value/, + ); + }); }); diff --git a/packages/cli/src/args.ts b/packages/cli/src/args.ts index 0735676..de761aa 100644 --- a/packages/cli/src/args.ts +++ b/packages/cli/src/args.ts @@ -13,7 +13,11 @@ export interface ParsedArgs { imagePaths: string[]; inputPaths: string[]; inputPathsSet: boolean; + latency: boolean; + latencyTrials: number; maxSpend: number; + /** True iff the user passed `--max-spend` explicitly (not the default). */ + maxSpendSet: boolean; modelIds: string[]; modelsSet: boolean; noConfig: boolean; @@ -42,7 +46,18 @@ OPTIONS --no-config Skip .tokenometer.yml loading entirely. --empirical Run sample API calls and report real charges. Requires the matching _API_KEY env var. - --max-spend Hard ceiling for empirical mode (default: 0.05). + --latency Measure real generation latency (TTFT, total ms, + tokens/sec) per (model × format) cell. Implies + --empirical and bumps the default --max-spend + ceiling to $0.25 (each trial is a metered + ~200-token chat completion). Anthropic, OpenAI, + Google, Cohere, Mistral are supported. + --latency-trials Trials per cell for --latency (1-10, default 3). + Each trial requests max_tokens=200 to keep cost + predictable while giving enough output to + stabilize tokens/sec. + --max-spend Hard ceiling for empirical mode (default: 0.05; + with --latency, default 0.25). --offline Force offline mode (overrides --empirical). -h, --help Show this help. -v, --version Show CLI version. @@ -53,10 +68,15 @@ EXAMPLES tokenometer ./prompt.md --output sarif > tokenometer.sarif tokenometer ./prompt.md --image ./screenshot.png tokenometer ./prompt.md --format yaml,json --empirical --max-spend 0.01 + tokenometer ./prompt.md --latency --model gpt-4o,claude-opus-4-7 `; const DEFAULT_MODELS = ['claude-opus-4-7']; const DEFAULT_MAX_SPEND_USD = 0.05; +export const DEFAULT_LATENCY_MAX_SPEND_USD = 0.25; +export const DEFAULT_LATENCY_TRIALS = 3; +const MIN_LATENCY_TRIALS = 1; +const MAX_LATENCY_TRIALS = 10; const OUTPUT_FORMATS: readonly OutputFormat[] = ['table', 'json', 'sarif']; const isOutputFormat = (value: string): value is OutputFormat => @@ -73,7 +93,10 @@ export const parseArgs = (argv: readonly string[]): ParsedArgs => { imagePaths: [], inputPaths: [], inputPathsSet: false, + latency: false, + latencyTrials: DEFAULT_LATENCY_TRIALS, maxSpend: DEFAULT_MAX_SPEND_USD, + maxSpendSet: false, modelIds: [...DEFAULT_MODELS], modelsSet: false, noConfig: false, @@ -97,6 +120,24 @@ export const parseArgs = (argv: readonly string[]): ParsedArgs => { result.empirical = true; continue; } + if (arg === '--latency') { + result.latency = true; + // --latency implies --empirical (offline mode can't measure real latency). + result.empirical = true; + continue; + } + if (arg === '--latency-trials') { + const next = argv[++i]; + if (!next) throw new Error('--latency-trials requires a value'); + const parsed = Number.parseInt(next, 10); + if (!Number.isFinite(parsed) || parsed < MIN_LATENCY_TRIALS || parsed > MAX_LATENCY_TRIALS) { + throw new Error( + `--latency-trials must be an integer between ${MIN_LATENCY_TRIALS} and ${MAX_LATENCY_TRIALS}, got "${next}".`, + ); + } + result.latencyTrials = parsed; + continue; + } if (arg === '--offline') { result.offline = true; continue; @@ -164,6 +205,7 @@ export const parseArgs = (argv: readonly string[]): ParsedArgs => { throw new Error(`--max-spend must be a positive number, got "${next}".`); } result.maxSpend = parsed; + result.maxSpendSet = true; continue; } if (arg.startsWith('--')) { @@ -179,5 +221,11 @@ export const parseArgs = (argv: readonly string[]): ParsedArgs => { if (!result.formatsSet && result.formats.length === 0) { result.formats = [...allFormats()]; } + // `--latency` makes the default `--max-spend` ceiling more generous since + // each trial is a metered ~200-token chat completion. Only bump if the + // user did not explicitly set --max-spend (theirs always wins). + if (result.latency && !result.maxSpendSet) { + result.maxSpend = DEFAULT_LATENCY_MAX_SPEND_USD; + } return result; }; diff --git a/packages/cli/src/index.test.ts b/packages/cli/src/index.test.ts index 9d6de2d..09c9f0a 100644 --- a/packages/cli/src/index.test.ts +++ b/packages/cli/src/index.test.ts @@ -222,4 +222,69 @@ describe('main (integration)', () => { expect(code).toBe(1); expect(stderr.text()).toMatch(/No input files/); }); + + it('--latency populates per-cell latency block in JSON output', async () => { + const file = writePrompt(tmpRoot, 'p.md', 'hello world'); + const { stdout, stderr } = makeStreams(); + const measureLatencyFn = async () => ({ + trials: [{ ttftMs: 100, totalMs: 500, outputTokens: 50, tokensPerSec: 125 }], + p50: { ttftMs: 100, totalMs: 500, tokensPerSec: 125 }, + p95: { ttftMs: 100, totalMs: 500, tokensPerSec: 125 }, + mean: { ttftMs: 100, totalMs: 500, tokensPerSec: 125 }, + }); + // gpt-4o is the fast path: empirical mode uses tiktoken locally so we + // don't need any provider API keys for the empirical tokenize step. + const code = await main( + [ + file, + '--latency', + '--latency-trials', + '1', + '--model', + 'gpt-4o', + '--output', + 'json', + '--no-config', + ], + { + measureLatencyFn, + stderr: stderr as unknown as NodeJS.WriteStream, + stdout: stdout as unknown as NodeJS.WriteStream, + }, + ); + expect(code).toBe(0); + const parsed = JSON.parse(stdout.text()); + const cell = parsed.files[0].results[0]; + expect(cell.latency).toBeDefined(); + expect(cell.latency.p50.ttftMs).toBe(100); + expect(cell.latency.p50.totalMs).toBe(500); + expect(cell.latency.trials).toHaveLength(1); + }); + + it('--latency renders latency columns in the table output', async () => { + const file = writePrompt(tmpRoot, 'p.md', 'hello world'); + const { stdout, stderr } = makeStreams(); + const measureLatencyFn = async () => ({ + trials: [{ ttftMs: 250, totalMs: 1500, outputTokens: 200, tokensPerSec: 160 }], + p50: { ttftMs: 250, totalMs: 1500, tokensPerSec: 160 }, + p95: { ttftMs: 250, totalMs: 1500, tokensPerSec: 160 }, + mean: { ttftMs: 250, totalMs: 1500, tokensPerSec: 160 }, + }); + const code = await main( + [file, '--latency', '--latency-trials', '1', '--model', 'gpt-4o', '--no-config'], + { + measureLatencyFn, + stderr: stderr as unknown as NodeJS.WriteStream, + stdout: stdout as unknown as NodeJS.WriteStream, + }, + ); + expect(code).toBe(0); + const out = stdout.text(); + expect(out).toContain('p50 ttft'); + expect(out).toContain('p50 total'); + expect(out).toContain('tokens/s'); + expect(out).toContain('250 ms'); + expect(out).toContain('1500 ms'); + expect(out).toContain('latency:'); + }); }); diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 054f786..0570f98 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -8,11 +8,18 @@ import { getModel, getRate, loadConfig, + measureLatency, toSarif, tokenizeMatrix, tokenizeMatrixEmpirical, } from '@tokenometer/core'; -import type { EmpiricalEnv, Format, TokenizeResult } from '@tokenometer/core'; +import type { + EmpiricalEnv, + Format, + LatencyResult, + MeasureLatencyOptions, + TokenizeResult, +} from '@tokenometer/core'; import { HELP_TEXT, type ParsedArgs, parseArgs } from './args.js'; import { autoDetectDefaultModel } from './auto-detect.js'; import { applyConfig, loadConfigFromPath } from './config-merge.js'; @@ -28,10 +35,20 @@ const VERSION = '0.0.2'; const readEnv = (): EmpiricalEnv => { const env: EmpiricalEnv = {}; - const { ANTHROPIC_API_KEY, GEMINI_API_KEY, GOOGLE_API_KEY } = process.env; + const { + ANTHROPIC_API_KEY, + COHERE_API_KEY, + GEMINI_API_KEY, + GOOGLE_API_KEY, + MISTRAL_API_KEY, + OPENAI_API_KEY, + } = process.env; if (ANTHROPIC_API_KEY) env.anthropicApiKey = ANTHROPIC_API_KEY; + if (COHERE_API_KEY) env.cohereApiKey = COHERE_API_KEY; const googleKey = GOOGLE_API_KEY ?? GEMINI_API_KEY; if (googleKey) env.googleApiKey = googleKey; + if (MISTRAL_API_KEY) env.mistralApiKey = MISTRAL_API_KEY; + if (OPENAI_API_KEY) env.openaiApiKey = OPENAI_API_KEY; return env; }; @@ -66,15 +83,43 @@ const readPerFilePrompts = async ( ); }; +/** Test seam for `measureLatency`; production code uses the SDK-backed default. */ +export type MeasureLatencyFn = (options: MeasureLatencyOptions) => Promise; + interface RunDeps { imageSizeReader?: ImageSizeReader; + measureLatencyFn?: MeasureLatencyFn; stderr?: NodeJS.WriteStream; stdout?: NodeJS.WriteStream; } +/** + * For each cell, run a real streaming generation and attach the resulting + * `LatencyResult` in-place. Skips cells whose provider doesn't yet support + * the latency path (currently: none — all 5 do). + */ +const augmentWithLatency = async ( + cells: TokenizeResult[], + prompt: string, + parsed: ParsedArgs, + measure: MeasureLatencyFn, +): Promise => { + // Sequential (not parallel) so we don't slam a single provider with N + // concurrent metered requests; rate-limits are real. + for (const cell of cells) { + cell.latency = await measure({ + env: readEnv(), + modelId: cell.model, + prompt, + trials: parsed.latencyTrials, + }); + } +}; + const buildPerFileResults = async ( parsed: ParsedArgs, useEmpirical: boolean, + measureLatencyFn: MeasureLatencyFn | undefined, ): Promise => { const inputs = await readPerFilePrompts(parsed.inputPaths); const out: TokenometerFileResult[] = []; @@ -92,6 +137,9 @@ const buildPerFileResults = async ( modelIds: parsed.modelIds, prompt, }); + if (parsed.latency) { + await augmentWithLatency(cells, prompt, parsed, measureLatencyFn ?? measureLatency); + } out.push({ path, results: cells }); } return out; @@ -190,7 +238,9 @@ export const main = async (argv: readonly string[], deps: RunDeps = {}): Promise // Otherwise the existing joined-prompt path is used. if (parsed.output === 'json' || parsed.output === 'sarif') { const fileResults = - parsed.inputPaths.length > 0 ? await buildPerFileResults(parsed, useEmpirical) : []; + parsed.inputPaths.length > 0 + ? await buildPerFileResults(parsed, useEmpirical, deps.measureLatencyFn) + : []; const imageResults = await buildImageResults(parsed, reader); const result: TokenometerResult = { files: [...fileResults, ...imageResults] }; if (result.files.length === 0) { @@ -237,6 +287,14 @@ export const main = async (argv: readonly string[], deps: RunDeps = {}): Promise modelIds: parsed.modelIds, prompt, }); + if (parsed.latency) { + await augmentWithLatency( + mainResults, + prompt, + parsed, + deps.measureLatencyFn ?? measureLatency, + ); + } } // Compute image rows up front (needed for main table appendage and by-file). @@ -253,7 +311,9 @@ export const main = async (argv: readonly string[], deps: RunDeps = {}): Promise // by-file table requires per-file results from prompt files plus image virtual files. if (parsed.byFile) { const perFile = - parsed.inputPaths.length > 0 ? await buildPerFileResults(parsed, useEmpirical) : []; + parsed.inputPaths.length > 0 + ? await buildPerFileResults(parsed, useEmpirical, deps.measureLatencyFn) + : []; const allFiles = [...perFile, ...imageFileResults]; const byFile = renderByFile(allFiles); if (byFile) stdout.write(`${byFile}\n`); @@ -264,6 +324,11 @@ export const main = async (argv: readonly string[], deps: RunDeps = {}): Promise '\n(empirical: Anthropic / Google counts via provider countTokens API; OpenAI via tiktoken o200k_base)\n', ); } + if (parsed.latency) { + stdout.write( + `(latency: ${parsed.latencyTrials} streaming generation${parsed.latencyTrials === 1 ? '' : 's'} per cell, max_tokens=200; p50/p95/mean over trials)\n`, + ); + } return 0; }; diff --git a/packages/cli/src/render.test.ts b/packages/cli/src/render.test.ts index 4edc3dc..d111f58 100644 --- a/packages/cli/src/render.test.ts +++ b/packages/cli/src/render.test.ts @@ -46,6 +46,57 @@ describe('renderTable', () => { const out = renderTable(sample); expect(out).toMatch(/~80/); }); + + it('omits latency columns when no cell has latency data', () => { + const out = renderTable(sample); + expect(out).not.toContain('p50 ttft'); + expect(out).not.toContain('p50 total'); + expect(out).not.toContain('tokens/s'); + }); + + it('adds latency columns when at least one cell has latency data', () => { + const withLatency: TokenizeResult[] = [ + { + ...(sample[0] as TokenizeResult), + latency: { + trials: [ + { ttftMs: 200, totalMs: 1500, outputTokens: 200, tokensPerSec: 153.85 }, + { ttftMs: 220, totalMs: 1600, outputTokens: 200, tokensPerSec: 144.93 }, + { ttftMs: 240, totalMs: 1700, outputTokens: 200, tokensPerSec: 136.99 }, + ], + p50: { ttftMs: 220, totalMs: 1600, tokensPerSec: 144.93 }, + p95: { ttftMs: 240, totalMs: 1700, tokensPerSec: 153.85 }, + mean: { ttftMs: 220, totalMs: 1600, tokensPerSec: 145.26 }, + }, + }, + ]; + const out = renderTable(withLatency); + expect(out).toContain('p50 ttft'); + expect(out).toContain('p50 total'); + expect(out).toContain('tokens/s'); + expect(out).toContain('220 ms'); + expect(out).toContain('1600 ms'); + }); + + it('renders a placeholder dash for cells without latency when others have it', () => { + const mixed: TokenizeResult[] = [ + sample[0] as TokenizeResult, + { + ...(sample[1] as TokenizeResult), + latency: { + trials: [{ ttftMs: 100, totalMs: 800, outputTokens: 200, tokensPerSec: 285.7 }], + p50: { ttftMs: 100, totalMs: 800, tokensPerSec: 285.7 }, + p95: { ttftMs: 100, totalMs: 800, tokensPerSec: 285.7 }, + mean: { ttftMs: 100, totalMs: 800, tokensPerSec: 285.7 }, + }, + }, + ]; + const out = renderTable(mixed); + expect(out).toContain('p50 ttft'); + // The first cell (no latency) should have placeholders. + const dataLines = out.split('\n').slice(2); + expect(dataLines[0]).toMatch(/-\s+-\s+-/); + }); }); describe('renderModelLimits', () => { diff --git a/packages/cli/src/render.ts b/packages/cli/src/render.ts index f123f89..f2c8cd6 100644 --- a/packages/cli/src/render.ts +++ b/packages/cli/src/render.ts @@ -13,16 +13,38 @@ const formatCost = (usd: number): string => { return `$${usd.toExponential(2)}`; }; +const formatMs = (ms: number): string => `${Math.round(ms)}`; + +const formatTps = (tps: number): string => + tps >= 100 ? Math.round(tps).toString() : tps.toFixed(1); + export const renderTable = (results: readonly TokenizeResult[]): string => { if (results.length === 0) return '(no results)'; - const headers = ['model', 'format', 'tokens', 'est. cost'] as const; - const rows: string[][] = results.map((r) => [ - r.model, - r.format, - `${r.approximate ? '~' : ' '}${r.inputTokens.toLocaleString()}`, - formatCost(r.inputCost), - ]); + // Latency columns are only added when at least one cell has latency data. + const hasLatency = results.some((r) => r.latency !== undefined); + + const headers = hasLatency + ? (['model', 'format', 'tokens', 'est. cost', 'p50 ttft', 'p50 total', 'tokens/s'] as const) + : (['model', 'format', 'tokens', 'est. cost'] as const); + const rows: string[][] = results.map((r) => { + const base = [ + r.model, + r.format, + `${r.approximate ? '~' : ' '}${r.inputTokens.toLocaleString()}`, + formatCost(r.inputCost), + ]; + if (!hasLatency) return base; + if (r.latency) { + return [ + ...base, + `${formatMs(r.latency.p50.ttftMs)} ms`, + `${formatMs(r.latency.p50.totalMs)} ms`, + formatTps(r.latency.p50.tokensPerSec), + ]; + } + return [...base, '-', '-', '-']; + }); const widths = headers.map((h, colIdx) => { const maxRowWidth = rows.reduce((acc, row) => Math.max(acc, row[colIdx]?.length ?? 0), 0); diff --git a/packages/cli/src/vision.ts b/packages/cli/src/vision.ts index 9030121..5a0ebd2 100644 --- a/packages/cli/src/vision.ts +++ b/packages/cli/src/vision.ts @@ -47,8 +47,12 @@ export const computeVisionTokens = ( return openaiVisionTokens(dim); case 'google': return googleVisionTokens(dim); + case 'mistral': + case 'cohere': + throw new Error( + `Vision tokens for provider "${provider}" are not yet supported (model "${modelId}", image "${imagePath}"). Use Claude, GPT-4o, or Gemini for image cost estimation.`, + ); default: { - // Exhaustiveness — once we add Mistral / Cohere this surfaces a clear error. const exhaustiveCheck: never = provider; throw new Error( `Vision tokens are not supported for provider "${exhaustiveCheck}" (model "${modelId}", image "${imagePath}").`, diff --git a/packages/core/package.json b/packages/core/package.json index a55a0f6..7876808 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -63,6 +63,7 @@ "@google/generative-ai": "^0.24.1", "@tokenlens/models": "^1.3.0", "gpt-tokenizer": "^3.4.0", + "mistral-tokenizer-js": "^1.0.0", "tokenlens": "^1.3.1", "yaml": "^2.8.4" }, diff --git a/packages/core/src/__snapshots__/registry.json b/packages/core/src/__snapshots__/registry.json index 8640e15..d4fc16a 100644 --- a/packages/core/src/__snapshots__/registry.json +++ b/packages/core/src/__snapshots__/registry.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-05-09T03:19:56.336Z", + "generatedAt": "2026-05-10T03:47:29.144Z", "models": [ { "id": "claude-3-5-haiku-20241022", @@ -131,6 +131,16 @@ "outputPer1k": 0.015, "cachedInputPer1k": 0.0003 }, + { + "id": "codestral-latest", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 256000, + "maxOutputTokens": 4096, + "inputPer1k": 0.0003, + "outputPer1k": 0.0009000000000000001, + "cachedInputPer1k": null + }, { "id": "codex-mini-latest", "provider": "openai", @@ -141,6 +151,56 @@ "outputPer1k": 0.006, "cachedInputPer1k": null }, + { + "id": "command-r", + "provider": "cohere", + "pricingSource": "local", + "contextWindow": 128000, + "maxOutputTokens": 4096, + "inputPer1k": 0.00015, + "outputPer1k": 0.0006, + "cachedInputPer1k": null + }, + { + "id": "command-r-plus", + "provider": "cohere", + "pricingSource": "local", + "contextWindow": 128000, + "maxOutputTokens": 4096, + "inputPer1k": 0.0025, + "outputPer1k": 0.01, + "cachedInputPer1k": null + }, + { + "id": "devstral-medium-2507", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.0004, + "outputPer1k": 0.002, + "cachedInputPer1k": null + }, + { + "id": "devstral-small-2505", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.0001, + "outputPer1k": 0.0003, + "cachedInputPer1k": null + }, + { + "id": "devstral-small-2507", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.0001, + "outputPer1k": 0.0003, + "cachedInputPer1k": null + }, { "id": "gemini-1.5-flash", "provider": "google", @@ -331,6 +391,106 @@ "outputPer1k": 0.0004, "cachedInputPer1k": null }, + { + "id": "magistral-medium-latest", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 16384, + "inputPer1k": 0.002, + "outputPer1k": 0.005, + "cachedInputPer1k": null + }, + { + "id": "magistral-small", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.0005, + "outputPer1k": 0.0015, + "cachedInputPer1k": null + }, + { + "id": "ministral-3b-latest", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.00004, + "outputPer1k": 0.00004, + "cachedInputPer1k": null + }, + { + "id": "ministral-8b-latest", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.0001, + "outputPer1k": 0.0001, + "cachedInputPer1k": null + }, + { + "id": "mistral-large-latest", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 131072, + "maxOutputTokens": 16384, + "inputPer1k": 0.002, + "outputPer1k": 0.006, + "cachedInputPer1k": null + }, + { + "id": "mistral-medium-2505", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 131072, + "maxOutputTokens": 131072, + "inputPer1k": 0.0004, + "outputPer1k": 0.002, + "cachedInputPer1k": null + }, + { + "id": "mistral-medium-2508", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 262144, + "maxOutputTokens": 262144, + "inputPer1k": 0.0004, + "outputPer1k": 0.002, + "cachedInputPer1k": null + }, + { + "id": "mistral-medium-latest", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 16384, + "inputPer1k": 0.0004, + "outputPer1k": 0.002, + "cachedInputPer1k": null + }, + { + "id": "mistral-nemo", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.00015, + "outputPer1k": 0.00015, + "cachedInputPer1k": null + }, + { + "id": "mistral-small-latest", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 16384, + "inputPer1k": 0.0001, + "outputPer1k": 0.0003, + "cachedInputPer1k": null + }, { "id": "o1", "provider": "openai", @@ -420,6 +580,56 @@ "inputPer1k": 0.002, "outputPer1k": 0.008, "cachedInputPer1k": null + }, + { + "id": "open-mistral-7b", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 8000, + "maxOutputTokens": 8000, + "inputPer1k": 0.00025, + "outputPer1k": 0.00025, + "cachedInputPer1k": null + }, + { + "id": "open-mixtral-8x22b", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 64000, + "maxOutputTokens": 64000, + "inputPer1k": 0.002, + "outputPer1k": 0.006, + "cachedInputPer1k": null + }, + { + "id": "open-mixtral-8x7b", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 32000, + "maxOutputTokens": 32000, + "inputPer1k": 0.0007, + "outputPer1k": 0.0007, + "cachedInputPer1k": null + }, + { + "id": "pixtral-12b", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.00015, + "outputPer1k": 0.00015, + "cachedInputPer1k": null + }, + { + "id": "pixtral-large-latest", + "provider": "mistral", + "pricingSource": "tokenlens", + "contextWindow": 128000, + "maxOutputTokens": 128000, + "inputPer1k": 0.002, + "outputPer1k": 0.006, + "cachedInputPer1k": null } ] } diff --git a/packages/core/src/empirical.test.ts b/packages/core/src/empirical.test.ts index 8c1ee67..d4f3efe 100644 --- a/packages/core/src/empirical.test.ts +++ b/packages/core/src/empirical.test.ts @@ -83,6 +83,55 @@ describe('tokenizeEmpirical', () => { }), ).rejects.toThrow(/GOOGLE_API_KEY/); }); + + it('throws on Mistral empirical mode (no public token-count endpoint)', async () => { + await expect( + tokenizeEmpirical({ + env: {}, + format: 'text', + modelId: 'open-mistral-7b', + prompt: 'hi', + }), + ).rejects.toThrow(/Mistral does not expose a public token-count API/); + }); + + it('hits Cohere /v1/tokenize when key is provided (mocked fetch)', async () => { + const originalFetch = globalThis.fetch; + const fetchMock = vi.fn( + async () => + new Response(JSON.stringify({ tokens: [10, 20, 30] }), { + headers: { 'Content-Type': 'application/json' }, + status: 200, + }), + ) as unknown as typeof fetch; + globalThis.fetch = fetchMock; + try { + const result = await tokenizeEmpirical({ + env: { cohereApiKey: 'co-test' }, + format: 'text', + modelId: 'command-r-plus', + prompt: 'hello', + }); + expect(result.approximate).toBe(false); + expect(result.inputTokens).toBe(3); + expect(result.inputCost).toBeGreaterThan(0); + expect(result.provider).toBe('cohere'); + expect(fetchMock).toHaveBeenCalledTimes(1); + } finally { + globalThis.fetch = originalFetch; + } + }); + + it('throws a clear error when Cohere key is missing', async () => { + await expect( + tokenizeEmpirical({ + env: {}, + format: 'text', + modelId: 'command-r-plus', + prompt: 'hi', + }), + ).rejects.toThrow(/COHERE_API_KEY/); + }); }); describe('tokenizeMatrixEmpirical', () => { diff --git a/packages/core/src/empirical.ts b/packages/core/src/empirical.ts index 27fc327..829f6dd 100644 --- a/packages/core/src/empirical.ts +++ b/packages/core/src/empirical.ts @@ -3,25 +3,39 @@ import { GoogleGenerativeAI } from '@google/generative-ai'; import { encode as encodeO200k } from 'gpt-tokenizer/encoding/o200k_base'; import { toFormat } from './convert.js'; import { getModel, getRate } from './rates.js'; +import { cohereTokenizeApi } from './tokenize-cohere.js'; import type { Format, Provider, TokenizeResult } from './types.js'; export interface EmpiricalCountResult { count: number; exact: true; - source: 'anthropic-count' | 'gemini-count' | 'tiktoken-o200k'; + source: 'anthropic-count' | 'cohere-tokenize' | 'gemini-count' | 'tiktoken-o200k'; } export interface EmpiricalEnv { anthropicApiKey?: string; + cohereApiKey?: string; googleApiKey?: string; + // Used by `--latency` mode (see latency.ts). Not consumed by the + // countTokens-based empirical path. + mistralApiKey?: string; + openaiApiKey?: string; } +const ENV_VAR_NAME: Record = { + anthropicApiKey: 'ANTHROPIC_API_KEY', + cohereApiKey: 'COHERE_API_KEY', + googleApiKey: 'GOOGLE_API_KEY', + mistralApiKey: 'MISTRAL_API_KEY', + openaiApiKey: 'OPENAI_API_KEY', +}; + const requireKey = (env: EmpiricalEnv, key: keyof EmpiricalEnv, provider: Provider): string => { const value = env[key]; if (!value) { - throw new Error( - `${provider} empirical mode requires ${key === 'anthropicApiKey' ? 'ANTHROPIC_API_KEY' : 'GOOGLE_API_KEY'} (or GEMINI_API_KEY)`, - ); + const envName = + key === 'googleApiKey' ? `${ENV_VAR_NAME[key]} (or GEMINI_API_KEY)` : ENV_VAR_NAME[key]; + throw new Error(`${provider} empirical mode requires ${envName}`); } return value; }; @@ -68,6 +82,16 @@ const countOpenAi = (text: string): EmpiricalCountResult => ({ source: 'tiktoken-o200k', }); +const countCohere = async ( + text: string, + modelId: string, + env: EmpiricalEnv, +): Promise => { + const apiKey = requireKey(env, 'cohereApiKey', 'cohere'); + const count = await cohereTokenizeApi(text, modelId, apiKey); + return { count, exact: true, source: 'cohere-tokenize' }; +}; + export interface TokenizeEmpiricalOptions { env: EmpiricalEnv; format: Format; @@ -92,6 +116,20 @@ export const tokenizeEmpirical = async ( case 'openai': result = countOpenAi(converted); break; + case 'cohere': + result = await countCohere(converted, model.id, options.env); + break; + case 'mistral': + // Mistral does not expose a public free token-count endpoint as of + // May 2026 (see .planning/research/mistral-integration.md). Refuse + // empirical mode rather than silently falling back to the offline + // path — that would violate the `--empirical` contract (count is + // exact). Users who want exact counts can call a metered chat + // completion and read back `usage.prompt_tokens` themselves. + throw new Error( + 'Mistral does not expose a public token-count API; offline mode only. ' + + 'For exact counts, send a chat completion to Mistral and read `usage.prompt_tokens`.', + ); } return { approximate: false, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 77dd2df..32b2336 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -5,12 +5,17 @@ export { tokenizeEmpirical, tokenizeMatrixEmpirical } from './empirical.js'; export type { EmpiricalCountResult, EmpiricalEnv } from './empirical.js'; export { toSarif } from './format-sarif.js'; export type { TokenometerFileResult, TokenometerResult, ToSarifOptions } from './format-sarif.js'; +export { measureLatency, nthPercentile } from './latency.js'; +export type { LatencyDeps, MeasureLatencyOptions } from './latency.js'; export { KNOWN_MODELS, MODELS, RATES, RATES_VERSION, getModel, getRate } from './rates.js'; export { countTokens, tokenize, tokenizeMatrix } from './tokenize.js'; export type { CountResult } from './tokenize.js'; export type { EmpiricalResult, Format, + LatencyResult, + LatencyStats, + LatencyTrial, ModelDescriptor, Provider, RateEntry, diff --git a/packages/core/src/latency.test.ts b/packages/core/src/latency.test.ts new file mode 100644 index 0000000..e635971 --- /dev/null +++ b/packages/core/src/latency.test.ts @@ -0,0 +1,357 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +const mockAnthropicStream = vi.fn(); +const mockGoogleStream = vi.fn(); + +vi.mock('@anthropic-ai/sdk', () => ({ + default: vi.fn().mockImplementation(() => ({ + messages: { stream: mockAnthropicStream }, + })), +})); + +vi.mock('@google/generative-ai', () => ({ + GoogleGenerativeAI: vi.fn().mockImplementation(() => ({ + getGenerativeModel: () => ({ generateContentStream: mockGoogleStream }), + })), +})); + +const { measureLatency, nthPercentile } = await import('./latency.js'); +import type { LatencyTrial, MeasureLatencyOptions } from './latency.js'; +import type { Provider } from './types.js'; + +const makeTrial = (ttftMs: number, totalMs: number, outputTokens = 100): LatencyTrial => ({ + ttftMs, + totalMs, + outputTokens, + tokensPerSec: (outputTokens / Math.max(totalMs - ttftMs, 1)) * 1000, +}); + +describe('nthPercentile', () => { + it('returns 0 for an empty list', () => { + expect(nthPercentile([], 50)).toBe(0); + }); + + it('returns the only value for a single-element list', () => { + expect(nthPercentile([42], 50)).toBe(42); + expect(nthPercentile([42], 95)).toBe(42); + }); + + it('linearly interpolates between sorted samples', () => { + expect(nthPercentile([10, 20, 30], 50)).toBe(20); + // p100 over any list returns max + expect(nthPercentile([10, 20, 30], 100)).toBe(30); + // p95 over n=3: rank = 0.95*(3-1) = 1.9 → between idx 1 (20) and idx 2 (30), 90% toward 30 → 29 + expect(nthPercentile([10, 20, 30], 95)).toBeCloseTo(29, 5); + }); + + it('is order-independent (sorts internally)', () => { + expect(nthPercentile([30, 10, 20], 50)).toBe(20); + }); +}); + +describe('measureLatency (mocked trial runner)', () => { + beforeEach(() => { + mockAnthropicStream.mockReset(); + mockGoogleStream.mockReset(); + }); + + const opts = (overrides: Partial = {}): MeasureLatencyOptions => ({ + env: { anthropicApiKey: 'sk-test' }, + modelId: 'claude-opus-4-7', + prompt: 'hi', + trials: 3, + ...overrides, + }); + + it('runs N trials and reports p50/p95/mean over them', async () => { + const trials = [makeTrial(100, 500), makeTrial(150, 600), makeTrial(200, 700)]; + let i = 0; + const result = await measureLatency(opts(), { + trialRunner: async () => trials[i++] as LatencyTrial, + }); + expect(result.trials).toHaveLength(3); + expect(result.p50.ttftMs).toBe(150); + expect(result.p50.totalMs).toBe(600); + // p95 over 3 trials: linear interp at rank 1.9 → 90% from idx 1 to idx 2 + expect(result.p95.ttftMs).toBeCloseTo(195, 5); + expect(result.p95.totalMs).toBeCloseTo(690, 5); + expect(result.mean.ttftMs).toBe(150); + expect(result.mean.totalMs).toBeCloseTo(600, 0); + }); + + it('accepts trials=1 and returns the single trial in p50/p95/mean', async () => { + const result = await measureLatency(opts({ trials: 1 }), { + trialRunner: async () => makeTrial(123, 456), + }); + expect(result.trials).toHaveLength(1); + expect(result.p50.ttftMs).toBe(123); + expect(result.p95.ttftMs).toBe(123); + expect(result.mean.ttftMs).toBe(123); + }); + + it('retries a failed trial once before throwing', async () => { + let calls = 0; + const trial = makeTrial(100, 500); + const runner = vi.fn(async () => { + calls++; + if (calls === 1) throw new Error('transient'); + return trial; + }); + const result = await measureLatency(opts({ trials: 1 }), { trialRunner: runner }); + expect(runner).toHaveBeenCalledTimes(2); + expect(result.trials[0]).toEqual(trial); + }); + + it('throws when both attempts fail with the original provider message', async () => { + const runner = vi.fn(async () => { + throw new Error('rate-limited 429'); + }); + await expect(measureLatency(opts({ trials: 1 }), { trialRunner: runner })).rejects.toThrow( + /rate-limited 429/, + ); + expect(runner).toHaveBeenCalledTimes(2); + }); + + it('passes the resolved provider through to the trial runner', async () => { + const seen: Provider[] = []; + const runner = async (provider: Provider) => { + seen.push(provider); + return makeTrial(100, 500); + }; + await measureLatency(opts({ modelId: 'gpt-4o', env: { openaiApiKey: 'sk-x' }, trials: 1 }), { + trialRunner: runner, + }); + expect(seen).toEqual(['openai']); + }); + + it('computes tokensPerSec from outputTokens / (totalMs - ttftMs)', async () => { + // 200 tokens generated in 800 ms (after 200 ms TTFT) → 250 tokens/sec + const result = await measureLatency(opts({ trials: 1 }), { + trialRunner: async () => makeTrial(200, 1000, 200), + }); + expect(result.trials[0]?.tokensPerSec).toBeCloseTo(250, 0); + expect(result.p50.tokensPerSec).toBeCloseTo(250, 0); + }); +}); + +describe('measureLatency (provider trial runners, mocked I/O)', () => { + beforeEach(() => { + mockAnthropicStream.mockReset(); + mockGoogleStream.mockReset(); + }); + + it('Anthropic: tracks TTFT on first text_delta and outputTokens from message_delta usage', async () => { + // Build an async iterable yielding Anthropic stream events. + mockAnthropicStream.mockImplementation(() => ({ + [Symbol.asyncIterator]: async function* () { + yield { type: 'message_start', message: { usage: { output_tokens: 0 } } }; + yield { type: 'content_block_start', index: 0 }; + yield { type: 'content_block_delta', delta: { type: 'text_delta', text: 'hello' } }; + yield { type: 'content_block_delta', delta: { type: 'text_delta', text: ' world' } }; + yield { type: 'message_delta', usage: { output_tokens: 47 } }; + yield { type: 'message_stop' }; + }, + })); + const result = await measureLatency({ + env: { anthropicApiKey: 'sk-test' }, + modelId: 'claude-opus-4-7', + prompt: 'hi', + trials: 1, + }); + expect(result.trials).toHaveLength(1); + expect(result.trials[0]?.outputTokens).toBe(47); + // ttft / total are wall-clock so we just assert non-negative bounds + expect(result.trials[0]?.ttftMs).toBeGreaterThanOrEqual(0); + expect(result.trials[0]?.totalMs).toBeGreaterThanOrEqual(result.trials[0]?.ttftMs ?? 0); + }); + + it('Anthropic: throws when ANTHROPIC_API_KEY is missing', async () => { + await expect( + measureLatency({ + env: {}, + modelId: 'claude-opus-4-7', + prompt: 'hi', + trials: 1, + }), + ).rejects.toThrow(/ANTHROPIC_API_KEY/); + }); + + it('Google: tracks TTFT on first non-empty chunk and outputTokens from usageMetadata', async () => { + mockGoogleStream.mockImplementation(async () => ({ + stream: { + [Symbol.asyncIterator]: async function* () { + yield { text: () => 'hi', usageMetadata: { candidatesTokenCount: 0 } }; + yield { text: () => ' there', usageMetadata: { candidatesTokenCount: 31 } }; + }, + }, + })); + const result = await measureLatency({ + env: { googleApiKey: 'AIza-x' }, + modelId: 'gemini-2.5-pro', + prompt: 'hi', + trials: 1, + }); + expect(result.trials[0]?.outputTokens).toBe(31); + }); + + it('Google: throws when GOOGLE_API_KEY is missing', async () => { + await expect( + measureLatency({ + env: {}, + modelId: 'gemini-2.5-pro', + prompt: 'hi', + trials: 1, + }), + ).rejects.toThrow(/GOOGLE_API_KEY/); + }); + + it('OpenAI: parses SSE stream, picks up TTFT on first delta.content, usage on the final event', async () => { + const sseBody = [ + 'data: {"choices":[{"delta":{"role":"assistant"}}]}\n\n', + 'data: {"choices":[{"delta":{"content":"hello"}}]}\n\n', + 'data: {"choices":[{"delta":{"content":" world"}}]}\n\n', + 'data: {"choices":[{"delta":{},"finish_reason":"stop"}],"usage":{"completion_tokens":17}}\n\n', + 'data: [DONE]\n\n', + ].join(''); + const fetchMock = vi.fn( + async () => + new Response(sseBody, { + headers: { 'Content-Type': 'text/event-stream' }, + status: 200, + }), + ) as unknown as typeof fetch; + const result = await measureLatency( + { + env: { openaiApiKey: 'sk-test' }, + modelId: 'gpt-4o', + prompt: 'hi', + trials: 1, + }, + { fetchImpl: fetchMock }, + ); + expect(result.trials[0]?.outputTokens).toBe(17); + expect(fetchMock).toHaveBeenCalledTimes(1); + }); + + it('OpenAI: throws when OPENAI_API_KEY is missing', async () => { + await expect( + measureLatency({ + env: {}, + modelId: 'gpt-4o', + prompt: 'hi', + trials: 1, + }), + ).rejects.toThrow(/OPENAI_API_KEY/); + }); + + it('OpenAI: throws on non-2xx response', async () => { + const fetchMock = vi.fn( + async () => new Response('forbidden', { status: 403, statusText: 'Forbidden' }), + ) as unknown as typeof fetch; + await expect( + measureLatency( + { env: { openaiApiKey: 'bad' }, modelId: 'gpt-4o', prompt: 'hi', trials: 1 }, + { fetchImpl: fetchMock }, + ), + ).rejects.toThrow(/OpenAI .* 403/); + }); + + it('Mistral: parses SSE stream and extracts usage', async () => { + const sseBody = [ + 'data: {"choices":[{"delta":{"role":"assistant"}}]}\n\n', + 'data: {"choices":[{"delta":{"content":"bonjour"}}]}\n\n', + 'data: {"choices":[{"delta":{},"finish_reason":"stop"}],"usage":{"completion_tokens":9}}\n\n', + 'data: [DONE]\n\n', + ].join(''); + const fetchMock = vi.fn( + async () => + new Response(sseBody, { + headers: { 'Content-Type': 'text/event-stream' }, + status: 200, + }), + ) as unknown as typeof fetch; + const result = await measureLatency( + { + env: { mistralApiKey: 'mi-test' }, + modelId: 'open-mistral-7b', + prompt: 'hi', + trials: 1, + }, + { fetchImpl: fetchMock }, + ); + expect(result.trials[0]?.outputTokens).toBe(9); + }); + + it('Mistral: throws when MISTRAL_API_KEY is missing', async () => { + await expect( + measureLatency({ + env: {}, + modelId: 'open-mistral-7b', + prompt: 'hi', + trials: 1, + }), + ).rejects.toThrow(/MISTRAL_API_KEY/); + }); + + it('Cohere: parses NDJSON stream and extracts output_tokens from stream-end', async () => { + const ndjson = [ + JSON.stringify({ event_type: 'stream-start', generation_id: 'x' }), + JSON.stringify({ event_type: 'text-generation', text: 'hi' }), + JSON.stringify({ event_type: 'text-generation', text: ' there' }), + JSON.stringify({ + event_type: 'stream-end', + finish_reason: 'COMPLETE', + response: { meta: { tokens: { output_tokens: 13 } } }, + }), + '', + ].join('\n'); + const fetchMock = vi.fn( + async () => + new Response(ndjson, { + headers: { 'Content-Type': 'application/stream+json' }, + status: 200, + }), + ) as unknown as typeof fetch; + const result = await measureLatency( + { + env: { cohereApiKey: 'co-test' }, + modelId: 'command-r-plus', + prompt: 'hi', + trials: 1, + }, + { fetchImpl: fetchMock }, + ); + expect(result.trials[0]?.outputTokens).toBe(13); + }); + + it('Cohere: throws when COHERE_API_KEY is missing', async () => { + await expect( + measureLatency({ + env: {}, + modelId: 'command-r-plus', + prompt: 'hi', + trials: 1, + }), + ).rejects.toThrow(/COHERE_API_KEY/); + }); +}); + +describe('LatencyResult shape', () => { + it('always exposes trials, p50, p95, and mean with the same field set', async () => { + const result = await measureLatency( + { + env: { anthropicApiKey: 'sk' }, + modelId: 'claude-opus-4-7', + prompt: 'hi', + trials: 2, + }, + { + trialRunner: async () => makeTrial(50, 200, 80), + }, + ); + expect(Object.keys(result).sort()).toEqual(['mean', 'p50', 'p95', 'trials']); + for (const key of ['p50', 'p95', 'mean'] as const) { + expect(Object.keys(result[key]).sort()).toEqual(['tokensPerSec', 'totalMs', 'ttftMs']); + } + }); +}); diff --git a/packages/core/src/latency.ts b/packages/core/src/latency.ts new file mode 100644 index 0000000..385e99c --- /dev/null +++ b/packages/core/src/latency.ts @@ -0,0 +1,483 @@ +// Real-generation latency measurement. +// +// Unlike `tokenizeEmpirical` (which calls the free `countTokens` endpoints), +// this dispatches a real metered streaming generation per provider and +// measures wall-clock TTFT (time to first token) + total stream duration + +// tokens/sec from the actual output. Reported as p50/p95/mean over `trials` +// runs so callers see a stable distribution rather than a single noisy run. +// +// Cost note: every trial is a metered chat completion. The CLI bumps the +// default `--max-spend` ceiling when `--latency` is on; see args.ts. + +import Anthropic from '@anthropic-ai/sdk'; +import { GoogleGenerativeAI } from '@google/generative-ai'; +import type { EmpiricalEnv } from './empirical.js'; +import { getModel } from './rates.js'; +import type { LatencyResult, LatencyStats, LatencyTrial, Provider } from './types.js'; + +export type { LatencyResult, LatencyStats, LatencyTrial }; + +export interface MeasureLatencyOptions { + modelId: string; + prompt: string; + trials: number; + maxTokens?: number; + env: EmpiricalEnv; +} + +const DEFAULT_MAX_TOKENS = 200; + +const ENV_VAR_NAME: Record = { + anthropicApiKey: 'ANTHROPIC_API_KEY', + cohereApiKey: 'COHERE_API_KEY', + googleApiKey: 'GOOGLE_API_KEY', + mistralApiKey: 'MISTRAL_API_KEY', + openaiApiKey: 'OPENAI_API_KEY', +}; + +const requireKey = (env: EmpiricalEnv, key: keyof EmpiricalEnv, provider: Provider): string => { + const value = env[key]; + if (!value) { + const envName = + key === 'googleApiKey' ? `${ENV_VAR_NAME[key]} (or GEMINI_API_KEY)` : ENV_VAR_NAME[key]; + throw new Error(`${provider} latency mode requires ${envName}`); + } + return value; +}; + +/** + * Linear-interpolation percentile. `p` is 0-100. With p95 over n=3 trials this + * just returns max(values), which is what we want for the "tail" reading. + */ +const nthPercentile = (values: readonly number[], p: number): number => { + if (values.length === 0) return 0; + const sorted = [...values].sort((a, b) => a - b); + if (sorted.length === 1) return sorted[0] as number; + const rank = (p / 100) * (sorted.length - 1); + const lower = Math.floor(rank); + const upper = Math.ceil(rank); + const lowerValue = sorted[lower] as number; + if (lower === upper) return lowerValue; + const upperValue = sorted[upper] as number; + return lowerValue + (upperValue - lowerValue) * (rank - lower); +}; + +const mean = (values: readonly number[]): number => { + if (values.length === 0) return 0; + let sum = 0; + for (const v of values) sum += v; + return sum / values.length; +}; + +const summarize = (trials: readonly LatencyTrial[]): LatencyResult => { + const ttft = trials.map((t) => t.ttftMs); + const total = trials.map((t) => t.totalMs); + const tps = trials.map((t) => t.tokensPerSec); + return { + trials: [...trials], + p50: { + ttftMs: nthPercentile(ttft, 50), + totalMs: nthPercentile(total, 50), + tokensPerSec: nthPercentile(tps, 50), + }, + p95: { + ttftMs: nthPercentile(ttft, 95), + totalMs: nthPercentile(total, 95), + tokensPerSec: nthPercentile(tps, 95), + }, + mean: { + ttftMs: mean(ttft), + totalMs: mean(total), + tokensPerSec: mean(tps), + }, + }; +}; + +const computeTokensPerSec = (outputTokens: number, ttftMs: number, totalMs: number): number => { + // Avoid divide-by-zero on instant streams (mocked tests, very fast paths). + const generationMs = Math.max(totalMs - ttftMs, 1); + return (outputTokens / generationMs) * 1000; +}; + +// --------------------------------------------------------------------------- +// Per-provider trial runners. Each returns one LatencyTrial. +// --------------------------------------------------------------------------- + +const trialAnthropic = async ( + modelId: string, + prompt: string, + maxTokens: number, + apiKey: string, +): Promise => { + const client = new Anthropic({ apiKey, dangerouslyAllowBrowser: true }); + const start = Date.now(); + let ttftMs = 0; + let outputTokens = 0; + const stream = client.messages.stream({ + max_tokens: maxTokens, + messages: [{ content: prompt, role: 'user' }], + model: modelId, + }); + for await (const event of stream as AsyncIterable) { + const e = event as { + type?: string; + delta?: { type?: string; text?: string }; + usage?: { output_tokens?: number }; + message?: { usage?: { output_tokens?: number } }; + }; + if ( + ttftMs === 0 && + e.type === 'content_block_delta' && + e.delta?.type === 'text_delta' && + typeof e.delta?.text === 'string' && + e.delta.text.length > 0 + ) { + ttftMs = Date.now() - start; + } + if (e.type === 'message_delta' && typeof e.usage?.output_tokens === 'number') { + outputTokens = e.usage.output_tokens; + } + if (e.type === 'message_start' && typeof e.message?.usage?.output_tokens === 'number') { + // initial usage is typically 0 — message_delta carries the running count + } + } + const totalMs = Date.now() - start; + return { + ttftMs: ttftMs || totalMs, + totalMs, + outputTokens, + tokensPerSec: computeTokensPerSec(outputTokens, ttftMs || totalMs, totalMs), + }; +}; + +const trialGoogle = async ( + modelId: string, + prompt: string, + maxTokens: number, + apiKey: string, +): Promise => { + const genAI = new GoogleGenerativeAI(apiKey); + const model = genAI.getGenerativeModel({ + model: modelId, + generationConfig: { maxOutputTokens: maxTokens }, + }); + const start = Date.now(); + let ttftMs = 0; + let outputTokens = 0; + const result = await model.generateContentStream(prompt); + for await (const chunk of result.stream) { + if (ttftMs === 0) { + const text = (chunk as { text?: () => string }).text?.(); + if (text && text.length > 0) ttftMs = Date.now() - start; + } + const usage = (chunk as { usageMetadata?: { candidatesTokenCount?: number } }).usageMetadata; + if (usage && typeof usage.candidatesTokenCount === 'number') { + outputTokens = usage.candidatesTokenCount; + } + } + const totalMs = Date.now() - start; + return { + ttftMs: ttftMs || totalMs, + totalMs, + outputTokens, + tokensPerSec: computeTokensPerSec(outputTokens, ttftMs || totalMs, totalMs), + }; +}; + +/** + * Generic SSE iterator. Yields one parsed JSON object per `data: …` line and + * stops on `data: [DONE]`. Used for OpenAI + Mistral (Cohere has its own + * NDJSON-style stream, see below). + */ +async function* iterSse( + body: ReadableStream, +): AsyncGenerator, void, unknown> { + const reader = body.getReader(); + const decoder = new TextDecoder('utf-8'); + let buf = ''; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + buf += decoder.decode(value, { stream: true }); + // Split on double-newline (SSE event boundary). + while (true) { + const idx = buf.indexOf('\n\n'); + if (idx === -1) break; + const eventBlock = buf.slice(0, idx); + buf = buf.slice(idx + 2); + for (const line of eventBlock.split('\n')) { + if (!line.startsWith('data:')) continue; + const payload = line.slice(5).trim(); + if (payload === '[DONE]' || payload.length === 0) return; + try { + yield JSON.parse(payload) as Record; + } catch { + // skip malformed line + } + } + } + } +} + +const trialOpenAi = async ( + modelId: string, + prompt: string, + maxTokens: number, + apiKey: string, + fetchImpl: typeof fetch = fetch, +): Promise => { + const start = Date.now(); + const response = await fetchImpl('https://api.openai.com/v1/chat/completions', { + method: 'POST', + headers: { + Authorization: `Bearer ${apiKey}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + model: modelId, + messages: [{ role: 'user', content: prompt }], + max_tokens: maxTokens, + stream: true, + stream_options: { include_usage: true }, + }), + }); + if (!response.ok || !response.body) { + const body = await response.text().catch(() => ''); + throw new Error( + `OpenAI /v1/chat/completions returned ${response.status} ${response.statusText}${body ? `: ${body}` : ''}`, + ); + } + let ttftMs = 0; + let outputTokens = 0; + for await (const ev of iterSse(response.body)) { + const choices = ev.choices as + | { delta?: { content?: string }; finish_reason?: string | null }[] + | undefined; + if (ttftMs === 0 && choices && choices[0]?.delta?.content) ttftMs = Date.now() - start; + const usage = ev.usage as { completion_tokens?: number } | undefined; + if (usage && typeof usage.completion_tokens === 'number') + outputTokens = usage.completion_tokens; + } + const totalMs = Date.now() - start; + return { + ttftMs: ttftMs || totalMs, + totalMs, + outputTokens, + tokensPerSec: computeTokensPerSec(outputTokens, ttftMs || totalMs, totalMs), + }; +}; + +const trialMistral = async ( + modelId: string, + prompt: string, + maxTokens: number, + apiKey: string, + fetchImpl: typeof fetch = fetch, +): Promise => { + const start = Date.now(); + const response = await fetchImpl('https://api.mistral.ai/v1/chat/completions', { + method: 'POST', + headers: { + Authorization: `Bearer ${apiKey}`, + 'Content-Type': 'application/json', + Accept: 'text/event-stream', + }, + body: JSON.stringify({ + model: modelId, + messages: [{ role: 'user', content: prompt }], + max_tokens: maxTokens, + stream: true, + }), + }); + if (!response.ok || !response.body) { + const body = await response.text().catch(() => ''); + throw new Error( + `Mistral /v1/chat/completions returned ${response.status} ${response.statusText}${body ? `: ${body}` : ''}`, + ); + } + let ttftMs = 0; + let outputTokens = 0; + for await (const ev of iterSse(response.body)) { + const choices = ev.choices as { delta?: { content?: string } }[] | undefined; + if (ttftMs === 0 && choices && choices[0]?.delta?.content) ttftMs = Date.now() - start; + const usage = ev.usage as { completion_tokens?: number } | undefined; + if (usage && typeof usage.completion_tokens === 'number') + outputTokens = usage.completion_tokens; + } + const totalMs = Date.now() - start; + return { + ttftMs: ttftMs || totalMs, + totalMs, + outputTokens, + tokensPerSec: computeTokensPerSec(outputTokens, ttftMs || totalMs, totalMs), + }; +}; + +const trialCohere = async ( + modelId: string, + prompt: string, + maxTokens: number, + apiKey: string, + fetchImpl: typeof fetch = fetch, +): Promise => { + // Cohere /v1/chat streams NDJSON (one JSON object per line), not SSE. + // See https://docs.cohere.com/reference/chat for event types + // (stream-start, text-generation, stream-end). + const start = Date.now(); + const response = await fetchImpl('https://api.cohere.com/v1/chat', { + method: 'POST', + headers: { + Authorization: `Bearer ${apiKey}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + model: modelId, + message: prompt, + max_tokens: maxTokens, + stream: true, + }), + }); + if (!response.ok || !response.body) { + const body = await response.text().catch(() => ''); + throw new Error( + `Cohere /v1/chat returned ${response.status} ${response.statusText}${body ? `: ${body}` : ''}`, + ); + } + const reader = response.body.getReader(); + const decoder = new TextDecoder('utf-8'); + let buf = ''; + let ttftMs = 0; + let outputTokens = 0; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + buf += decoder.decode(value, { stream: true }); + while (true) { + const nl = buf.indexOf('\n'); + if (nl === -1) break; + const line = buf.slice(0, nl).trim(); + buf = buf.slice(nl + 1); + if (!line) continue; + let ev: Record; + try { + ev = JSON.parse(line) as Record; + } catch { + continue; + } + if (ttftMs === 0 && ev.event_type === 'text-generation') ttftMs = Date.now() - start; + if (ev.event_type === 'stream-end') { + const resp = ev.response as { meta?: { tokens?: { output_tokens?: number } } } | undefined; + const out = resp?.meta?.tokens?.output_tokens; + if (typeof out === 'number') outputTokens = out; + } + } + } + const totalMs = Date.now() - start; + return { + ttftMs: ttftMs || totalMs, + totalMs, + outputTokens, + tokensPerSec: computeTokensPerSec(outputTokens, ttftMs || totalMs, totalMs), + }; +}; + +// --------------------------------------------------------------------------- +// Public API +// --------------------------------------------------------------------------- + +/** + * Test seam: callers (tests) can substitute a provider's trial runner. The + * production `measureLatency` always uses the real implementations above. + */ +export interface LatencyDeps { + fetchImpl?: typeof fetch; + trialRunner?: ( + provider: Provider, + modelId: string, + prompt: string, + maxTokens: number, + env: EmpiricalEnv, + ) => Promise; +} + +const defaultTrialRunner = async ( + provider: Provider, + modelId: string, + prompt: string, + maxTokens: number, + env: EmpiricalEnv, + fetchImpl: typeof fetch = fetch, +): Promise => { + switch (provider) { + case 'anthropic': + return trialAnthropic( + modelId, + prompt, + maxTokens, + requireKey(env, 'anthropicApiKey', provider), + ); + case 'google': + return trialGoogle(modelId, prompt, maxTokens, requireKey(env, 'googleApiKey', provider)); + case 'openai': + return trialOpenAi( + modelId, + prompt, + maxTokens, + requireKey(env, 'openaiApiKey', provider), + fetchImpl, + ); + case 'mistral': + return trialMistral( + modelId, + prompt, + maxTokens, + requireKey(env, 'mistralApiKey', provider), + fetchImpl, + ); + case 'cohere': + return trialCohere( + modelId, + prompt, + maxTokens, + requireKey(env, 'cohereApiKey', provider), + fetchImpl, + ); + } +}; + +/** + * Run `trials` real streaming generations and return percentile-summarized + * latency data. Each trial is retried once on failure; if both attempts + * fail, the original provider error is rethrown. + */ +export const measureLatency = async ( + options: MeasureLatencyOptions, + deps: LatencyDeps = {}, +): Promise => { + const provider = getModel(options.modelId).provider; + const maxTokens = options.maxTokens ?? DEFAULT_MAX_TOKENS; + const fetchImpl = deps.fetchImpl ?? fetch; + const runner = + deps.trialRunner ?? + ((p, m, prompt, max, env) => defaultTrialRunner(p, m, prompt, max, env, fetchImpl)); + const trials: LatencyTrial[] = []; + for (let i = 0; i < options.trials; i++) { + let lastErr: unknown; + let success: LatencyTrial | null = null; + for (let attempt = 0; attempt < 2; attempt++) { + try { + success = await runner(provider, options.modelId, options.prompt, maxTokens, options.env); + break; + } catch (err) { + lastErr = err; + } + } + if (!success) { + throw lastErr instanceof Error ? lastErr : new Error(String(lastErr)); + } + trials.push(success); + } + return summarize(trials); +}; + +export { nthPercentile }; diff --git a/packages/core/src/mistral-tokenizer-js.d.ts b/packages/core/src/mistral-tokenizer-js.d.ts new file mode 100644 index 0000000..2bedcef --- /dev/null +++ b/packages/core/src/mistral-tokenizer-js.d.ts @@ -0,0 +1,19 @@ +// Ambient module declaration for `mistral-tokenizer-js` (no types ship upstream). +// +// The package is a single file at `node_modules/mistral-tokenizer-js/mistral-tokenizer.js` +// with `export default mistralTokenizer` where `mistralTokenizer` is an object +// exposing `encode(text, addBos?, addPrecedingSpace?)` → `number[]` and +// `decode(ids, addBos?, addPrecedingSpace?)` → `string`. +// +// We only use `.encode(text)` from `tokenize-mistral.ts`. The signature below +// mirrors the upstream README; defaults add the BOS token and a leading space. + +declare module 'mistral-tokenizer-js' { + interface MistralTokenizer { + encode(text: string, addBos?: boolean, addPrecedingSpace?: boolean): number[]; + decode(ids: readonly number[], addBos?: boolean, addPrecedingSpace?: boolean): string; + } + + const mistralTokenizer: MistralTokenizer; + export default mistralTokenizer; +} diff --git a/packages/core/src/rates.test.ts b/packages/core/src/rates.test.ts index 28d1cf6..c97ec89 100644 --- a/packages/core/src/rates.test.ts +++ b/packages/core/src/rates.test.ts @@ -22,10 +22,29 @@ describe('rates', () => { it('every model carries a provider', () => { for (const modelId of KNOWN_MODELS) { - expect(MODELS[modelId]?.provider).toMatch(/^(anthropic|google|openai)$/); + expect(MODELS[modelId]?.provider).toMatch(/^(anthropic|cohere|google|mistral|openai)$/); } }); + it('catalog includes Mistral models from tokenlens', () => { + // open-mistral-7b is a stable id Mistral has shipped since 2023. + expect(KNOWN_MODELS).toContain('open-mistral-7b'); + expect(MODELS['open-mistral-7b']?.provider).toBe('mistral'); + // mistral-nemo is the canary Tekken-family model. + expect(KNOWN_MODELS).toContain('mistral-nemo'); + expect(MODELS['mistral-nemo']?.provider).toBe('mistral'); + }); + + it('catalog includes Cohere models via local overrides', () => { + // tokenlens does not ship a Cohere catalog at v1.3.0 — these come from + // LOCAL_OVERRIDES. Update once tokenlens adds Cohere upstream. + expect(KNOWN_MODELS).toContain('command-r-plus'); + expect(MODELS['command-r-plus']?.provider).toBe('cohere'); + expect(MODELS['command-r-plus']?.pricingSource).toBe('local'); + expect(KNOWN_MODELS).toContain('command-r'); + expect(MODELS['command-r']?.provider).toBe('cohere'); + }); + it('canary pricing for stable upstream models matches expected dollars', () => { expect(getRate('gpt-4o').inputPer1k).toBe(0.0025); expect(getRate('gpt-4o').outputPer1k).toBe(0.01); diff --git a/packages/core/src/rates.ts b/packages/core/src/rates.ts index 59afc1e..f3da87e 100644 --- a/packages/core/src/rates.ts +++ b/packages/core/src/rates.ts @@ -1,19 +1,24 @@ import type { ProvidersCatalog } from '@tokenlens/core'; import anthropicProvider from '@tokenlens/models/anthropic'; import googleProvider from '@tokenlens/models/google'; +import mistralProvider from '@tokenlens/models/mistral'; import openaiProvider from '@tokenlens/models/openai'; import { getContext, getTokenCosts } from 'tokenlens'; import type { ModelDescriptor, Provider, RateEntry } from './types.js'; -export const RATES_VERSION = '2026-05-08'; +export const RATES_VERSION = '2026-05-09'; +// `@tokenlens/models` does not yet ship a Cohere catalog (verified against +// node_modules/@tokenlens/models/dist/providers/ at v1.3.0). When upstream +// adds it, drop the Cohere LOCAL_OVERRIDES entry and add the import here. const CATALOG: ProvidersCatalog = { anthropic: anthropicProvider, google: googleProvider, + mistral: mistralProvider, openai: openaiProvider, }; -const PROVIDERS: readonly Provider[] = ['anthropic', 'google', 'openai']; +const PROVIDERS: readonly Provider[] = ['anthropic', 'google', 'mistral', 'openai']; interface RegistryEntry { rate: RateEntry; @@ -22,6 +27,10 @@ interface RegistryEntry { // Bleeding-edge models tokenlens hasn't picked up from upstream yet. // Remove an entry once `scripts/check-overrides.mjs` reports it landed. +// +// Cohere entries are also here because `@tokenlens/models` does not yet +// ship a Cohere catalog at all (v1.3.0). Pricing pulled from the published +// Cohere pricing page (cohere.com/pricing) at RATES_VERSION date. const LOCAL_OVERRIDES: Record = { 'claude-haiku-4-5': { rate: { cachedInputPer1k: 0.0001, inputPer1k: 0.001, outputPer1k: 0.005 }, @@ -53,6 +62,26 @@ const LOCAL_OVERRIDES: Record = { provider: 'anthropic', }, }, + 'command-r': { + rate: { inputPer1k: 0.00015, outputPer1k: 0.0006 }, + descriptor: { + contextWindow: 128_000, + id: 'command-r', + maxOutputTokens: 4096, + pricingSource: 'local', + provider: 'cohere', + }, + }, + 'command-r-plus': { + rate: { inputPer1k: 0.0025, outputPer1k: 0.01 }, + descriptor: { + contextWindow: 128_000, + id: 'command-r-plus', + maxOutputTokens: 4096, + pricingSource: 'local', + provider: 'cohere', + }, + }, }; // Raw models.dev catalog data has no explicit status field; infer "preview" from diff --git a/packages/core/src/tokenize-cohere.test.ts b/packages/core/src/tokenize-cohere.test.ts new file mode 100644 index 0000000..af0139f --- /dev/null +++ b/packages/core/src/tokenize-cohere.test.ts @@ -0,0 +1,61 @@ +import { describe, expect, it, vi } from 'vitest'; +import { cohereCount, cohereTokenizeApi } from './tokenize-cohere.js'; + +describe('cohereCount (offline)', () => { + it('returns chars/4 heuristic count flagged approximate', () => { + const result = cohereCount('a'.repeat(20)); + expect(result.tokens).toBe(5); + expect(result.approximate).toBe(true); + expect(result.tokenizer).toBe('heuristic'); + }); + + it('count scales with input length', () => { + const short = cohereCount('hi'); + const long = cohereCount('hi'.repeat(200)); + expect(long.tokens).toBeGreaterThan(short.tokens); + }); +}); + +describe('cohereTokenizeApi (empirical, mocked)', () => { + it('POSTs to /v1/tokenize with bearer auth and returns tokens.length', async () => { + const fetchMock = vi.fn( + async () => + new Response(JSON.stringify({ tokens: [1, 2, 3, 4, 5] }), { + headers: { 'Content-Type': 'application/json' }, + status: 200, + }), + ) as unknown as typeof fetch; + + const count = await cohereTokenizeApi('hello', 'command-r-plus', 'fake-key', fetchMock); + expect(count).toBe(5); + + expect(fetchMock).toHaveBeenCalledTimes(1); + const [url, init] = (fetchMock as unknown as ReturnType).mock.calls[0]; + expect(url).toBe('https://api.cohere.com/v1/tokenize'); + expect(init.method).toBe('POST'); + expect(init.headers.Authorization).toBe('Bearer fake-key'); + expect(JSON.parse(init.body)).toEqual({ model: 'command-r-plus', text: 'hello' }); + }); + + it('throws a clear error on non-2xx', async () => { + const fetchMock = vi.fn( + async () => new Response('unauthorized', { status: 401, statusText: 'Unauthorized' }), + ) as unknown as typeof fetch; + await expect(cohereTokenizeApi('hi', 'command-r', 'bad-key', fetchMock)).rejects.toThrow( + /Cohere \/v1\/tokenize returned 401/, + ); + }); + + it('throws when response shape is unexpected', async () => { + const fetchMock = vi.fn( + async () => + new Response(JSON.stringify({ ok: true }), { + headers: { 'Content-Type': 'application/json' }, + status: 200, + }), + ) as unknown as typeof fetch; + await expect(cohereTokenizeApi('hi', 'command-r', 'k', fetchMock)).rejects.toThrow( + /unexpected shape/, + ); + }); +}); diff --git a/packages/core/src/tokenize-cohere.ts b/packages/core/src/tokenize-cohere.ts new file mode 100644 index 0000000..1ec32dd --- /dev/null +++ b/packages/core/src/tokenize-cohere.ts @@ -0,0 +1,72 @@ +// Cohere tokenizer dispatch. +// +// Cohere ships their tokenizers as `tokenizer.json` files on HuggingFace +// (e.g. `Cohere/command-r-plus`). The `cohere-ai` SDK is a thin REST client +// — it does NOT bundle an offline tokenizer, only a `client.tokenize()` +// method that hits Cohere's API. Confirmed against `cohere-ai@8.0.0` at the +// time of writing (May 2026). So: +// +// * Offline mode: chars/4 heuristic, `approximate: true`. Same accuracy +// tier as the Google heuristic in tokenize.ts. +// +// * Empirical mode: POST https://api.cohere.com/v1/tokenize. The endpoint +// is free and very low latency. Wired in `empirical.ts`. +// +// We deliberately do NOT depend on `cohere-ai` for the empirical path — it +// is a 4.9 MB SDK and we only need one POST. Native `fetch` keeps the +// install footprint identical to the offline-only build. +// +// Future upgrade: once `@huggingface/tokenizers` is stable (Path D in the +// research memo), lazy-load `tokenizer.json` per Cohere model from HF Hub +// for exact offline counts. + +const COHERE_HEURISTIC_CHARS_PER_TOKEN = 4; + +export interface CohereCountResult { + approximate: true; + tokens: number; + tokenizer: 'heuristic'; +} + +export const cohereCount = (text: string): CohereCountResult => ({ + approximate: true, + tokens: Math.ceil(text.length / COHERE_HEURISTIC_CHARS_PER_TOKEN), + tokenizer: 'heuristic', +}); + +/** + * Hits Cohere's `POST /v1/tokenize` endpoint. The response shape we care + * about is `{ tokens: number[] }`; only `tokens.length` is used. + * + * Endpoint reference: https://docs.cohere.com/reference/tokenize + * + * Returns the exact token count. Pulled out of `empirical.ts` so the + * dependency surface (one fetch call, no SDK) stays here next to the + * offline path it complements. + */ +export const cohereTokenizeApi = async ( + text: string, + modelId: string, + apiKey: string, + fetchImpl: typeof fetch = fetch, +): Promise => { + const response = await fetchImpl('https://api.cohere.com/v1/tokenize', { + body: JSON.stringify({ model: modelId, text }), + headers: { + Authorization: `Bearer ${apiKey}`, + 'Content-Type': 'application/json', + }, + method: 'POST', + }); + if (!response.ok) { + const body = await response.text().catch(() => ''); + throw new Error( + `Cohere /v1/tokenize returned ${response.status} ${response.statusText}${body ? `: ${body}` : ''}`, + ); + } + const data = (await response.json()) as { tokens?: number[] }; + if (!Array.isArray(data.tokens)) { + throw new Error('Cohere /v1/tokenize returned an unexpected shape (no tokens array).'); + } + return data.tokens.length; +}; diff --git a/packages/core/src/tokenize-mistral.test.ts b/packages/core/src/tokenize-mistral.test.ts new file mode 100644 index 0000000..cbb680b --- /dev/null +++ b/packages/core/src/tokenize-mistral.test.ts @@ -0,0 +1,59 @@ +import { describe, expect, it } from 'vitest'; +import { isTekken, mistralCount } from './tokenize-mistral.js'; + +describe('isTekken', () => { + it('classifies known Tekken-family models as Tekken', () => { + expect(isTekken('mistral-nemo')).toBe(true); + expect(isTekken('pixtral-12b')).toBe(true); + expect(isTekken('pixtral-large-latest')).toBe(true); + expect(isTekken('mistral-medium-2505')).toBe(true); + expect(isTekken('magistral-small')).toBe(true); + expect(isTekken('ministral-3b-latest')).toBe(true); + expect(isTekken('devstral-small-2505')).toBe(true); + }); + + it('classifies SentencePiece-era ids as not Tekken', () => { + expect(isTekken('open-mistral-7b')).toBe(false); + expect(isTekken('open-mixtral-8x7b')).toBe(false); + expect(isTekken('open-mixtral-8x22b')).toBe(false); + expect(isTekken('codestral-latest')).toBe(false); + expect(isTekken('mistral-large-latest')).toBe(false); + }); +}); + +describe('mistralCount', () => { + it('uses the SentencePiece tokenizer for V1/V2/V3 models', () => { + const result = mistralCount('Hello, world!', 'open-mistral-7b'); + expect(result.tokenizer).toBe('mistral_v1_v3'); + expect(result.approximate).toBe(true); + // mistral-tokenizer-js prepends BOS + leading space → at minimum a few tokens. + expect(result.tokens).toBeGreaterThan(0); + }); + + it('SentencePiece counts scale with input length', () => { + const short = mistralCount('hi', 'open-mistral-7b'); + const long = mistralCount('hi '.repeat(200), 'open-mistral-7b'); + expect(long.tokens).toBeGreaterThan(short.tokens); + }); + + it('falls back to chars/4 heuristic for Tekken models', () => { + // 16 chars → ceil(16 / 4) = 4 tokens. + const text = 'a'.repeat(16); + const result = mistralCount(text, 'mistral-nemo'); + expect(result.tokenizer).toBe('heuristic'); + expect(result.approximate).toBe(true); + expect(result.tokens).toBe(4); + }); + + it('Tekken heuristic and SentencePiece path can disagree (sanity: same input, different tokens)', () => { + const text = 'The quick brown fox jumps over the lazy dog.'; + const sp = mistralCount(text, 'open-mistral-7b'); + const tk = mistralCount(text, 'mistral-nemo'); + // Different families, different counts — test only that both produce something positive. + expect(sp.tokens).toBeGreaterThan(0); + expect(tk.tokens).toBeGreaterThan(0); + // Both paths are flagged approximate (the contract is uniform). + expect(sp.approximate).toBe(true); + expect(tk.approximate).toBe(true); + }); +}); diff --git a/packages/core/src/tokenize-mistral.ts b/packages/core/src/tokenize-mistral.ts new file mode 100644 index 0000000..a2fe86e --- /dev/null +++ b/packages/core/src/tokenize-mistral.ts @@ -0,0 +1,84 @@ +// Mistral tokenizer dispatch. +// +// Mistral has shipped two tokenizer families: +// +// 1. SentencePiece (V1/V2/V3) — the "classic" Mistral family. Covered by +// `mistral-tokenizer-js` (mistralTokenizer.encode → number[]). Models: +// Mistral 7B (v0.1/v0.2/v0.3), Mixtral 8x7B / 8x22B, +// Mistral Large 2407, Mistral Small 2402, Codestral 22B. +// +// 2. Tekken — a tiktoken-style 128k BPE introduced with Mistral NeMo +// (Jul 2024). Used by NeMo, Pixtral, Mistral Small 2409+, Devstral, +// Mistral Medium 2505+, Magistral, Ministral. NOT covered by +// `mistral-tokenizer-js`. Applying SentencePiece to Tekken models would +// give systematically wrong counts (different vocab, ~32k vs ~128k), so +// we fall back to the same `chars/4` heuristic used for Google. +// +// Both paths set `approximate: true` because: +// - Mistral does not publish an offline reference tokenizer for newer +// models, and even the SentencePiece path is "compatible with most" +// per the upstream README — no formal validation guarantee. +// - Mistral has no public free /v1/tokenize endpoint as of May 2026, so +// there's no empirical anchor available either. +// +// Future upgrade path (Path D in the research memo): once +// `@huggingface/tokenizers` reaches v1.0, lazy-load `tokenizer.json` per +// model for exact counts behind an opt-in flag. + +import mistralTokenizer from 'mistral-tokenizer-js'; +import type { TokenizerKind } from './types.js'; + +/** + * Mistral model IDs that use the Tekken tokenizer (post-NeMo families). + * + * Cross-reference list curated from the integration memo. Update as Mistral + * releases new model IDs; default-on-unknown is heuristic too, so this set + * is allowlist-style for SentencePiece, not the other way around. + */ +const TEKKEN_MODELS: ReadonlySet = new Set([ + 'mistral-nemo', + 'pixtral-12b', + 'pixtral-large-latest', + 'mistral-small-latest', + 'devstral-small-2505', + 'devstral-small-2507', + 'devstral-medium-2507', + 'mistral-medium-2505', + 'mistral-medium-2508', + 'mistral-medium-latest', + 'magistral-small', + 'magistral-medium-latest', + 'ministral-3b-latest', + 'ministral-8b-latest', +]); + +export const isTekken = (modelId: string): boolean => TEKKEN_MODELS.has(modelId); + +const MISTRAL_HEURISTIC_CHARS_PER_TOKEN = 4; + +const heuristicCount = (text: string): number => + Math.ceil(text.length / MISTRAL_HEURISTIC_CHARS_PER_TOKEN); + +export interface MistralCountResult { + approximate: true; + tokens: number; + tokenizer: 'heuristic' | 'mistral_v1_v3'; +} + +/** + * Count tokens for a Mistral model. Always `approximate: true` (see file + * header). For SentencePiece models, returns the `mistral-tokenizer-js` + * count (BOS token included, matching the library's default). For Tekken + * models (and any unknown ID — defensive), returns a `chars/4` heuristic. + */ +export const mistralCount = (text: string, modelId: string): MistralCountResult => { + if (isTekken(modelId)) { + return { approximate: true, tokens: heuristicCount(text), tokenizer: 'heuristic' }; + } + // SentencePiece path. `encode()` returns number[] including the BOS token + // by default — this matches what Mistral's chat completions endpoint + // would actually charge for, so we do not strip it. + const ids = mistralTokenizer.encode(text); + const tokenizer: TokenizerKind = 'mistral_v1_v3'; + return { approximate: true, tokens: ids.length, tokenizer }; +}; diff --git a/packages/core/src/tokenize.test.ts b/packages/core/src/tokenize.test.ts index 82b3fd1..60e5ba9 100644 --- a/packages/core/src/tokenize.test.ts +++ b/packages/core/src/tokenize.test.ts @@ -21,6 +21,25 @@ describe('countTokens', () => { expect(result.tokenizer).toBe('heuristic'); }); + it('flags Mistral SentencePiece counts as approximate (mistral_v1_v3)', () => { + const result = countTokens('Hello, world!', 'mistral', 'open-mistral-7b'); + expect(result.approximate).toBe(true); + expect(result.tokenizer).toBe('mistral_v1_v3'); + expect(result.count).toBeGreaterThan(0); + }); + + it('flags Mistral Tekken counts as approximate (heuristic)', () => { + const result = countTokens('Hello, world!', 'mistral', 'mistral-nemo'); + expect(result.approximate).toBe(true); + expect(result.tokenizer).toBe('heuristic'); + }); + + it('flags Cohere counts as approximate (heuristic only)', () => { + const result = countTokens('Hello, world!', 'cohere', 'command-r-plus'); + expect(result.approximate).toBe(true); + expect(result.tokenizer).toBe('heuristic'); + }); + it('count scales with input length', () => { const short = countTokens('hi', 'openai'); const long = countTokens('hi'.repeat(200), 'openai'); @@ -57,6 +76,32 @@ describe('tokenize', () => { tokenize({ format: 'text', modelId: 'gemini-2.5-pro', prompt: sample }).approximate, ).toBe(true); }); + + it('dispatches a Mistral SentencePiece model end-to-end via tokenize()', () => { + const result = tokenize({ format: 'text', modelId: 'open-mistral-7b', prompt: 'Hi there.' }); + expect(result.provider).toBe('mistral'); + expect(result.tokenizer).toBe('mistral_v1_v3'); + expect(result.approximate).toBe(true); + expect(result.inputTokens).toBeGreaterThan(0); + expect(result.inputCost).toBeGreaterThan(0); + }); + + it('dispatches a Mistral Tekken model to the heuristic path', () => { + const result = tokenize({ format: 'text', modelId: 'mistral-nemo', prompt: 'Hi there.' }); + expect(result.provider).toBe('mistral'); + expect(result.tokenizer).toBe('heuristic'); + expect(result.approximate).toBe(true); + expect(result.inputTokens).toBeGreaterThan(0); + expect(result.inputCost).toBeGreaterThan(0); + }); + + it('dispatches a Cohere model to the heuristic path', () => { + const result = tokenize({ format: 'text', modelId: 'command-r-plus', prompt: 'Hi there.' }); + expect(result.provider).toBe('cohere'); + expect(result.tokenizer).toBe('heuristic'); + expect(result.approximate).toBe(true); + expect(result.inputCost).toBeGreaterThan(0); + }); }); describe('tokenizeMatrix', () => { diff --git a/packages/core/src/tokenize.ts b/packages/core/src/tokenize.ts index 2ac9e8d..c431482 100644 --- a/packages/core/src/tokenize.ts +++ b/packages/core/src/tokenize.ts @@ -2,11 +2,15 @@ import { encode as encodeCl100k } from 'gpt-tokenizer/encoding/cl100k_base'; import { encode as encodeO200k } from 'gpt-tokenizer/encoding/o200k_base'; import { toFormat } from './convert.js'; import { getModel, getRate } from './rates.js'; +import { cohereCount } from './tokenize-cohere.js'; +import { mistralCount } from './tokenize-mistral.js'; import type { Format, Provider, TokenizeResult, TokenizerKind } from './types.js'; const HEURISTIC_CHARS_PER_TOKEN: Record = { anthropic: 3.5, + cohere: 4, google: 4, + mistral: 4, openai: 4, }; @@ -19,7 +23,7 @@ export interface CountResult { tokenizer: TokenizerKind; } -export const countTokens = (text: string, provider: Provider): CountResult => { +export const countTokens = (text: string, provider: Provider, modelId?: string): CountResult => { switch (provider) { case 'openai': return { approximate: false, count: encodeO200k(text).length, tokenizer: 'o200k_base' }; @@ -31,6 +35,19 @@ export const countTokens = (text: string, provider: Provider): CountResult => { count: heuristicCount(text, 'google'), tokenizer: 'heuristic', }; + case 'mistral': { + // SentencePiece for v1/v2/v3 families; chars/4 heuristic for Tekken + // (NeMo, Pixtral, Devstral, Magistral, Ministral, Mistral Medium 2505+). + // See tokenize-mistral.ts for the full split. + const r = mistralCount(text, modelId ?? ''); + return { approximate: r.approximate, count: r.tokens, tokenizer: r.tokenizer }; + } + case 'cohere': { + // Cohere SDK is REST-only; no offline tokenizer ships in JS today. + // Empirical mode hits POST /v1/tokenize for exact counts. + const r = cohereCount(text); + return { approximate: r.approximate, count: r.tokens, tokenizer: r.tokenizer }; + } } }; @@ -44,7 +61,7 @@ export const tokenize = (options: TokenizeOptions): TokenizeResult => { const model = getModel(options.modelId); const rate = getRate(options.modelId); const converted = toFormat(options.prompt, options.format); - const counted = countTokens(converted, model.provider); + const counted = countTokens(converted, model.provider, model.id); const inputCost = (counted.count / 1000) * rate.inputPer1k; return { approximate: counted.approximate, diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index db60016..8485c97 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -1,4 +1,4 @@ -export type Provider = 'anthropic' | 'openai' | 'google'; +export type Provider = 'anthropic' | 'cohere' | 'google' | 'mistral' | 'openai'; export type Format = 'json' | 'markdown' | 'text' | 'xml' | 'yaml'; @@ -16,6 +16,29 @@ export interface RateEntry { outputPer1k: number; } +// Forward-declare the LatencyResult shape here so `TokenizeResult` can +// reference it without creating a circular import. The canonical definition +// lives in `latency.ts` and is re-exported from `index.ts`. +export interface LatencyTrial { + ttftMs: number; + totalMs: number; + outputTokens: number; + tokensPerSec: number; +} + +export interface LatencyStats { + ttftMs: number; + totalMs: number; + tokensPerSec: number; +} + +export interface LatencyResult { + trials: LatencyTrial[]; + p50: LatencyStats; + p95: LatencyStats; + mean: LatencyStats; +} + export interface TokenizeResult { approximate: boolean; format: Format; @@ -24,9 +47,13 @@ export interface TokenizeResult { model: string; provider: Provider; tokenizer: TokenizerKind; + // Populated only when the caller passed `--latency` (CLI) or invoked + // `measureLatency` directly. Stays absent on plain offline / empirical + // paths so SARIF and JSON consumers don't have to thread the field. + latency?: LatencyResult; } -export type TokenizerKind = 'cl100k_base' | 'heuristic' | 'o200k_base'; +export type TokenizerKind = 'cl100k_base' | 'heuristic' | 'mistral_v1_v3' | 'o200k_base'; export interface EmpiricalResult extends TokenizeResult { cachedInputTokens: number; diff --git a/packages/vscode/.vscodeignore b/packages/vscode/.vscodeignore new file mode 100644 index 0000000..9b13a9f --- /dev/null +++ b/packages/vscode/.vscodeignore @@ -0,0 +1,8 @@ +**/.* +node_modules +src/** +tsconfig.json +**/.gitignore +**/*.map +**/*.ts +!dist/** diff --git a/packages/vscode/CHANGELOG.md b/packages/vscode/CHANGELOG.md new file mode 100644 index 0000000..2057992 --- /dev/null +++ b/packages/vscode/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog + +## Unreleased + +- Initial scaffold. Status bar shows live token count and USD cost for the + active prompt file using `@tokenometer/core`. diff --git a/packages/vscode/README.md b/packages/vscode/README.md new file mode 100644 index 0000000..d3d3229 --- /dev/null +++ b/packages/vscode/README.md @@ -0,0 +1,76 @@ +# Tokenometer for VS Code & Cursor + +[![License: MIT](https://img.shields.io/github/license/faraa2m/tokenometer.svg)](https://github.com/faraa2m/tokenometer/blob/main/LICENSE) + +> Live token count **and USD cost** for the active prompt file, right in the status bar — across Claude, GPT-4o, and Gemini. + +Most "token counter" extensions stop at counts. Tokenometer adds the dollar value, using the same pricing the [`tokenometer` CLI](https://www.npmjs.com/package/tokenometer) and GitHub Action use, so what you see in the editor matches what you'd see in CI and on the npm side. + +![status bar screenshot placeholder](docs/status-bar.png) + +## Install + +Once published: + +- **VS Code Marketplace:** _coming soon_ +- **Open VSX (Cursor / VSCodium):** _coming soon_ + +While you're waiting, you can build a `.vsix` locally from this repo: + +```bash +npm install +npm run build --workspace=@tokenometer/vscode +npm run package:vsix --workspace=@tokenometer/vscode +code --install-extension packages/vscode/tokenometer-*.vsix +``` + +## What it shows + +The status bar (right side) shows three things, separated by ` · `: + +``` +opus-4-7 · 1,234 tok · $0.0186 +``` + +- **Model** — the active model id, shortened (full id in the tooltip). +- **Tokens** — input token count for the current file. A leading `~` means the count is approximate (e.g. Claude / Gemini in offline mode). +- **Cost** — input cost in USD at the model's published per-1k-input rate. + +Hovering reveals the full model id, the exact token count, the 8-decimal cost, the tokenizer name, and a hint to click to switch model. + +## Settings + +| Setting | Default | Description | +| ----------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------- | +| `tokenometer.model` | `claude-opus-4-7` | Model id to count and price against. Run **Tokenometer: Switch model** for the full registry list. | +| `tokenometer.format` | `text` | Format conversion before counting (`text`, `markdown`, `json`, `yaml`, `xml`). | +| `tokenometer.warnOnCostAbove` | `0` | If non-zero, the status bar turns warning-colored when the file's input cost exceeds this USD value. | + +Settings can be changed per-workspace (Workspace Settings) or globally (User Settings) — switching via the command saves to the workspace if one is open, otherwise globally. + +## Commands + +- **Tokenometer: Switch model** — quick-pick over every model in `@tokenometer/core`'s registry. +- **Tokenometer: Show details for current file** — modal with the full breakdown. + +Both commands appear under the `Tokenometer:` prefix in the command palette. + +## Supported files + +The extension activates only on prompt-shaped content: `.md`, `.markdown`, `.txt`, `.json`, `.jsonc`, `.yaml`, `.yml`, `.xml` (matched by language id _or_ extension). Anything else gets a hidden status bar item — no work, no noise. + +Files larger than 1 MB are skipped to keep the editor responsive (`—` shown in place of the count). + +## How it works + +Under the hood the extension reuses [`@tokenometer/core`](https://www.npmjs.com/package/@tokenometer/core)'s `tokenize()` function — the same path the CLI takes. Counts, pricing, and tokenizer choices are identical to the rest of the suite. + +## Links + +- [Root README](https://github.com/faraa2m/tokenometer#readme) — methodology, findings, and the full project overview. +- [`tokenometer` CLI on npm](https://www.npmjs.com/package/tokenometer) +- [Live playground](https://tokenometer.vercel.app) + +## License + +MIT diff --git a/packages/vscode/package.json b/packages/vscode/package.json new file mode 100644 index 0000000..52dd8b9 --- /dev/null +++ b/packages/vscode/package.json @@ -0,0 +1,103 @@ +{ + "name": "@tokenometer/vscode", + "version": "0.0.2", + "displayName": "Tokenometer", + "description": "Live token count and USD cost for LLM prompts in the editor (Claude, GPT-4o, Gemini).", + "publisher": "faraa2m", + "license": "MIT", + "private": true, + "author": "Faraazuddin Mohammed ", + "homepage": "https://github.com/faraa2m/tokenometer", + "repository": { + "type": "git", + "url": "git+https://github.com/faraa2m/tokenometer.git", + "directory": "packages/vscode" + }, + "bugs": { + "url": "https://github.com/faraa2m/tokenometer/issues" + }, + "engines": { + "vscode": "^1.85.0" + }, + "categories": ["Programming Languages", "Other"], + "keywords": [ + "llm", + "tokens", + "cost", + "claude", + "gpt", + "gemini", + "tokenizer", + "ai", + "prompt-engineering" + ], + "activationEvents": ["onStartupFinished"], + "main": "./dist/extension.js", + "contributes": { + "configuration": { + "title": "Tokenometer", + "properties": { + "tokenometer.model": { + "type": "string", + "default": "claude-opus-4-7", + "enum": [ + "claude-opus-4-7", + "claude-sonnet-4-6", + "claude-haiku-4-5", + "gpt-4o", + "gpt-4o-mini", + "gpt-4-turbo", + "gpt-3.5-turbo", + "gemini-2.5-pro", + "gemini-2.5-flash", + "gemini-1.5-pro", + "gemini-1.5-flash" + ], + "description": "Model id used to count tokens and price the active file. Run 'Tokenometer: Switch model' for the full list (sourced from @tokenometer/core's KNOWN_MODELS at runtime)." + }, + "tokenometer.format": { + "type": "string", + "default": "text", + "enum": ["text", "markdown", "json", "yaml", "xml"], + "description": "Format used by core's tokenize() to convert the file body before counting. 'text' counts the raw bytes; pick the format that matches how you'd send the prompt to the model." + }, + "tokenometer.warnOnCostAbove": { + "type": "number", + "default": 0, + "minimum": 0, + "description": "If non-zero and the current file's input cost exceeds this USD value, the status bar item turns warning-colored. 0 disables the warning." + } + } + }, + "commands": [ + { + "command": "tokenometer.switchModel", + "title": "Tokenometer: Switch model", + "category": "Tokenometer" + }, + { + "command": "tokenometer.showInfo", + "title": "Tokenometer: Show details for current file", + "category": "Tokenometer" + } + ] + }, + "scripts": { + "build": "tsc -b && esbuild src/extension.ts --bundle --platform=node --target=node20 --format=cjs --external:vscode --outfile=dist/extension.js", + "clean": "rm -rf dist", + "lint": "biome check .", + "typecheck": "tsc -b", + "test": "vitest run", + "package:vsix": "vsce package --no-dependencies" + }, + "dependencies": { + "@tokenometer/core": "0.0.2" + }, + "devDependencies": { + "@biomejs/biome": "^1.9.4", + "@types/vscode": "^1.85.0", + "@vscode/vsce": "^3.2.1", + "esbuild": "^0.24.0", + "typescript": "^5.7.2" + } +} diff --git a/packages/vscode/src/extension.test.ts b/packages/vscode/src/extension.test.ts new file mode 100644 index 0000000..0709c78 --- /dev/null +++ b/packages/vscode/src/extension.test.ts @@ -0,0 +1,199 @@ +import { describe, expect, it, vi } from 'vitest'; +import { + debounce, + formatStatusBarCost, + formatStatusBarText, + formatTooltipCost, + isCostOverThreshold, + isSupportedFile, + shortenModelId, +} from './format'; + +describe('shortenModelId', () => { + it('strips the claude- prefix', () => { + expect(shortenModelId('claude-opus-4-7')).toBe('opus-4-7'); + expect(shortenModelId('claude-sonnet-4-6')).toBe('sonnet-4-6'); + expect(shortenModelId('claude-haiku-4-5')).toBe('haiku-4-5'); + }); + + it('strips trailing date stamps', () => { + expect(shortenModelId('claude-3-5-haiku-20241022')).toBe('3-5-haiku'); + }); + + it('strips the gpt- prefix', () => { + expect(shortenModelId('gpt-4o')).toBe('4o'); + expect(shortenModelId('gpt-4o-mini')).toBe('4o-mini'); + }); + + it('strips the gemini- prefix', () => { + expect(shortenModelId('gemini-2.5-pro')).toBe('2.5-pro'); + }); + + it('passes through unrecognized ids', () => { + expect(shortenModelId('mystery-model-1')).toBe('mystery-model-1'); + }); + + it('keeps the prefix when stripping would leave the id too short', () => { + // "gpt-x" — only 1 char left after strip, so we keep the prefix. + expect(shortenModelId('gpt-x')).toBe('gpt-x'); + }); +}); + +describe('formatStatusBarCost', () => { + it('uses 4 decimals for sub-$10 amounts', () => { + expect(formatStatusBarCost(0)).toBe('$0.0000'); + expect(formatStatusBarCost(0.0186)).toBe('$0.0186'); + expect(formatStatusBarCost(1.2345)).toBe('$1.2345'); + expect(formatStatusBarCost(9.9999)).toBe('$9.9999'); + }); + + it('uses 2 decimals for tens', () => { + expect(formatStatusBarCost(10)).toBe('$10.00'); + expect(formatStatusBarCost(99.5)).toBe('$99.50'); + }); + + it('uses 0 decimals for hundreds and up', () => { + expect(formatStatusBarCost(100)).toBe('$100'); + expect(formatStatusBarCost(1234.567)).toBe('$1235'); + }); +}); + +describe('formatTooltipCost', () => { + it('always uses 8 decimals', () => { + expect(formatTooltipCost(0)).toBe('$0.00000000'); + expect(formatTooltipCost(0.0186)).toBe('$0.01860000'); + expect(formatTooltipCost(0.000000123456789)).toBe('$0.00000012'); + }); +}); + +describe('formatStatusBarText', () => { + it('composes model, tokens, cost', () => { + expect( + formatStatusBarText({ + approximate: false, + cost: 0.0186, + modelId: 'claude-opus-4-7', + tokens: 1234, + }), + ).toBe('opus-4-7 · 1,234 tok · $0.0186'); + }); + + it('prefixes a tilde when approximate', () => { + expect( + formatStatusBarText({ + approximate: true, + cost: 0.0186, + modelId: 'claude-opus-4-7', + tokens: 1234, + }), + ).toBe('opus-4-7 · ~1,234 tok · $0.0186'); + }); + + it('handles zero tokens cleanly', () => { + expect( + formatStatusBarText({ + approximate: false, + cost: 0, + modelId: 'gpt-4o', + tokens: 0, + }), + ).toBe('4o · 0 tok · $0.0000'); + }); +}); + +describe('isCostOverThreshold', () => { + it('returns false when threshold is zero or negative', () => { + expect(isCostOverThreshold(100, 0)).toBe(false); + expect(isCostOverThreshold(100, -1)).toBe(false); + }); + + it('returns true only when cost strictly exceeds threshold', () => { + expect(isCostOverThreshold(0.05, 0.01)).toBe(true); + expect(isCostOverThreshold(0.01, 0.01)).toBe(false); + expect(isCostOverThreshold(0.001, 0.01)).toBe(false); + }); + + it('handles non-finite values defensively', () => { + expect(isCostOverThreshold(Number.NaN, 1)).toBe(false); + expect(isCostOverThreshold(1, Number.NaN)).toBe(false); + expect(isCostOverThreshold(Number.POSITIVE_INFINITY, 1)).toBe(true); + // Threshold of Infinity is finite=false, so disabled. + expect(isCostOverThreshold(1, Number.POSITIVE_INFINITY)).toBe(false); + }); +}); + +describe('isSupportedFile', () => { + it('matches by language id', () => { + expect(isSupportedFile('markdown', 'foo.md')).toBe(true); + expect(isSupportedFile('plaintext', 'foo.txt')).toBe(true); + expect(isSupportedFile('json', 'foo.json')).toBe(true); + expect(isSupportedFile('jsonc', 'foo.jsonc')).toBe(true); + expect(isSupportedFile('yaml', 'foo.yaml')).toBe(true); + expect(isSupportedFile('xml', 'foo.xml')).toBe(true); + }); + + it('falls back to file extension when language id is unhelpful', () => { + expect(isSupportedFile('untitled', 'foo.md')).toBe(true); + expect(isSupportedFile('untitled', 'foo.yml')).toBe(true); + expect(isSupportedFile('plaintext-something', 'foo.markdown')).toBe(true); + }); + + it('rejects unsupported types', () => { + expect(isSupportedFile('typescript', 'foo.ts')).toBe(false); + expect(isSupportedFile('python', 'foo.py')).toBe(false); + expect(isSupportedFile('javascript', undefined)).toBe(false); + }); +}); + +describe('debounce', () => { + it('coalesces rapid calls into one trailing invocation', () => { + vi.useFakeTimers(); + try { + const spy = vi.fn(); + const wrapped = debounce(spy, 200); + wrapped(1); + wrapped(2); + wrapped(3); + expect(spy).not.toHaveBeenCalled(); + vi.advanceTimersByTime(199); + expect(spy).not.toHaveBeenCalled(); + vi.advanceTimersByTime(1); + expect(spy).toHaveBeenCalledTimes(1); + // Fires with the last set of args. + expect(spy).toHaveBeenLastCalledWith(3); + } finally { + vi.useRealTimers(); + } + }); + + it('cancel() drops a pending invocation', () => { + vi.useFakeTimers(); + try { + const spy = vi.fn(); + const wrapped = debounce(spy, 200); + wrapped(); + wrapped.cancel(); + vi.advanceTimersByTime(1000); + expect(spy).not.toHaveBeenCalled(); + } finally { + vi.useRealTimers(); + } + }); + + it('separate calls after the wait window each fire', () => { + vi.useFakeTimers(); + try { + const spy = vi.fn(); + const wrapped = debounce(spy, 100); + wrapped(1); + vi.advanceTimersByTime(100); + wrapped(2); + vi.advanceTimersByTime(100); + expect(spy).toHaveBeenCalledTimes(2); + expect(spy).toHaveBeenNthCalledWith(1, 1); + expect(spy).toHaveBeenNthCalledWith(2, 2); + } finally { + vi.useRealTimers(); + } + }); +}); diff --git a/packages/vscode/src/extension.ts b/packages/vscode/src/extension.ts new file mode 100644 index 0000000..47f51fd --- /dev/null +++ b/packages/vscode/src/extension.ts @@ -0,0 +1,260 @@ +import { type Format, KNOWN_MODELS, getModel, tokenize } from '@tokenometer/core'; +import * as vscode from 'vscode'; +import { + MAX_FILE_BYTES, + debounce, + formatStatusBarText, + formatTooltipCost, + isCostOverThreshold, + isSupportedFile, + shortenModelId, +} from './format'; + +const SUPPORTED_FORMATS: readonly Format[] = ['text', 'markdown', 'json', 'yaml', 'xml']; + +const isFormat = (value: unknown): value is Format => + typeof value === 'string' && (SUPPORTED_FORMATS as readonly string[]).includes(value); + +interface Settings { + format: Format; + modelId: string; + warnOnCostAbove: number; +} + +const readSettings = (): Settings => { + const cfg = vscode.workspace.getConfiguration('tokenometer'); + const modelId = cfg.get('model', 'claude-opus-4-7'); + const rawFormat = cfg.get('format', 'text'); + const format: Format = isFormat(rawFormat) ? rawFormat : 'text'; + const warnOnCostAbove = cfg.get('warnOnCostAbove', 0); + return { format, modelId, warnOnCostAbove }; +}; + +interface CurrentResult { + approximate: boolean; + cost: number; + format: Format; + modelId: string; + tokens: number; + tokenizer: string; +} + +let lastResult: CurrentResult | null = null; + +const updateStatusBar = ( + item: vscode.StatusBarItem, + editor: vscode.TextEditor | undefined, +): void => { + if (!editor) { + lastResult = null; + item.hide(); + return; + } + + const doc = editor.document; + if (!isSupportedFile(doc.languageId, doc.fileName)) { + lastResult = null; + item.hide(); + return; + } + + // VS Code reports rough byte size via getText().length (chars). We want a + // byte ceiling — encode just enough to know if we're over the limit without + // paying the full encode cost on huge files. + const text = doc.getText(); + // UTF-8 worst case is 4 bytes/char, but for an ASCII-heavy ceiling check + // text.length is a good lower bound. Fall through to Buffer.byteLength only + // when we're close. + if (text.length > MAX_FILE_BYTES) { + lastResult = null; + item.text = '$(symbol-numeric) Tokenometer · —'; + item.tooltip = `File over ${MAX_FILE_BYTES.toLocaleString()} bytes — skipped to keep the editor responsive.`; + item.backgroundColor = undefined; + item.show(); + return; + } + if (Buffer.byteLength(text, 'utf8') > MAX_FILE_BYTES) { + lastResult = null; + item.text = '$(symbol-numeric) Tokenometer · —'; + item.tooltip = `File over ${MAX_FILE_BYTES.toLocaleString()} bytes — skipped to keep the editor responsive.`; + item.backgroundColor = undefined; + item.show(); + return; + } + + const settings = readSettings(); + let result: CurrentResult; + try { + const tokenized = tokenize({ + format: settings.format, + modelId: settings.modelId, + prompt: text, + }); + result = { + approximate: tokenized.approximate, + cost: tokenized.inputCost, + format: tokenized.format, + modelId: tokenized.model, + tokens: tokenized.inputTokens, + tokenizer: tokenized.tokenizer, + }; + } catch (err) { + // Almost certainly an unknown model id. Show a clear message and bail out. + lastResult = null; + item.text = '$(warning) Tokenometer · model?'; + item.tooltip = `${(err as Error).message}\n\nClick to switch model.`; + item.backgroundColor = new vscode.ThemeColor('statusBarItem.warningBackground'); + item.command = 'tokenometer.switchModel'; + item.show(); + return; + } + + lastResult = result; + + item.text = formatStatusBarText({ + approximate: result.approximate, + cost: result.cost, + modelId: result.modelId, + tokens: result.tokens, + }); + + const tooltip = new vscode.MarkdownString(); + tooltip.appendMarkdown('**Tokenometer**\n\n'); + tooltip.appendMarkdown(`Model: \`${result.modelId}\`\n\n`); + tooltip.appendMarkdown(`Tokens: ${result.tokens.toLocaleString()}\n\n`); + tooltip.appendMarkdown(`Cost (input): ${formatTooltipCost(result.cost)}\n\n`); + tooltip.appendMarkdown(`Tokenizer: \`${result.tokenizer}\``); + if (result.approximate) { + tooltip.appendMarkdown(' (approximate)'); + } + tooltip.appendMarkdown(`\n\nFormat: \`${result.format}\`\n\n`); + tooltip.appendMarkdown('_Click to switch model._'); + item.tooltip = tooltip; + + item.command = 'tokenometer.switchModel'; + + if (isCostOverThreshold(result.cost, settings.warnOnCostAbove)) { + item.backgroundColor = new vscode.ThemeColor('statusBarItem.warningBackground'); + } else { + item.backgroundColor = undefined; + } + + item.show(); +}; + +const runSwitchModelCommand = async (): Promise => { + const cfg = vscode.workspace.getConfiguration('tokenometer'); + const current = cfg.get('model', 'claude-opus-4-7'); + + const items: vscode.QuickPickItem[] = KNOWN_MODELS.map((id) => { + let providerHint = ''; + try { + providerHint = getModel(id).provider; + } catch { + // Defensive — KNOWN_MODELS comes from getModel's registry, this shouldn't fire. + } + const description = providerHint + ? `${providerHint}${id === current ? ' (current)' : ''}` + : id === current + ? '(current)' + : ''; + const item: vscode.QuickPickItem = { label: id, description, picked: id === current }; + return item; + }); + + const picked = await vscode.window.showQuickPick(items, { + placeHolder: `Pick a model (current: ${current})`, + matchOnDescription: true, + }); + if (!picked) return; + + // Save to workspace if there is one open; otherwise global. This matches the + // "save here if relevant, else everywhere" expectation. + const target = vscode.workspace.workspaceFolders?.length + ? vscode.ConfigurationTarget.Workspace + : vscode.ConfigurationTarget.Global; + await cfg.update('model', picked.label, target); +}; + +const runShowInfoCommand = async (): Promise => { + if (!lastResult) { + await vscode.window.showInformationMessage( + 'Tokenometer: no active prompt file. Open a .md / .txt / .json / .yaml / .xml file to see token counts.', + ); + return; + } + + const r = lastResult; + const lines = [ + 'Tokenometer details', + '', + `Model: ${r.modelId} (${shortenModelId(r.modelId)})`, + `Format: ${r.format}`, + `Tokenizer: ${r.tokenizer}${r.approximate ? ' (approximate)' : ''}`, + `Tokens: ${r.tokens.toLocaleString()}`, + `Cost (in): ${formatTooltipCost(r.cost)}`, + ]; + await vscode.window.showInformationMessage(lines.join('\n'), { modal: true }); +}; + +export const activate = (context: vscode.ExtensionContext): void => { + const statusItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100); + statusItem.name = 'Tokenometer'; + context.subscriptions.push(statusItem); + + const refresh = (): void => updateStatusBar(statusItem, vscode.window.activeTextEditor); + const debouncedRefresh = debounce(refresh, 200); + + // Initial paint. + refresh(); + + context.subscriptions.push( + vscode.window.onDidChangeActiveTextEditor(() => { + refresh(); + }), + vscode.workspace.onDidChangeTextDocument((event) => { + const active = vscode.window.activeTextEditor; + if (active && event.document === active.document) { + debouncedRefresh(); + } + }), + vscode.workspace.onDidSaveTextDocument((doc) => { + const active = vscode.window.activeTextEditor; + if (active && doc === active.document) { + refresh(); + } + }), + vscode.workspace.onDidChangeConfiguration((event) => { + if (event.affectsConfiguration('tokenometer')) { + refresh(); + } + }), + vscode.commands.registerCommand('tokenometer.switchModel', async () => { + try { + await runSwitchModelCommand(); + } catch (err) { + await vscode.window.showErrorMessage( + `Tokenometer: switch failed — ${(err as Error).message}`, + ); + } + }), + vscode.commands.registerCommand('tokenometer.showInfo', async () => { + try { + await runShowInfoCommand(); + } catch (err) { + await vscode.window.showErrorMessage( + `Tokenometer: show-info failed — ${(err as Error).message}`, + ); + } + }), + { + dispose: () => { + debouncedRefresh.cancel(); + }, + }, + ); +}; + +export const deactivate = (): void => { + // No global resources beyond context.subscriptions, which VS Code disposes for us. +}; diff --git a/packages/vscode/src/format.ts b/packages/vscode/src/format.ts new file mode 100644 index 0000000..d23b762 --- /dev/null +++ b/packages/vscode/src/format.ts @@ -0,0 +1,134 @@ +// Pure helpers used by the VS Code extension. Kept free of `vscode` imports so +// they can be unit-tested under Vitest without mocking the editor host. + +/** + * Shorten a model id for the status bar. Strips the provider-style prefix and + * trims common date suffixes, leaving the recognizable middle. Falls back to + * the original id if nothing obvious can be stripped. + */ +export const shortenModelId = (modelId: string): string => { + // Drop a trailing -YYYYMMDD date stamp if present (e.g. claude-3-5-haiku-20241022). + const stripped = modelId.replace(/-\d{8}$/, ''); + // Drop a leading provider prefix like "claude-" or "gpt-" only if there's + // any recognizable identifier left afterwards (avoids turning "gpt-x" into + // a single character). + const knownPrefixes = ['claude-', 'gpt-', 'gemini-']; + for (const prefix of knownPrefixes) { + if (stripped.startsWith(prefix) && stripped.length - prefix.length >= 2) { + return stripped.slice(prefix.length); + } + } + return stripped; +}; + +/** + * Format USD cost for the status bar — fixed 4 decimals so the width is stable + * (`$0.0000` … `$9.9999`). For larger values, drop trailing decimals so the + * status bar stays narrow. + */ +export const formatStatusBarCost = (usd: number): string => { + if (usd >= 100) return `$${usd.toFixed(0)}`; + if (usd >= 10) return `$${usd.toFixed(2)}`; + return `$${usd.toFixed(4)}`; +}; + +/** + * Format USD cost for the tooltip — full 8-decimal precision since space is + * not a constraint. + */ +export const formatTooltipCost = (usd: number): string => `$${usd.toFixed(8)}`; + +export interface StatusBarTextOptions { + approximate: boolean; + cost: number; + modelId: string; + tokens: number; +} + +/** + * Compose the status bar label, e.g. `opus-4-7 · 1,234 tok · $0.0186` (or with + * a leading `~` when the count is approximate). + */ +export const formatStatusBarText = (opts: StatusBarTextOptions): string => { + const tokens = opts.tokens.toLocaleString(); + const prefix = opts.approximate ? '~' : ''; + const model = shortenModelId(opts.modelId); + return `${model} · ${prefix}${tokens} tok · ${formatStatusBarCost(opts.cost)}`; +}; + +/** + * Decide whether the configured warning threshold is tripped. + * - Threshold of 0 (or negative) disables the warning. + * - Otherwise, fire when the current cost is strictly greater than the + * threshold. Equality is below the bar so a budget of $0.01 doesn't flicker + * when the cost lands exactly on $0.01. + */ +export const isCostOverThreshold = (cost: number, threshold: number): boolean => { + if (!Number.isFinite(threshold) || threshold <= 0) return false; + if (Number.isNaN(cost)) return false; + return cost > threshold; +}; + +/** + * Tiny debounce. Returns a wrapped function plus a `cancel()` to drop a + * pending invocation (used on extension deactivate). + */ +export interface Debounced { + (...args: A): void; + cancel: () => void; +} + +export const debounce = ( + fn: (...args: A) => void, + waitMs: number, +): Debounced => { + let timer: ReturnType | null = null; + + const wrapped = ((...args: A) => { + if (timer !== null) clearTimeout(timer); + timer = setTimeout(() => { + timer = null; + fn(...args); + }, waitMs); + }) as Debounced; + + wrapped.cancel = () => { + if (timer !== null) { + clearTimeout(timer); + timer = null; + } + }; + + return wrapped; +}; + +/** Set of language ids / file extensions Tokenometer treats as prompt content. */ +export const SUPPORTED_LANGUAGE_IDS: readonly string[] = [ + 'plaintext', + 'markdown', + 'json', + 'jsonc', + 'yaml', + 'xml', +]; + +/** Mirror of SUPPORTED_LANGUAGE_IDS for fallback file-extension matching. */ +export const SUPPORTED_EXTENSIONS: readonly string[] = [ + '.txt', + '.md', + '.markdown', + '.json', + '.yaml', + '.yml', + '.xml', +]; + +export const isSupportedFile = (languageId: string, fileName: string | undefined): boolean => { + if (SUPPORTED_LANGUAGE_IDS.includes(languageId)) return true; + if (!fileName) return false; + const lower = fileName.toLowerCase(); + return SUPPORTED_EXTENSIONS.some((ext) => lower.endsWith(ext)); +}; + +/** Hard ceiling on file size we'll tokenize synchronously, in bytes. */ +export const MAX_FILE_BYTES = 1_000_000; diff --git a/packages/vscode/tsconfig.json b/packages/vscode/tsconfig.json new file mode 100644 index 0000000..ce71d3d --- /dev/null +++ b/packages/vscode/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "target": "es2020", + "lib": ["ES2020"], + "outDir": "./dist", + "rootDir": "./src", + "verbatimModuleSyntax": false, + "types": ["node", "vscode"] + }, + "include": ["src/**/*"], + "exclude": ["**/*.test.ts", "**/*.spec.ts", "dist"], + "references": [{ "path": "../core" }] +} diff --git a/packages/web/index.html b/packages/web/index.html index 7f59e43..8d03813 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -12,9 +12,10 @@ +
diff --git a/packages/web/package.json b/packages/web/package.json index 8b07faa..6dca8c4 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -15,7 +15,8 @@ "@google/generative-ai": "^0.21.0", "@tokenometer/core": "0.0.2", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "react-router-dom": "^7.15.0" }, "devDependencies": { "@tailwindcss/vite": "^4.0.0", diff --git a/packages/web/public/robots.txt b/packages/web/public/robots.txt new file mode 100644 index 0000000..30de460 --- /dev/null +++ b/packages/web/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://tokenometer.vercel.app/sitemap.xml diff --git a/packages/web/public/sitemap.xml b/packages/web/public/sitemap.xml new file mode 100644 index 0000000..5bba7ba --- /dev/null +++ b/packages/web/public/sitemap.xml @@ -0,0 +1,14 @@ + + + https://tokenometer.vercel.app/weekly1.0 + https://tokenometer.vercel.app/calculatorweekly0.9 + https://tokenometer.vercel.app/diffweekly0.8 + https://tokenometer.vercel.app/by-fileweekly0.8 + https://tokenometer.vercel.app/visionweekly0.8 + https://tokenometer.vercel.app/sarifmonthly0.6 + https://tokenometer.vercel.app/config-buildermonthly0.6 + https://tokenometer.vercel.app/initmonthly0.6 + https://tokenometer.vercel.app/modelsweekly0.9 + https://tokenometer.vercel.app/editormonthly0.5 + https://tokenometer.vercel.app/claude-codemonthly0.5 + diff --git a/packages/web/src/App.tsx b/packages/web/src/App.tsx index a09a98f..ca627de 100644 --- a/packages/web/src/App.tsx +++ b/packages/web/src/App.tsx @@ -1,66 +1,35 @@ -import { Playground } from './components/Playground.js'; - -const SAMPLE_PROMPT = `{ - "instructions": "Summarize the user's input in three bullets.", - "constraints": { "max_bullets": 3, "tone": "neutral" } -}`; - -const SHELL_BANNER = [ - '$ tokenometer --version', - 'tokenometer 0.0.1 rates_version=2026-05-07', - '', - '$ tokenometer --help', - ' measure: empirical token cost across providers and formats.', - ' policy: no telemetry, no key persistence, BYO-API-key for empirical mode.', - ' source: github.com/faraa2m/tokenometer', -]; +import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'; +import { Layout } from './components/Layout.js'; +import { ByFilePage } from './pages/ByFilePage.js'; +import { ClaudeCodePage } from './pages/ClaudeCodePage.js'; +import { ConfigBuilderPage } from './pages/ConfigBuilderPage.js'; +import { DiffPage } from './pages/DiffPage.js'; +import { EditorPage } from './pages/EditorPage.js'; +import { InitPage } from './pages/InitPage.js'; +import { LandingPage } from './pages/LandingPage.js'; +import { ModelDetailPage } from './pages/ModelDetailPage.js'; +import { ModelsPage } from './pages/ModelsPage.js'; +import { SarifPage } from './pages/SarifPage.js'; +import { VisionPage } from './pages/VisionPage.js'; export const App = () => ( -
+ + + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + ); diff --git a/packages/web/src/components/CodeBlock.tsx b/packages/web/src/components/CodeBlock.tsx new file mode 100644 index 0000000..1a5678c --- /dev/null +++ b/packages/web/src/components/CodeBlock.tsx @@ -0,0 +1,39 @@ +import { useState } from 'react'; + +interface CodeBlockProps { + code: string; + language?: string; + filename?: string; +} + +export const CodeBlock = ({ code, language, filename }: CodeBlockProps) => { + const [copied, setCopied] = useState(false); + + const onCopy = async () => { + try { + await navigator.clipboard.writeText(code); + setCopied(true); + setTimeout(() => setCopied(false), 1500); + } catch { + setCopied(false); + } + }; + + return ( +
+
+ {filename ?? language ?? 'snippet'} + +
+
+        {code}
+      
+
+ ); +}; diff --git a/packages/web/src/components/Layout.tsx b/packages/web/src/components/Layout.tsx new file mode 100644 index 0000000..21c7b06 --- /dev/null +++ b/packages/web/src/components/Layout.tsx @@ -0,0 +1,66 @@ +import { Link, Outlet } from 'react-router-dom'; +import { Nav } from './Nav.js'; + +const REPO_URL = 'https://github.com/faraa2m/tokenometer'; +const NPM_URL = 'https://www.npmjs.com/package/tokenometer'; +const MARKETPLACE_URL = 'https://github.com/faraa2m/tokenometer#editor-integrations'; + +export const Layout = () => ( +
+
+
+
+

+ ›observatory +

+ + tokenometer + +

empirical token-cost benchmarking

+
+
+
+
+ +
+ +
+ +
+
+

+ no telemetry · no key persistence · BYO-API-key for empirical mode. countTokens calls go + straight from your browser to the provider. +

+
+ +
+
+
+); diff --git a/packages/web/src/components/Nav.tsx b/packages/web/src/components/Nav.tsx new file mode 100644 index 0000000..1f31674 --- /dev/null +++ b/packages/web/src/components/Nav.tsx @@ -0,0 +1,90 @@ +import { useEffect, useRef, useState } from 'react'; +import { NavLink } from 'react-router-dom'; + +interface NavItem { + to: string; + label: string; +} + +const PRIMARY_NAV: readonly NavItem[] = [ + { to: '/', label: 'calculator' }, + { to: '/diff', label: 'diff' }, + { to: '/by-file', label: 'by-file' }, + { to: '/vision', label: 'vision' }, + { to: '/models', label: 'models' }, +]; + +const TOOLS_NAV: readonly NavItem[] = [ + { to: '/sarif', label: 'sarif' }, + { to: '/config-builder', label: 'config builder' }, + { to: '/init', label: 'init' }, + { to: '/editor', label: 'vs code' }, + { to: '/claude-code', label: 'claude code' }, +]; + +const linkClass = ({ isActive }: { isActive: boolean }): string => + isActive + ? 'border-b border-[var(--tk-amber)] pb-[2px] text-[var(--tk-amber)]' + : 'border-b border-transparent pb-[2px] text-[var(--tk-fg)] hover:border-[var(--tk-amber-dim)] hover:text-[var(--tk-amber)]'; + +export const Nav = () => { + const [toolsOpen, setToolsOpen] = useState(false); + const ref = useRef(null); + + useEffect(() => { + if (!toolsOpen) return; + const onClick = (e: MouseEvent) => { + if (ref.current && !ref.current.contains(e.target as Node)) { + setToolsOpen(false); + } + }; + document.addEventListener('mousedown', onClick); + return () => document.removeEventListener('mousedown', onClick); + }, [toolsOpen]); + + return ( + + ); +}; diff --git a/packages/web/src/components/Playground.tsx b/packages/web/src/components/Playground.tsx index 735bda5..b97aa60 100644 --- a/packages/web/src/components/Playground.tsx +++ b/packages/web/src/components/Playground.tsx @@ -11,6 +11,7 @@ import { ResultsMatrix } from './ResultsMatrix.js'; const DEFAULT_MODELS = ['claude-opus-4-7', 'claude-sonnet-4-6', 'gpt-4o'] as const; const ALL_FORMATS: readonly Format[] = allFormats(); +// Listed providers come first; any extras (e.g. mistral, cohere) are appended. const PROVIDER_ORDER: readonly Provider[] = ['anthropic', 'openai', 'google']; const formatContextWindow = (n: number): string => { @@ -59,14 +60,19 @@ interface ModelOption { } const buildModelGroups = (): { provider: Provider; models: ModelOption[] }[] => { - const grouped: Record = { anthropic: [], google: [], openai: [] }; + const grouped = new Map(); for (const id of KNOWN_MODELS) { const m = getModel(id); const ctx = m.contextWindow ? ` · ${formatContextWindow(m.contextWindow)}` : ''; - grouped[m.provider].push({ id, label: `${id}${ctx}` }); + const list = grouped.get(m.provider) ?? []; + list.push({ id, label: `${id}${ctx}` }); + grouped.set(m.provider, list); } - return PROVIDER_ORDER.filter((p) => grouped[p].length > 0).map((provider) => ({ - models: grouped[provider], + // Sort listed providers in PROVIDER_ORDER first, then append any unlisted ones. + const listed = PROVIDER_ORDER.filter((p) => grouped.has(p)); + const extras = [...grouped.keys()].filter((p) => !PROVIDER_ORDER.includes(p)).sort(); + return [...listed, ...extras].map((provider) => ({ + models: grouped.get(provider) ?? [], provider, })); }; diff --git a/packages/web/src/hooks/usePageTitle.ts b/packages/web/src/hooks/usePageTitle.ts new file mode 100644 index 0000000..13a097f --- /dev/null +++ b/packages/web/src/hooks/usePageTitle.ts @@ -0,0 +1,20 @@ +import { useEffect } from 'react'; + +const BASE = 'tokenometer'; + +/** + * Sets `document.title` to " · tokenometer · <tagline>" on mount; reverts + * to the base banner on unmount so back-navigation doesn't leak the previous + * title before the next page mounts. + */ +export const usePageTitle = (title: string, tagline?: string): void => { + useEffect(() => { + const previous = document.title; + const parts = [title, BASE]; + if (tagline) parts.push(tagline); + document.title = parts.join(' · '); + return () => { + document.title = previous; + }; + }, [title, tagline]); +}; diff --git a/packages/web/src/pages/ByFilePage.tsx b/packages/web/src/pages/ByFilePage.tsx new file mode 100644 index 0000000..b362d1c --- /dev/null +++ b/packages/web/src/pages/ByFilePage.tsx @@ -0,0 +1,219 @@ +import { allFormats, getModel, tokenize } from '@tokenometer/core'; +import type { Format, Provider } from '@tokenometer/core'; +import { useMemo, useState } from 'react'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const ALL_FORMATS: readonly Format[] = allFormats(); + +interface FileEntry { + name: string; + content: string; + size: number; +} + +const formatCost = (usd: number): string => { + if (usd >= 0.01) return `$${usd.toFixed(4)}`; + if (usd >= 0.000001) return `$${usd.toFixed(6)}`; + return `$${usd.toExponential(2)}`; +}; + +interface FileRow { + name: string; + size: number; + tokens: number; + cost: number; + provider: Provider; +} + +export const ByFilePage = () => { + usePageTitle('by-file', 'rank prompts by per-file cost'); + const [files, setFiles] = useState<FileEntry[]>([]); + const [modelId, setModelId] = useState('claude-sonnet-4-6'); + const [format, setFormat] = useState<Format>('text'); + const [error, setError] = useState<string | null>(null); + const [dragOver, setDragOver] = useState(false); + + const onPick = async (list: FileList | null) => { + if (!list) return; + setError(null); + const next: FileEntry[] = []; + for (let i = 0; i < list.length; i++) { + const f = list.item(i); + if (!f) continue; + // Only accept text-ish files (.md, .txt, .yml, .yaml, .json, .xml). Skip + // arbitrary binaries — tokenization would be meaningless. + if (!/\.(md|markdown|txt|yml|yaml|json|xml|prompt)$/i.test(f.name)) continue; + try { + const text = await f.text(); + next.push({ content: text, name: f.name, size: text.length }); + } catch (e) { + setError(`could not read ${f.name}: ${(e as Error).message.toLowerCase()}`); + } + } + if (!next.length) { + setError('no readable .md/.txt/.yml/.json/.xml files in selection'); + return; + } + setFiles(next); + }; + + const onDrop = (e: React.DragEvent) => { + e.preventDefault(); + setDragOver(false); + const dt = e.dataTransfer; + if (dt?.files) onPick(dt.files); + }; + + const rows: FileRow[] = useMemo(() => { + if (!files.length) return []; + let model: ReturnType<typeof getModel>; + try { + model = getModel(modelId); + } catch { + return []; + } + return files + .map((f) => { + try { + const r = tokenize({ format, modelId, prompt: f.content }); + return { + cost: r.inputCost, + name: f.name, + provider: model.provider, + size: f.size, + tokens: r.inputTokens, + }; + } catch { + return null; + } + }) + .filter((x): x is FileRow => x !== null) + .sort((a, b) => b.cost - a.cost); + }, [files, modelId, format]); + + const totalCost = rows.reduce((acc, r) => acc + r.cost, 0); + const totalTokens = rows.reduce((acc, r) => acc + r.tokens, 0); + + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›by-file · per-file cost ranking + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">by-file</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + Drop a folder of prompt files (or pick individual `.md` / `.txt` / `.yml`). We tokenize + each, sort by cost, and show what's eating your budget. The CLI does the same thing across + `paths:` in `.tokenometer.yml`. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 lg:col-span-7"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 01 ›files + </p> + <label + onDragOver={(e) => { + e.preventDefault(); + setDragOver(true); + }} + onDragLeave={() => setDragOver(false)} + onDrop={onDrop} + className={ + dragOver + ? 'block cursor-pointer border border-dashed border-[var(--tk-amber)] bg-[var(--tk-cell)] p-8 text-center' + : 'block cursor-pointer border border-dashed border-[var(--tk-rule)] bg-[var(--tk-cell)] p-8 text-center hover:border-[var(--tk-amber-dim)]' + } + > + <input + type="file" + multiple + accept=".md,.markdown,.txt,.yml,.yaml,.json,.xml,.prompt" + onChange={(e) => onPick(e.target.files)} + className="hidden" + /> + <p className="text-[12.5px] text-[var(--tk-fg)]"> + {dragOver ? '> drop files' : '> click or drag .md / .txt / .yml files here'} + </p> + <p className="mt-1 text-[10.5px] text-[var(--tk-dim)]"> + processed in-browser. nothing is uploaded. + </p> + </label> + {error && <p className="mt-2 text-[11.5px] text-[var(--tk-red)]">err: {error}</p>} + </div> + <div className="col-span-12 lg:col-span-5 space-y-4"> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 02 ›model + </p> + <input + type="text" + value={modelId} + onChange={(e) => setModelId(e.target.value)} + spellCheck={false} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + </div> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 03 ›format + </p> + <select + value={format} + onChange={(e) => setFormat(e.target.value as Format)} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + > + {ALL_FORMATS.map((f) => ( + <option key={f} value={f}> + {f} + </option> + ))} + </select> + </div> + </div> + </div> + + {rows.length > 0 && ( + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 04 › results · {rows.length} files · {totalTokens.toLocaleString()} tokens ·{' '} + {formatCost(totalCost)} + </p> + <div className="overflow-x-auto border border-[var(--tk-rule)]"> + <table className="w-full border-collapse text-[12.5px]"> + <thead> + <tr className="border-b border-[var(--tk-rule)] text-[10px] uppercase tracking-[0.25em] text-[var(--tk-dim)]"> + <th className="px-3 py-2 text-left font-normal">rank</th> + <th className="px-3 py-2 text-left font-normal">file</th> + <th className="px-3 py-2 text-right font-normal">size</th> + <th className="px-3 py-2 text-right font-normal">tokens</th> + <th className="px-3 py-2 text-right font-normal">cost</th> + </tr> + </thead> + <tbody> + {rows.map((r, i) => ( + <tr key={r.name} className="border-t border-[var(--tk-rule)]/60"> + <td className="px-3 py-1.5 tabular-nums text-[var(--tk-dim)]"> + {String(i + 1).padStart(2, '0')} + </td> + <td className="px-3 py-1.5 text-[var(--tk-fg)]">{r.name}</td> + <td className="px-3 py-1.5 text-right tabular-nums text-[var(--tk-dim)]"> + {r.size.toLocaleString()} + </td> + <td className="px-3 py-1.5 text-right tabular-nums text-[var(--tk-fg)]"> + {r.tokens.toLocaleString()} + </td> + <td className="px-3 py-1.5 text-right tabular-nums text-[var(--tk-fg)]"> + {formatCost(r.cost)} + </td> + </tr> + ))} + </tbody> + </table> + </div> + </div> + )} + </section> + ); +}; diff --git a/packages/web/src/pages/ClaudeCodePage.tsx b/packages/web/src/pages/ClaudeCodePage.tsx new file mode 100644 index 0000000..577fdf5 --- /dev/null +++ b/packages/web/src/pages/ClaudeCodePage.tsx @@ -0,0 +1,77 @@ +import { CodeBlock } from '../components/CodeBlock.js'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const INSTALL_LINE = 'claude install skill faraa2m/tokenometer'; + +const SKILL_PREVIEW = `--- +name: tokenometer +description: Measure prompt token cost across Claude, GPT-4o, and Gemini. + Useful before committing prompt changes or when you ask "how much + will this cost?" — empirical with BYO-key, offline otherwise. +tools: Bash +--- + +# tokenometer + +When the user asks how much a prompt costs, what tokenizer to use, or +whether a change is cheaper, run: + + npx tokenometer measure <file-or-prompt> + +For a folder, point it at the path; tokenometer respects +\`.tokenometer.yml\` budgets and \`paths:\`. Add \`--empirical\` and the +provider env vars to hit countTokens directly (Anthropic / OpenAI / +Google). Always cite the rates_version in your reply. +`; + +export const ClaudeCodePage = () => { + usePageTitle('claude code', 'tokenometer skill for claude code'); + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›claude code · skill (wave 3) + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">claude code skill</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + A drop-in{' '} + <a + href="https://docs.anthropic.com/en/docs/agents/skills" + className="underline decoration-[var(--tk-amber-dim)] underline-offset-4" + > + Claude Code skill + </a>{' '} + that gives the agent a token-cost calculator. Triggered automatically when you ask "how + much does this prompt cost" or "is this version cheaper". Currently in development as part + of Wave 3. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 md:col-span-5 space-y-4"> + <div className="border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4"> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]">install</p> + <CodeBlock code={INSTALL_LINE} filename="bash" language="bash" /> + <p className="mt-3 text-[10.5px] text-[var(--tk-dim)]"> + Once published, this drops a SKILL.md into your `~/.claude/skills/` directory. + </p> + </div> + <div className="space-y-2 text-[12.5px]"> + <p className="text-[var(--tk-fg)]">What it does:</p> + <ul className="space-y-1 text-[var(--tk-dim)]"> + <li>· runs `npx tokenometer measure` on demand</li> + <li>· cites rates_version + tokenizer in every reply</li> + <li>· offline by default; opts into empirical with your keys</li> + </ul> + </div> + </div> + <div className="col-span-12 md:col-span-7"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + SKILL.md preview + </p> + <CodeBlock code={SKILL_PREVIEW} filename="SKILL.md" language="markdown" /> + </div> + </div> + </section> + ); +}; diff --git a/packages/web/src/pages/ConfigBuilderPage.tsx b/packages/web/src/pages/ConfigBuilderPage.tsx new file mode 100644 index 0000000..2881200 --- /dev/null +++ b/packages/web/src/pages/ConfigBuilderPage.tsx @@ -0,0 +1,230 @@ +import { KNOWN_MODELS, allFormats, getModel, parseConfig } from '@tokenometer/core'; +import type { Format, Provider } from '@tokenometer/core'; +import { useMemo, useState } from 'react'; +import { CodeBlock } from '../components/CodeBlock.js'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const PROVIDER_ORDER: readonly Provider[] = ['anthropic', 'openai', 'google']; +const ALL_FORMATS: readonly Format[] = allFormats(); + +const buildModelGroups = (): { provider: Provider; models: string[] }[] => { + const grouped = new Map<Provider, string[]>(); + for (const id of KNOWN_MODELS) { + const p = getModel(id).provider; + const list = grouped.get(p) ?? []; + list.push(id); + grouped.set(p, list); + } + const listed = PROVIDER_ORDER.filter((p) => grouped.has(p)); + const extras = [...grouped.keys()].filter((p) => !PROVIDER_ORDER.includes(p)).sort(); + return [...listed, ...extras].map((provider) => ({ + models: grouped.get(provider) ?? [], + provider, + })); +}; + +interface BuildOptions { + models: string[]; + formats: Format[]; + pathsRaw: string; + totalBudget: string; + perFileBudget: string; +} + +const buildYaml = ({ + models, + formats, + pathsRaw, + totalBudget, + perFileBudget, +}: BuildOptions): string => { + const lines: string[] = []; + lines.push('# .tokenometer.yml'); + lines.push('# generated from https://tokenometer.vercel.app/config-builder'); + lines.push(''); + if (models.length > 0) { + lines.push('models:'); + for (const m of models) lines.push(` - ${m}`); + lines.push(''); + } + if (formats.length > 0) { + lines.push('formats:'); + for (const f of formats) lines.push(` - ${f}`); + lines.push(''); + } + const total = totalBudget.trim(); + const perFile = perFileBudget.trim(); + if (total || perFile) { + lines.push('budgets:'); + if (total) lines.push(` total: ${total}`); + if (perFile) lines.push(` per-file: ${perFile}`); + lines.push(''); + } + const paths = pathsRaw + .split(',') + .map((p) => p.trim()) + .filter(Boolean); + if (paths.length > 0) { + lines.push('paths:'); + for (const p of paths) lines.push(` - ${p}`); + lines.push(''); + } + return lines.join('\n'); +}; + +export const ConfigBuilderPage = () => { + usePageTitle('config builder', '.tokenometer.yml generator'); + const modelGroups = useMemo(() => buildModelGroups(), []); + const [models, setModels] = useState<string[]>(['claude-sonnet-4-6', 'gpt-4o']); + const [formats, setFormats] = useState<Format[]>(['text', 'markdown']); + const [pathsRaw, setPathsRaw] = useState('prompts/**/*.md'); + const [totalBudget, setTotalBudget] = useState('5'); + const [perFileBudget, setPerFileBudget] = useState('0.05'); + + const yaml = useMemo( + () => buildYaml({ formats, models, pathsRaw, perFileBudget, totalBudget }), + [models, formats, pathsRaw, totalBudget, perFileBudget], + ); + + // Round-trip the generated YAML through parseConfig so the shown error mirrors + // what a real user would see if their hand-written config were broken. + const parseError = useMemo(() => { + try { + parseConfig(yaml); + return null; + } catch (e) { + return (e as Error).message.toLowerCase(); + } + }, [yaml]); + + const toggleModel = (id: string) => + setModels((p) => (p.includes(id) ? p.filter((m) => m !== id) : [...p, id])); + const toggleFormat = (f: Format) => + setFormats((p) => (p.includes(f) ? p.filter((x) => x !== f) : [...p, f])); + + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›config builder · .tokenometer.yml + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">config builder</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + Pick models, formats, paths, and budgets. We render a copy-paste-ready{' '} + <code className="text-[var(--tk-fg)]">.tokenometer.yml</code> validated by the same parser + the CLI uses. Drop it at the repo root and `tokenometer measure` will pick it up. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 lg:col-span-7 space-y-6"> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 01 ›models + </p> + <div className="space-y-3"> + {modelGroups.map(({ provider, models: m }) => ( + <div key={provider}> + <p className="mb-1.5 text-[9.5px] uppercase tracking-[0.28em] text-[var(--tk-dim)]"> + {provider} + </p> + <div className="flex flex-wrap gap-2"> + {m.map((id) => ( + <button + key={id} + type="button" + onClick={() => toggleModel(id)} + className={ + models.includes(id) + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-2 py-[3px] text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-2 py-[3px] text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {models.includes(id) ? '[x] ' : '[ ] '} + {id} + </button> + ))} + </div> + </div> + ))} + </div> + </div> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 02 ›formats + </p> + <div className="flex flex-wrap gap-2"> + {ALL_FORMATS.map((f) => ( + <button + key={f} + type="button" + onClick={() => toggleFormat(f)} + className={ + formats.includes(f) + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-2 py-[3px] text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-2 py-[3px] text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {formats.includes(f) ? '[x] ' : '[ ] '} + {f} + </button> + ))} + </div> + </div> + </div> + <div className="col-span-12 lg:col-span-5 space-y-4"> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 03 ›paths (comma-separated globs) + </p> + <input + type="text" + value={pathsRaw} + onChange={(e) => setPathsRaw(e.target.value)} + spellCheck={false} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + </div> + <div className="grid grid-cols-2 gap-3"> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 04 ›total budget ($) + </p> + <input + type="text" + value={totalBudget} + onChange={(e) => setTotalBudget(e.target.value)} + spellCheck={false} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + </div> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 05 ›per-file ($) + </p> + <input + type="text" + value={perFileBudget} + onChange={(e) => setPerFileBudget(e.target.value)} + spellCheck={false} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + </div> + </div> + </div> + </div> + + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 06 › yaml output + </p> + <CodeBlock code={yaml} filename=".tokenometer.yml" language="yaml" /> + {parseError ? ( + <p className="mt-2 text-[11.5px] text-[var(--tk-red)]">err: {parseError}</p> + ) : ( + <p className="mt-2 text-[11.5px] text-[var(--tk-green)]">ok · validated by parseConfig</p> + )} + </div> + </section> + ); +}; diff --git a/packages/web/src/pages/DiffPage.tsx b/packages/web/src/pages/DiffPage.tsx new file mode 100644 index 0000000..b3288fc --- /dev/null +++ b/packages/web/src/pages/DiffPage.tsx @@ -0,0 +1,326 @@ +import { KNOWN_MODELS, allFormats, getModel, tokenize } from '@tokenometer/core'; +import type { Format, Provider, TokenizeResult } from '@tokenometer/core'; +import { useMemo, useState } from 'react'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const PROVIDER_ORDER: readonly Provider[] = ['anthropic', 'openai', 'google']; +const ALL_FORMATS: readonly Format[] = allFormats(); + +const SAMPLE_BASE = `You are a code reviewer. Review the patch and return findings as JSON +with keys: severity (low|medium|high), file, line, message. +Be concise.`; + +const SAMPLE_HEAD = `You are an expert code reviewer with 10+ years of experience. +Review the patch carefully and return findings as JSON with keys: +severity (low|medium|high), file, line, message, suggestion. +Be concise but thorough. Cover security, perf, correctness, style.`; + +const formatCost = (usd: number): string => { + if (usd >= 0.01) return `$${usd.toFixed(4)}`; + if (usd >= 0.000001) return `$${usd.toFixed(6)}`; + return `$${usd.toExponential(2)}`; +}; + +const formatDeltaCost = (delta: number): string => { + const sign = delta >= 0 ? '+' : '−'; + return `${sign}${formatCost(Math.abs(delta))}`; +}; + +const formatDeltaTokens = (delta: number): string => { + const sign = delta >= 0 ? '+' : '−'; + return `${sign}${Math.abs(delta).toLocaleString()}`; +}; + +interface DiffRow { + model: string; + provider: Provider; + format: Format; + baseTokens: number; + headTokens: number; + baseCost: number; + headCost: number; +} + +const buildModelGroups = (): { provider: Provider; models: string[] }[] => { + const grouped = new Map<Provider, string[]>(); + for (const id of KNOWN_MODELS) { + const p = getModel(id).provider; + const list = grouped.get(p) ?? []; + list.push(id); + grouped.set(p, list); + } + const listed = PROVIDER_ORDER.filter((p) => grouped.has(p)); + const extras = [...grouped.keys()].filter((p) => !PROVIDER_ORDER.includes(p)).sort(); + return [...listed, ...extras].map((provider) => ({ + models: grouped.get(provider) ?? [], + provider, + })); +}; + +export const DiffPage = () => { + usePageTitle('diff', 'sticky-comment preview'); + const [base, setBase] = useState(SAMPLE_BASE); + const [head, setHead] = useState(SAMPLE_HEAD); + const modelGroups = useMemo(() => buildModelGroups(), []); + const [selectedModels, setSelectedModels] = useState<string[]>([ + 'claude-sonnet-4-6', + 'gpt-4o', + 'gemini-2.5-flash', + ]); + const [selectedFormats, setSelectedFormats] = useState<Format[]>(['text', 'json', 'markdown']); + + const toggleModel = (id: string) => + setSelectedModels((p) => (p.includes(id) ? p.filter((m) => m !== id) : [...p, id])); + const toggleFormat = (f: Format) => + setSelectedFormats((p) => (p.includes(f) ? p.filter((x) => x !== f) : [...p, f])); + + const rows: DiffRow[] = useMemo(() => { + if (!base.trim() && !head.trim()) return []; + if (!selectedModels.length || !selectedFormats.length) return []; + const out: DiffRow[] = []; + for (const modelId of selectedModels) { + let model: ReturnType<typeof getModel>; + try { + model = getModel(modelId); + } catch { + continue; + } + for (const format of selectedFormats) { + let baseR: TokenizeResult | null = null; + let headR: TokenizeResult | null = null; + try { + baseR = base.trim() ? tokenize({ format, modelId, prompt: base }) : null; + headR = head.trim() ? tokenize({ format, modelId, prompt: head }) : null; + } catch { + continue; + } + out.push({ + baseCost: baseR?.inputCost ?? 0, + baseTokens: baseR?.inputTokens ?? 0, + format, + headCost: headR?.inputCost ?? 0, + headTokens: headR?.inputTokens ?? 0, + model: modelId, + provider: model.provider, + }); + } + } + return out; + }, [base, head, selectedModels, selectedFormats]); + + // Stable, deterministic synthetic file path so the rendered preview reads like + // the real Action sticky comment, but doesn't pretend to know about a repo. + const fakeFile = 'prompts/review.md'; + const totalDeltaTokens = rows.reduce((acc, r) => acc + (r.headTokens - r.baseTokens), 0); + const totalDeltaCost = rows.reduce((acc, r) => acc + (r.headCost - r.baseCost), 0); + + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›diff · sticky-comment preview + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">prompt diff</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + Paste a base + head prompt. We tokenize both and render a live preview of what the GitHub + Action's sticky PR comment would look like for this change. Same numbers — same + tokenizers, same pricing — without needing a PR. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 lg:col-span-6"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 01 ›base (main) + </p> + <textarea + value={base} + onChange={(e) => setBase(e.target.value)} + rows={10} + spellCheck={false} + className="block w-full resize-y border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4 text-[12.5px] leading-[1.65] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + <p className="mt-2 text-[10px] text-[var(--tk-dim)]"> + {base.length.toLocaleString()} chars + </p> + </div> + <div className="col-span-12 lg:col-span-6"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 02 ›head (PR) + </p> + <textarea + value={head} + onChange={(e) => setHead(e.target.value)} + rows={10} + spellCheck={false} + className="block w-full resize-y border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4 text-[12.5px] leading-[1.65] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + <p className="mt-2 text-[10px] text-[var(--tk-dim)]"> + {head.length.toLocaleString()} chars + </p> + </div> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 lg:col-span-6"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 03 ›models + </p> + <div className="space-y-3"> + {modelGroups.map(({ provider, models }) => ( + <div key={provider}> + <p className="mb-1.5 text-[9.5px] uppercase tracking-[0.28em] text-[var(--tk-dim)]"> + {provider} + </p> + <div className="flex flex-wrap gap-2"> + {models.map((id) => ( + <button + key={id} + type="button" + onClick={() => toggleModel(id)} + className={ + selectedModels.includes(id) + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-2 py-[3px] text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-2 py-[3px] text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {selectedModels.includes(id) ? '[x] ' : '[ ] '} + {id} + </button> + ))} + </div> + </div> + ))} + </div> + </div> + <div className="col-span-12 lg:col-span-6"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 04 ›formats + </p> + <div className="flex flex-wrap gap-2"> + {ALL_FORMATS.map((f) => ( + <button + key={f} + type="button" + onClick={() => toggleFormat(f)} + className={ + selectedFormats.includes(f) + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-2 py-[3px] text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-2 py-[3px] text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {selectedFormats.includes(f) ? '[x] ' : '[ ] '} + {f} + </button> + ))} + </div> + </div> + </div> + + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 05 › sticky comment preview + </p> + <div className="border border-[var(--tk-rule)] bg-[var(--tk-cell)]"> + <div className="border-b border-[var(--tk-rule)] px-4 py-3"> + <p className="text-[12px] font-bold text-[var(--tk-fg)]">tokenometer</p> + <p className="text-[10.5px] text-[var(--tk-dim)]"> + base sha · head sha · rates_version 2026-05-08 + </p> + </div> + <div className="px-4 py-3"> + <p className="mb-2 text-[11.5px] text-[var(--tk-fg)]"> + <span className="text-[var(--tk-dim)]">Δ total · </span> + <span + className={ + totalDeltaCost > 0 + ? 'text-[var(--tk-red)]' + : totalDeltaCost < 0 + ? 'text-[var(--tk-green)]' + : 'text-[var(--tk-fg)]' + } + > + {formatDeltaCost(totalDeltaCost)} · {formatDeltaTokens(totalDeltaTokens)} tokens + </span> + </p> + {rows.length > 0 ? ( + <div className="overflow-x-auto"> + <table className="w-full border-collapse text-[12px]"> + <thead> + <tr className="border-b border-[var(--tk-rule)] text-[10px] uppercase tracking-[0.25em] text-[var(--tk-dim)]"> + <th className="px-2 py-1.5 text-left font-normal">file</th> + <th className="px-2 py-1.5 text-left font-normal">model</th> + <th className="px-2 py-1.5 text-left font-normal">format</th> + <th className="px-2 py-1.5 text-right font-normal">base</th> + <th className="px-2 py-1.5 text-right font-normal">head</th> + <th className="px-2 py-1.5 text-right font-normal">Δ tokens</th> + <th className="px-2 py-1.5 text-right font-normal">Δ usd</th> + </tr> + </thead> + <tbody> + {rows.map((r, i) => { + const dT = r.headTokens - r.baseTokens; + const dC = r.headCost - r.baseCost; + return ( + <tr + key={`${r.model}-${r.format}-${i}`} + className="border-t border-[var(--tk-rule)]/60" + > + <td className="px-2 py-1 text-[var(--tk-dim)]">{fakeFile}</td> + <td className="px-2 py-1 text-[var(--tk-fg)]">{r.model}</td> + <td className="px-2 py-1 text-[var(--tk-dim)]">{r.format}</td> + <td className="px-2 py-1 text-right tabular-nums text-[var(--tk-fg)]"> + {r.baseTokens.toLocaleString()} + </td> + <td className="px-2 py-1 text-right tabular-nums text-[var(--tk-fg)]"> + {r.headTokens.toLocaleString()} + </td> + <td + className={ + dT > 0 + ? 'px-2 py-1 text-right tabular-nums text-[var(--tk-red)]' + : dT < 0 + ? 'px-2 py-1 text-right tabular-nums text-[var(--tk-green)]' + : 'px-2 py-1 text-right tabular-nums text-[var(--tk-fg)]' + } + > + {formatDeltaTokens(dT)} + </td> + <td + className={ + dC > 0 + ? 'px-2 py-1 text-right tabular-nums text-[var(--tk-red)]' + : dC < 0 + ? 'px-2 py-1 text-right tabular-nums text-[var(--tk-green)]' + : 'px-2 py-1 text-right tabular-nums text-[var(--tk-fg)]' + } + > + {formatDeltaCost(dC)} + </td> + </tr> + ); + })} + </tbody> + </table> + </div> + ) : ( + <p className="text-[12px] text-[var(--tk-dim)]"> + pick at least one model and format to see the diff preview. + </p> + )} + </div> + </div> + <p className="mt-3 text-[11px] text-[var(--tk-dim)]"> + The actual GitHub Action posts this on every PR that touches a tracked path. See{' '} + <a + href="https://github.com/faraa2m/tokenometer#github-action" + className="underline decoration-[var(--tk-amber-dim)] underline-offset-4" + > + github.com/faraa2m/tokenometer + </a>{' '} + for setup. + </p> + </div> + </section> + ); +}; diff --git a/packages/web/src/pages/EditorPage.tsx b/packages/web/src/pages/EditorPage.tsx new file mode 100644 index 0000000..35400ab --- /dev/null +++ b/packages/web/src/pages/EditorPage.tsx @@ -0,0 +1,82 @@ +import { CodeBlock } from '../components/CodeBlock.js'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const SAMPLE_OUTPUT = `prompt-cost.md · 41 tokens · $0.000123 + · claude-sonnet-4-6 / text + · rates_version 2026-05-08`; + +export const EditorPage = () => { + usePageTitle('vs code', 'tokenometer in your editor'); + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›editor · vs code extension (wave 3) + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">vs code extension</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + Real-time token cost in your status bar as you edit prompts. Same numbers as the + calculator, same tokenizers, no telemetry. Currently in development as part of Wave 3. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 md:col-span-7 space-y-4"> + <div className="border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4 text-[12.5px]"> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + status-bar preview + </p> + <pre className="mt-2 whitespace-pre-wrap text-[var(--tk-fg)]">{SAMPLE_OUTPUT}</pre> + </div> + <div className="space-y-2 text-[12.5px]"> + <p className="text-[var(--tk-fg)]">Planned features:</p> + <ul className="space-y-1 text-[var(--tk-dim)]"> + <li>· live status-bar token count + cost for the active editor</li> + <li>· hover provenance: tokenizer, model, rates_version</li> + <li>· `tokenometer: measure file` command, posts results to a panel</li> + <li>· honors workspace `.tokenometer.yml` for default model + format</li> + <li>· no telemetry; offline by default</li> + </ul> + </div> + </div> + <div className="col-span-12 md:col-span-5"> + <div className="border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4"> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]">install</p> + <button + type="button" + disabled + className="mt-3 inline-block cursor-not-allowed border border-[var(--tk-rule)] bg-[var(--tk-bg)] px-4 py-2 text-[12px] uppercase tracking-[0.18em] text-[var(--tk-dim)] opacity-70" + > + › marketplace · TODO + </button> + <p className="mt-3 text-[10.5px] text-[var(--tk-dim)]"> + Marketplace listing pending. Track progress on the{' '} + <a + href="https://github.com/faraa2m/tokenometer/issues" + className="underline decoration-[var(--tk-amber-dim)] underline-offset-4" + > + issues board + </a> + . + </p> + </div> + <div className="mt-4 border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4"> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + build from source + </p> + <CodeBlock + code={[ + 'git clone https://github.com/faraa2m/tokenometer', + 'cd tokenometer/packages/vscode', + 'npm install && npm run package', + '# .vsix lands in ./dist – install via VS Code Extensions tab', + ].join('\n')} + filename="bash" + language="bash" + /> + </div> + </div> + </div> + </section> + ); +}; diff --git a/packages/web/src/pages/InitPage.tsx b/packages/web/src/pages/InitPage.tsx new file mode 100644 index 0000000..52ab1d4 --- /dev/null +++ b/packages/web/src/pages/InitPage.tsx @@ -0,0 +1,205 @@ +import { KNOWN_MODELS, allFormats, getModel } from '@tokenometer/core'; +import type { Format, Provider } from '@tokenometer/core'; +import { useMemo, useState } from 'react'; +import { CodeBlock } from '../components/CodeBlock.js'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const PROVIDER_ORDER: readonly Provider[] = ['anthropic', 'openai', 'google']; +const ALL_FORMATS: readonly Format[] = allFormats(); + +const buildModelGroups = (): { provider: Provider; models: string[] }[] => { + const grouped = new Map<Provider, string[]>(); + for (const id of KNOWN_MODELS) { + const p = getModel(id).provider; + const list = grouped.get(p) ?? []; + list.push(id); + grouped.set(p, list); + } + const listed = PROVIDER_ORDER.filter((p) => grouped.has(p)); + const extras = [...grouped.keys()].filter((p) => !PROVIDER_ORDER.includes(p)).sort(); + return [...listed, ...extras].map((provider) => ({ + models: grouped.get(provider) ?? [], + provider, + })); +}; + +interface BuildOptions { + models: string[]; + formats: Format[]; + totalBudget: string; + paths: string; +} + +const buildWorkflow = ({ models, formats, totalBudget, paths }: BuildOptions): string => { + const modelsCsv = models.join(','); + const formatsCsv = formats.join(','); + return `name: prompt-cost +on: + pull_request: + paths: +${paths + .split(',') + .map((p) => p.trim()) + .filter(Boolean) + .map((p) => ` - '${p}'`) + .join('\n')} + +permissions: + contents: read + pull-requests: write + # for SARIF upload to Code Scanning, also enable: security-events: write + +jobs: + cost: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: faraa2m/tokenometer@v1 + with: + models: '${modelsCsv}' + formats: '${formatsCsv}' + total-budget: '${totalBudget}' + # top-n-files: '5' # how many files to highlight in the sticky comment + # paths: '${paths}' # override the on.paths trigger if you want + # sarif: 'tokenometer.sarif' # uncomment + the security-events permission + env: + GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }} +`; +}; + +export const InitPage = () => { + usePageTitle('init', '.github/workflows generator'); + const modelGroups = useMemo(() => buildModelGroups(), []); + const [models, setModels] = useState<string[]>(['claude-sonnet-4-6', 'gpt-4o']); + const [formats, setFormats] = useState<Format[]>(['text']); + const [totalBudget, setTotalBudget] = useState('5'); + const [paths, setPaths] = useState('prompts/**/*.md'); + + const yaml = useMemo( + () => buildWorkflow({ formats, models, paths, totalBudget }), + [models, formats, totalBudget, paths], + ); + + const toggleModel = (id: string) => + setModels((p) => (p.includes(id) ? p.filter((m) => m !== id) : [...p, id])); + const toggleFormat = (f: Format) => + setFormats((p) => (p.includes(f) ? p.filter((x) => x !== f) : [...p, f])); + + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›init · github workflow generator + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">init</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + Pick what to track. We render a copy-paste-ready{' '} + <code className="text-[var(--tk-fg)]">.github/workflows/prompt-cost.yml</code>. Drop it in + your repo, push, and every PR that touches a tracked path gets a sticky token-cost + comment. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 lg:col-span-7 space-y-6"> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 01 ›models + </p> + <div className="space-y-3"> + {modelGroups.map(({ provider, models: m }) => ( + <div key={provider}> + <p className="mb-1.5 text-[9.5px] uppercase tracking-[0.28em] text-[var(--tk-dim)]"> + {provider} + </p> + <div className="flex flex-wrap gap-2"> + {m.map((id) => ( + <button + key={id} + type="button" + onClick={() => toggleModel(id)} + className={ + models.includes(id) + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-2 py-[3px] text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-2 py-[3px] text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {models.includes(id) ? '[x] ' : '[ ] '} + {id} + </button> + ))} + </div> + </div> + ))} + </div> + </div> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 02 ›formats + </p> + <div className="flex flex-wrap gap-2"> + {ALL_FORMATS.map((f) => ( + <button + key={f} + type="button" + onClick={() => toggleFormat(f)} + className={ + formats.includes(f) + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-2 py-[3px] text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-2 py-[3px] text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {formats.includes(f) ? '[x] ' : '[ ] '} + {f} + </button> + ))} + </div> + </div> + </div> + <div className="col-span-12 lg:col-span-5 space-y-4"> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 03 ›paths (comma-separated globs) + </p> + <input + type="text" + value={paths} + onChange={(e) => setPaths(e.target.value)} + spellCheck={false} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + </div> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 04 ›total budget ($) + </p> + <input + type="text" + value={totalBudget} + onChange={(e) => setTotalBudget(e.target.value)} + spellCheck={false} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + </div> + </div> + </div> + + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 05 › workflow yaml + </p> + <CodeBlock code={yaml} filename=".github/workflows/prompt-cost.yml" language="yaml" /> + <p className="mt-3 text-[11px] text-[var(--tk-dim)]"> + See full input docs at{' '} + <a + href="https://github.com/faraa2m/tokenometer#github-action" + className="underline decoration-[var(--tk-amber-dim)] underline-offset-4" + > + github.com/faraa2m/tokenometer#github-action + </a> + . + </p> + </div> + </section> + ); +}; diff --git a/packages/web/src/pages/LandingPage.tsx b/packages/web/src/pages/LandingPage.tsx new file mode 100644 index 0000000..b40128f --- /dev/null +++ b/packages/web/src/pages/LandingPage.tsx @@ -0,0 +1,37 @@ +import { Playground } from '../components/Playground.js'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const SAMPLE_PROMPT = `{ + "instructions": "Summarize the user's input in three bullets.", + "constraints": { "max_bullets": 3, "tone": "neutral" } +}`; + +const SHELL_BANNER = [ + '$ tokenometer --version', + 'tokenometer 0.0.2 rates_version=2026-05-08', + '', + '$ tokenometer --help', + ' measure: empirical token cost across providers and formats.', + ' policy: no telemetry, no key persistence, BYO-API-key for empirical mode.', + ' source: github.com/faraa2m/tokenometer', +]; + +export const LandingPage = () => { + usePageTitle('calculator', 'paste a prompt, see the cost'); + return ( + <> + <section className="grid grid-cols-12 gap-x-6 border-b border-[var(--tk-rule)] py-8 sm:py-10"> + <div className="col-span-12"> + <pre className="whitespace-pre-wrap text-[12.5px] leading-[1.7] text-[var(--tk-fg)]"> + {SHELL_BANNER.join('\n')} + </pre> + <p className="mt-3 text-[12.5px] tk-cursor text-[var(--tk-amber)]"> + $ tokenometer measure + </p> + </div> + </section> + + <Playground initialPrompt={SAMPLE_PROMPT} /> + </> + ); +}; diff --git a/packages/web/src/pages/ModelDetailPage.tsx b/packages/web/src/pages/ModelDetailPage.tsx new file mode 100644 index 0000000..c546fcb --- /dev/null +++ b/packages/web/src/pages/ModelDetailPage.tsx @@ -0,0 +1,170 @@ +import { RATES_VERSION, getModel, getRate } from '@tokenometer/core'; +import type { ModelDescriptor, RateEntry } from '@tokenometer/core'; +import { Link, useParams } from 'react-router-dom'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const formatRate = (per1k: number): string => `$${per1k.toFixed(per1k < 0.001 ? 6 : 4)}`; + +const formatCtx = (n?: number): string => { + if (!n) return 'unknown'; + if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(n % 1_000_000 === 0 ? 0 : 1)}M tokens`; + if (n >= 1000) return `${Math.round(n / 1000)}k tokens`; + return `${n} tokens`; +}; + +const sampleCostFor = (rate: RateEntry, tokens: number): number => + (tokens / 1000) * rate.inputPer1k; + +interface DetailViewProps { + id: string; + model: ModelDescriptor; + rate: RateEntry; +} + +const DetailView = ({ id, model, rate }: DetailViewProps) => { + usePageTitle(id, `${model.provider} · ${formatRate(rate.inputPer1k)} per 1k input`); + const sample1k = sampleCostFor(rate, 1000); + const sample10k = sampleCostFor(rate, 10_000); + const sample100k = sampleCostFor(rate, 100_000); + const ratio = + rate.cachedInputPer1k !== undefined && rate.cachedInputPer1k > 0 + ? rate.inputPer1k / rate.cachedInputPer1k + : null; + + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›model · {model.provider} + </p> + <h1 className="mt-2 break-all text-2xl font-bold tracking-tight">{id}</h1> + <p className="mt-2 text-[12.5px] text-[var(--tk-dim)]"> + {model.provider} · pricing source: {model.pricingSource ?? 'unknown'} · rates{' '} + {RATES_VERSION} + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 sm:col-span-6 border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4"> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]">pricing</p> + <dl className="mt-2 grid grid-cols-2 gap-x-4 gap-y-1 text-[12.5px]"> + <dt className="text-[var(--tk-dim)]">input · per 1k</dt> + <dd className="tabular-nums text-[var(--tk-fg)]">{formatRate(rate.inputPer1k)}</dd> + <dt className="text-[var(--tk-dim)]">output · per 1k</dt> + <dd className="tabular-nums text-[var(--tk-fg)]">{formatRate(rate.outputPer1k)}</dd> + {rate.cachedInputPer1k !== undefined && ( + <> + <dt className="text-[var(--tk-dim)]">cached input</dt> + <dd className="tabular-nums text-[var(--tk-fg)]"> + {formatRate(rate.cachedInputPer1k)} + {ratio ? ( + <span className="ml-1 text-[var(--tk-dim)]">({ratio.toFixed(0)}× cheaper)</span> + ) : null} + </dd> + </> + )} + </dl> + </div> + <div className="col-span-12 sm:col-span-6 border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4"> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]">capacity</p> + <dl className="mt-2 grid grid-cols-2 gap-x-4 gap-y-1 text-[12.5px]"> + <dt className="text-[var(--tk-dim)]">context window</dt> + <dd className="tabular-nums text-[var(--tk-fg)]">{formatCtx(model.contextWindow)}</dd> + <dt className="text-[var(--tk-dim)]">max output</dt> + <dd className="tabular-nums text-[var(--tk-fg)]">{formatCtx(model.maxOutputTokens)}</dd> + </dl> + </div> + </div> + + <div className="border border-[var(--tk-rule)] bg-[var(--tk-cell)]"> + <div className="border-b border-[var(--tk-rule)] px-4 py-2 text-[10px] uppercase tracking-[0.25em] text-[var(--tk-dim)]"> + sample input costs (no output included) + </div> + <div className="grid grid-cols-3 divide-x divide-[var(--tk-rule)] text-[12.5px]"> + {[ + ['1k tokens', sample1k], + ['10k tokens', sample10k], + ['100k tokens', sample100k], + ].map(([label, value]) => ( + <div key={label as string} className="px-4 py-3"> + <p className="text-[10px] uppercase tracking-[0.25em] text-[var(--tk-dim)]"> + {label} + </p> + <p className="mt-1 tabular-nums text-[var(--tk-fg)]"> + ${(value as number).toFixed(6)} + </p> + </div> + ))} + </div> + </div> + + <div className="text-[12px]"> + <p> + Counted with the same tokenizer the calculator uses for {model.provider}. For exact + provider numbers, run{' '} + <code className="text-[var(--tk-fg)]">tokenometer measure --empirical</code> from the CLI. + </p> + </div> + + <div className="flex flex-wrap gap-4 text-[11.5px]"> + <Link + to="/models" + className="border border-[var(--tk-rule)] px-3 py-1.5 text-[var(--tk-fg)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]" + > + ‹ back to atlas + </Link> + <Link + to="/calculator" + className="border border-[var(--tk-rule)] px-3 py-1.5 text-[var(--tk-fg)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]" + > + measure a prompt with this model + </Link> + </div> + </section> + ); +}; + +export const ModelDetailPage = () => { + const params = useParams<{ id: string }>(); + const id = params.id ? decodeURIComponent(params.id) : ''; + + let model: ModelDescriptor | null = null; + let rate: RateEntry | null = null; + try { + model = getModel(id); + rate = getRate(id); + } catch { + model = null; + rate = null; + } + + if (!id) { + return ( + <section className="space-y-4 py-8"> + <h1 className="text-2xl font-bold tracking-tight">missing model id</h1> + <Link to="/models" className="text-[var(--tk-amber)] underline underline-offset-4"> + ‹ back to atlas + </Link> + </section> + ); + } + + if (!model || !rate) { + return ( + <section className="space-y-4 py-8"> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›model · not found + </p> + <h1 className="break-all text-2xl font-bold tracking-tight">{id}</h1> + <p className="text-[12.5px] text-[var(--tk-red)]"> + unknown model. it may have been retired or never tracked here. + </p> + <Link to="/models" className="text-[var(--tk-amber)] underline underline-offset-4"> + ‹ back to atlas + </Link> + </section> + ); + } + + return <DetailView id={id} model={model} rate={rate} />; +}; diff --git a/packages/web/src/pages/ModelsPage.tsx b/packages/web/src/pages/ModelsPage.tsx new file mode 100644 index 0000000..a6b4225 --- /dev/null +++ b/packages/web/src/pages/ModelsPage.tsx @@ -0,0 +1,237 @@ +import { KNOWN_MODELS, RATES_VERSION, getModel, getRate } from '@tokenometer/core'; +import type { Provider } from '@tokenometer/core'; +import { useMemo, useState } from 'react'; +import { Link } from 'react-router-dom'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +interface AtlasRow { + id: string; + provider: Provider; + inputPer1k: number; + outputPer1k: number; + cachedInputPer1k?: number; + contextWindow?: number; + maxOutputTokens?: number; + pricingSource?: 'local' | 'tokenlens'; +} + +type SortKey = 'provider' | 'id' | 'input' | 'output' | 'context'; +type SortDir = 'asc' | 'desc'; + +// Built dynamically inside the component once we know which providers actually +// appear in the registry — the Provider union may include providers nobody has +// shipped a model for. + +const formatRate = (per1k: number): string => `$${per1k.toFixed(per1k < 0.001 ? 6 : 4)}`; + +const formatCtx = (n?: number): string => { + if (!n) return '—'; + if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(n % 1_000_000 === 0 ? 0 : 1)}M`; + if (n >= 1000) return `${Math.round(n / 1000)}k`; + return String(n); +}; + +const buildAtlas = (): AtlasRow[] => { + const out: AtlasRow[] = []; + for (const id of KNOWN_MODELS) { + try { + const m = getModel(id); + const r = getRate(id); + out.push({ + ...(m.contextWindow !== undefined ? { contextWindow: m.contextWindow } : {}), + ...(m.maxOutputTokens !== undefined ? { maxOutputTokens: m.maxOutputTokens } : {}), + ...(m.pricingSource !== undefined ? { pricingSource: m.pricingSource } : {}), + ...(r.cachedInputPer1k !== undefined ? { cachedInputPer1k: r.cachedInputPer1k } : {}), + id, + inputPer1k: r.inputPer1k, + outputPer1k: r.outputPer1k, + provider: m.provider, + }); + } catch { + // skip unknown - shouldn't happen since we iterate KNOWN_MODELS. + } + } + return out; +}; + +const sortRows = (rows: AtlasRow[], key: SortKey, dir: SortDir): AtlasRow[] => { + const dirMul = dir === 'asc' ? 1 : -1; + return [...rows].sort((a, b) => { + let cmp = 0; + switch (key) { + case 'provider': + cmp = a.provider.localeCompare(b.provider); + if (cmp === 0) cmp = a.id.localeCompare(b.id); + break; + case 'id': + cmp = a.id.localeCompare(b.id); + break; + case 'input': + cmp = a.inputPer1k - b.inputPer1k; + break; + case 'output': + cmp = a.outputPer1k - b.outputPer1k; + break; + case 'context': + cmp = (a.contextWindow ?? 0) - (b.contextWindow ?? 0); + break; + } + return cmp * dirMul; + }); +}; + +export const ModelsPage = () => { + usePageTitle('cost atlas', 'every model, every rate'); + const allRows = useMemo(() => buildAtlas(), []); + const providerOptions = useMemo<readonly ('all' | Provider)[]>( + () => ['all', ...Array.from(new Set(allRows.map((r) => r.provider))).sort()], + [allRows], + ); + const [providerFilter, setProviderFilter] = useState<'all' | Provider>('all'); + const [search, setSearch] = useState(''); + const [sortKey, setSortKey] = useState<SortKey>('provider'); + const [sortDir, setSortDir] = useState<SortDir>('asc'); + + const rows = useMemo(() => { + const q = search.trim().toLowerCase(); + const filtered = allRows.filter((r) => { + if (providerFilter !== 'all' && r.provider !== providerFilter) return false; + if (q && !r.id.toLowerCase().includes(q) && !r.provider.toLowerCase().includes(q)) + return false; + return true; + }); + return sortRows(filtered, sortKey, sortDir); + }, [allRows, providerFilter, search, sortKey, sortDir]); + + const onSort = (key: SortKey) => { + if (key === sortKey) setSortDir((d) => (d === 'asc' ? 'desc' : 'asc')); + else { + setSortKey(key); + setSortDir(key === 'input' || key === 'output' ? 'asc' : 'asc'); + } + }; + + const sortIndicator = (key: SortKey): string => { + if (sortKey !== key) return ''; + return sortDir === 'asc' ? ' ▲' : ' ▼'; + }; + + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›cost atlas · {allRows.length} models · rates {RATES_VERSION} + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">models</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + Every model tokenometer knows about, sourced from the{' '} + <a + href="https://github.com/Lakra-Sumant/tokenlens" + className="underline decoration-[var(--tk-amber-dim)] underline-offset-4" + > + tokenlens + </a>{' '} + registry plus a small list of hand-tracked overrides for bleeding-edge releases. Prices + shown are USD per 1,000 input/output tokens. Click a row for details. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-4 gap-y-3"> + <div className="col-span-12 sm:col-span-4"> + <p className="mb-1.5 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + search + </p> + <input + type="text" + value={search} + onChange={(e) => setSearch(e.target.value)} + spellCheck={false} + placeholder="claude / gpt / gemini / o3..." + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + </div> + <div className="col-span-12 sm:col-span-4"> + <p className="mb-1.5 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + provider + </p> + <select + value={providerFilter} + onChange={(e) => setProviderFilter(e.target.value as 'all' | Provider)} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + > + {providerOptions.map((p) => ( + <option key={p} value={p}> + {p} + </option> + ))} + </select> + </div> + </div> + + <div className="overflow-x-auto border border-[var(--tk-rule)]"> + <table className="w-full border-collapse text-[12.5px]"> + <thead> + <tr className="border-b border-[var(--tk-rule)] text-[10px] uppercase tracking-[0.25em] text-[var(--tk-dim)]"> + {( + [ + ['id', 'model'], + ['provider', 'provider'], + ['input', 'in $/1k'], + ['output', 'out $/1k'], + ['context', 'context'], + ] as const + ).map(([key, label]) => ( + <th key={key} className="px-3 py-2 text-left font-normal"> + <button + type="button" + onClick={() => onSort(key)} + className="cursor-pointer text-left text-[10px] uppercase tracking-[0.25em] text-[var(--tk-dim)] hover:text-[var(--tk-amber)]" + > + {label} + {sortIndicator(key)} + </button> + </th> + ))} + <th className="px-3 py-2 text-left font-normal">notes</th> + </tr> + </thead> + <tbody> + {rows.map((r) => ( + <tr key={r.id} className="border-t border-[var(--tk-rule)]/60"> + <td className="px-3 py-1.5 text-[var(--tk-fg)]"> + <Link + to={`/models/${encodeURIComponent(r.id)}`} + className="underline decoration-[var(--tk-amber-dim)] underline-offset-4 hover:text-[var(--tk-amber)]" + > + {r.id} + </Link> + </td> + <td className="px-3 py-1.5 text-[var(--tk-dim)]">{r.provider}</td> + <td className="px-3 py-1.5 tabular-nums text-[var(--tk-fg)]"> + {formatRate(r.inputPer1k)} + </td> + <td className="px-3 py-1.5 tabular-nums text-[var(--tk-fg)]"> + {formatRate(r.outputPer1k)} + </td> + <td className="px-3 py-1.5 tabular-nums text-[var(--tk-dim)]"> + {formatCtx(r.contextWindow)} + </td> + <td className="px-3 py-1.5 text-[10.5px] text-[var(--tk-dim)]"> + {r.pricingSource ?? '—'} + {r.cachedInputPer1k ? ` · cache ${formatRate(r.cachedInputPer1k)}` : ''} + </td> + </tr> + ))} + {rows.length === 0 && ( + <tr> + <td colSpan={6} className="px-3 py-4 text-center text-[12px] text-[var(--tk-dim)]"> + no models match + </td> + </tr> + )} + </tbody> + </table> + </div> + </section> + ); +}; diff --git a/packages/web/src/pages/SarifPage.tsx b/packages/web/src/pages/SarifPage.tsx new file mode 100644 index 0000000..9619341 --- /dev/null +++ b/packages/web/src/pages/SarifPage.tsx @@ -0,0 +1,171 @@ +import { KNOWN_MODELS, allFormats, getModel, toSarif, tokenize } from '@tokenometer/core'; +import type { Format, Provider } from '@tokenometer/core'; +import { useMemo, useState } from 'react'; +import { CodeBlock } from '../components/CodeBlock.js'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +const PROVIDER_ORDER: readonly Provider[] = ['anthropic', 'openai', 'google']; +const ALL_FORMATS: readonly Format[] = allFormats(); + +const SAMPLE_PROMPT = `You are a thoughtful reviewer. Read the diff and reply with +a JSON array of findings: [{ "file": "...", "line": 0, "severity": "low", +"message": "..." }]. Be precise.`; + +const buildModelGroups = (): { provider: Provider; models: string[] }[] => { + const grouped = new Map<Provider, string[]>(); + for (const id of KNOWN_MODELS) { + const p = getModel(id).provider; + const list = grouped.get(p) ?? []; + list.push(id); + grouped.set(p, list); + } + const listed = PROVIDER_ORDER.filter((p) => grouped.has(p)); + const extras = [...grouped.keys()].filter((p) => !PROVIDER_ORDER.includes(p)).sort(); + return [...listed, ...extras].map((provider) => ({ + models: grouped.get(provider) ?? [], + provider, + })); +}; + +export const SarifPage = () => { + usePageTitle('sarif', 'live JSON for Code Scanning'); + const [prompt, setPrompt] = useState(SAMPLE_PROMPT); + const [filePath, setFilePath] = useState('prompts/review.md'); + const modelGroups = useMemo(() => buildModelGroups(), []); + const [selectedModels, setSelectedModels] = useState<string[]>(['claude-sonnet-4-6', 'gpt-4o']); + const [selectedFormats, setSelectedFormats] = useState<Format[]>(['text', 'markdown']); + + const toggleModel = (id: string) => + setSelectedModels((p) => (p.includes(id) ? p.filter((m) => m !== id) : [...p, id])); + const toggleFormat = (f: Format) => + setSelectedFormats((p) => (p.includes(f) ? p.filter((x) => x !== f) : [...p, f])); + + const sarif = useMemo(() => { + if (!prompt.trim() || !selectedModels.length || !selectedFormats.length) return null; + const cells = []; + for (const modelId of selectedModels) { + for (const format of selectedFormats) { + try { + cells.push(tokenize({ format, modelId, prompt })); + } catch { + // Unknown model id — silently skip; UI shows known list separately. + } + } + } + return toSarif( + { files: [{ path: filePath || 'prompt.md', results: cells }] }, + { toolVersion: '0.0.2' }, + ); + }, [prompt, filePath, selectedModels, selectedFormats]); + + const json = sarif ? JSON.stringify(sarif, null, 2) : ''; + + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›sarif · github code scanning output + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">sarif</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + Tokenometer can emit SARIF 2.1.0 for the Code Scanning tab. Paste a prompt, pick models + + formats, and watch the JSON update live. The CLI's <span>--format sarif</span> + produces this exact shape. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 lg:col-span-6"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 01 ›prompt + </p> + <textarea + value={prompt} + onChange={(e) => setPrompt(e.target.value)} + rows={8} + spellCheck={false} + className="block w-full resize-y border border-[var(--tk-rule)] bg-[var(--tk-cell)] p-4 text-[12.5px] leading-[1.65] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + <p className="mt-3 mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 02 ›file path + </p> + <input + type="text" + value={filePath} + onChange={(e) => setFilePath(e.target.value)} + spellCheck={false} + className="block w-full border border-[var(--tk-rule)] bg-[var(--tk-cell)] px-2 py-1.5 text-[12px] text-[var(--tk-fg)] focus:border-[var(--tk-amber)] focus:outline-none" + /> + </div> + <div className="col-span-12 lg:col-span-6 space-y-4"> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 03 ›models + </p> + <div className="space-y-3"> + {modelGroups.map(({ provider, models }) => ( + <div key={provider}> + <p className="mb-1.5 text-[9.5px] uppercase tracking-[0.28em] text-[var(--tk-dim)]"> + {provider} + </p> + <div className="flex flex-wrap gap-2"> + {models.map((id) => ( + <button + key={id} + type="button" + onClick={() => toggleModel(id)} + className={ + selectedModels.includes(id) + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-2 py-[3px] text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-2 py-[3px] text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {selectedModels.includes(id) ? '[x] ' : '[ ] '} + {id} + </button> + ))} + </div> + </div> + ))} + </div> + </div> + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 04 ›formats + </p> + <div className="flex flex-wrap gap-2"> + {ALL_FORMATS.map((f) => ( + <button + key={f} + type="button" + onClick={() => toggleFormat(f)} + className={ + selectedFormats.includes(f) + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-2 py-[3px] text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-2 py-[3px] text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {selectedFormats.includes(f) ? '[x] ' : '[ ] '} + {f} + </button> + ))} + </div> + </div> + </div> + </div> + + <div> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 05 › sarif log + </p> + {json ? ( + <CodeBlock code={json} filename="tokenometer.sarif" language="json" /> + ) : ( + <p className="text-[12px] text-[var(--tk-dim)]"> + paste a prompt and pick a model + format to render SARIF. + </p> + )} + </div> + </section> + ); +}; diff --git a/packages/web/src/pages/VisionPage.tsx b/packages/web/src/pages/VisionPage.tsx new file mode 100644 index 0000000..b991cd0 --- /dev/null +++ b/packages/web/src/pages/VisionPage.tsx @@ -0,0 +1,248 @@ +import { + anthropicVisionTokens, + getRate, + googleVisionTokens, + openaiVisionTokens, +} from '@tokenometer/core'; +import { useEffect, useState } from 'react'; +import { usePageTitle } from '../hooks/usePageTitle.js'; + +interface ImageItem { + file: File; + url: string; + width: number; + height: number; +} + +interface ProviderRow { + provider: 'anthropic' | 'openai' | 'google'; + modelId: string; + tokens: number; + cost: number; + note: string; +} + +const formatCost = (usd: number): string => { + if (usd >= 0.01) return `$${usd.toFixed(4)}`; + if (usd >= 0.000001) return `$${usd.toFixed(6)}`; + return `$${usd.toExponential(2)}`; +}; + +const safeRate = (modelId: string): { input: number } | null => { + try { + return { input: getRate(modelId).inputPer1k }; + } catch { + return null; + } +}; + +const buildRows = (img: ImageItem, openaiDetail: 'low' | 'high'): ProviderRow[] => { + const out: ProviderRow[] = []; + const anthropic = anthropicVisionTokens({ height: img.height, width: img.width }); + const aRate = safeRate('claude-sonnet-4-6')?.input ?? 0; + out.push({ + cost: (anthropic / 1000) * aRate, + modelId: 'claude-sonnet-4-6', + note: 'ceil(w*h/750), capped at 1600', + provider: 'anthropic', + tokens: anthropic, + }); + const openai = openaiVisionTokens({ detail: openaiDetail, height: img.height, width: img.width }); + const oRate = safeRate('gpt-4o')?.input ?? 0; + out.push({ + cost: (openai / 1000) * oRate, + modelId: 'gpt-4o', + note: openaiDetail === 'high' ? '85 + 170/tile · 512x512 tiles' : 'low detail · flat 85', + provider: 'openai', + tokens: openai, + }); + const google = googleVisionTokens({ height: img.height, width: img.width }); + const gRate = safeRate('gemini-2.5-flash')?.input ?? 0; + out.push({ + cost: (google / 1000) * gRate, + modelId: 'gemini-2.5-flash', + note: '258 base · 768x768 tiles', + provider: 'google', + tokens: google, + }); + return out; +}; + +export const VisionPage = () => { + usePageTitle('vision', 'image input cost across providers'); + const [images, setImages] = useState<ImageItem[]>([]); + const [openaiDetail, setOpenaiDetail] = useState<'low' | 'high'>('high'); + const [error, setError] = useState<string | null>(null); + + // Free object URLs when images are removed or component unmounts. + useEffect( + () => () => { + for (const i of images) URL.revokeObjectURL(i.url); + }, + [images], + ); + + const onPick = (list: FileList | null) => { + if (!list) return; + setError(null); + const next: Promise<ImageItem | null>[] = []; + for (let i = 0; i < list.length; i++) { + const f = list.item(i); + if (!f) continue; + if (!f.type.startsWith('image/')) continue; + const url = URL.createObjectURL(f); + next.push( + new Promise<ImageItem | null>((resolve) => { + const img = new Image(); + img.onload = () => + resolve({ file: f, height: img.naturalHeight, url, width: img.naturalWidth }); + img.onerror = () => { + URL.revokeObjectURL(url); + resolve(null); + }; + img.src = url; + }), + ); + } + Promise.all(next).then((items) => { + const filtered = items.filter((x): x is ImageItem => x !== null); + if (!filtered.length) { + setError('no readable images in selection'); + return; + } + setImages(filtered); + }); + }; + + return ( + <section className="space-y-8 py-8"> + <div> + <p className="text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + ›vision · image input token cost + </p> + <h1 className="mt-2 text-2xl font-bold tracking-tight">vision</h1> + <p className="mt-2 max-w-3xl text-[12.5px] text-[var(--tk-dim)]"> + Each provider counts image tokens differently. Claude estimates from total pixels. OpenAI + tiles 512×512 squares after a resize. Gemini tiles 768×768 with a 384px small- image flat + rate. Drop an image — we read its dimensions in-browser and run all three estimators. + </p> + </div> + + <div className="grid grid-cols-12 gap-x-6 gap-y-6"> + <div className="col-span-12 lg:col-span-7"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 01 ›images + </p> + <label className="block cursor-pointer border border-dashed border-[var(--tk-rule)] bg-[var(--tk-cell)] p-8 text-center hover:border-[var(--tk-amber-dim)]"> + <input + type="file" + multiple + accept="image/*" + onChange={(e) => onPick(e.target.files)} + className="hidden" + /> + <p className="text-[12.5px] text-[var(--tk-fg)]"> + {'> click to select images (png / jpg / webp)'} + </p> + <p className="mt-1 text-[10.5px] text-[var(--tk-dim)]"> + read in-browser. nothing is uploaded. + </p> + </label> + {error && <p className="mt-2 text-[11.5px] text-[var(--tk-red)]">err: {error}</p>} + </div> + <div className="col-span-12 lg:col-span-5"> + <p className="mb-2 text-[10px] uppercase tracking-[0.3em] text-[var(--tk-dim)]"> + 02 ›openai detail + </p> + <div className="flex gap-2"> + {(['high', 'low'] as const).map((opt) => ( + <button + key={opt} + type="button" + onClick={() => setOpenaiDetail(opt)} + className={ + openaiDetail === opt + ? 'border border-[var(--tk-amber)] bg-[var(--tk-amber)] px-3 py-1 text-[11px] text-[var(--tk-bg)]' + : 'border border-[var(--tk-rule)] px-3 py-1 text-[11px] text-[var(--tk-dim)] hover:border-[var(--tk-amber)] hover:text-[var(--tk-amber)]' + } + > + {opt} + </button> + ))} + </div> + <p className="mt-2 text-[10.5px] text-[var(--tk-dim)]"> + Anthropic and Google ignore detail; OpenAI charges flat 85 tokens for `low`. + </p> + </div> + </div> + + {images.length > 0 && ( + <div className="space-y-6"> + {images.map((img, idx) => { + const rows = buildRows(img, openaiDetail); + return ( + <div + key={`${img.file.name}-${idx}`} + className="border border-[var(--tk-rule)] bg-[var(--tk-cell)]" + > + <div className="grid grid-cols-12 gap-x-4 border-b border-[var(--tk-rule)] p-4"> + <div className="col-span-12 sm:col-span-3"> + {/* Tag <img> with alt for a11y; src is a blob URL so the image + never leaves the browser. */} + <img + src={img.url} + alt={img.file.name} + className="max-h-32 w-auto border border-[var(--tk-rule)] object-contain" + /> + </div> + <div className="col-span-12 sm:col-span-9 mt-3 sm:mt-0"> + <p className="text-[12.5px] text-[var(--tk-fg)]">{img.file.name}</p> + <p className="text-[10.5px] text-[var(--tk-dim)]"> + {img.width}×{img.height} px · {Math.round(img.file.size / 1024)} KB ·{' '} + {img.file.type} + </p> + </div> + </div> + <div className="overflow-x-auto"> + <table className="w-full border-collapse text-[12.5px]"> + <thead> + <tr className="border-b border-[var(--tk-rule)] text-[10px] uppercase tracking-[0.25em] text-[var(--tk-dim)]"> + <th className="px-3 py-2 text-left font-normal">provider</th> + <th className="px-3 py-2 text-left font-normal">model (rate)</th> + <th className="px-3 py-2 text-right font-normal">tokens</th> + <th className="px-3 py-2 text-right font-normal">cost</th> + <th className="px-3 py-2 text-left font-normal">formula</th> + </tr> + </thead> + <tbody> + {rows.map((r) => ( + <tr key={r.provider} className="border-t border-[var(--tk-rule)]/60"> + <td className="px-3 py-1.5 text-[var(--tk-fg)]">{r.provider}</td> + <td className="px-3 py-1.5 text-[var(--tk-dim)]">{r.modelId}</td> + <td className="px-3 py-1.5 text-right tabular-nums text-[var(--tk-fg)]"> + {r.tokens.toLocaleString()} + </td> + <td className="px-3 py-1.5 text-right tabular-nums text-[var(--tk-fg)]"> + {formatCost(r.cost)} + </td> + <td className="px-3 py-1.5 text-[10.5px] text-[var(--tk-dim)]"> + {r.note} + </td> + </tr> + ))} + </tbody> + </table> + </div> + </div> + ); + })} + </div> + )} + + <p className="text-[11px] text-[var(--tk-dim)]"> + Note: vision token estimators are heuristic. Real provider counts can drift slightly. For + exact numbers, send the image through the provider's countTokens endpoint. + </p> + </section> + ); +}; diff --git a/tsconfig.json b/tsconfig.json index 56e15a0..58ea3c9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,8 @@ { "files": [], - "references": [{ "path": "./packages/core" }, { "path": "./packages/cli" }] + "references": [ + { "path": "./packages/core" }, + { "path": "./packages/cli" }, + { "path": "./packages/vscode" } + ] }